[HN Gopher] Show HN: Simple script to cripple personalized targe...
       ___________________________________________________________________
        
       Show HN: Simple script to cripple personalized targeting from
       Facebook
        
       Author : GeoHubToday
       Score  : 60 points
       Date   : 2024-06-22 21:38 UTC (1 hours ago)
        
 (HTM) web link (gist.github.com)
 (TXT) w3m dump (gist.github.com)
        
       | Terr_ wrote:
       | Reminds me of a court case [0] proactively challenging Facebook,
       | due to a time the company gave someone a lifetime ban [1] for
       | making this kind of consumer-tool.
       | 
       | [0] https://www.theregister.com/2024/05/02/meta_facebook_tool/
       | 
       | [1] https://slate.com/technology/2021/10/facebook-unfollow-
       | every...
        
         | GeoHubToday wrote:
         | A lifetime ban from Facebook would be a blessing for me :)
        
       | junto wrote:
       | Cool script.
       | 
       | My hack is to live in a country where the local language is not
       | my own, and not the one I have set in my Facebook settings.
       | 
       | As a result, Facebook rarely has advertisements that can target
       | me, because my language has been filtered out by the advertisers.
       | 
       | When one does appear, it's nearly always in the local language,
       | so I'm kind of deaf to it and I'm not going to actively respond
       | to anyway.
       | 
       | Luckily they haven't figured that out yet, even though I've been
       | an Facebook user for many years.
        
         | stavros wrote:
         | My hack is to live in a country that forces Facebook to give me
         | an opt-out, and then I click "no" when Facebook asks.
        
           | useEffect wrote:
           | my hack is just to not have facebook
        
             | willcipriano wrote:
             | My hack is being just young enough that having a Facebook
             | would make me feel old.
        
             | m1117 wrote:
             | But I'm addicted to the feed!
        
             | 39896880 wrote:
             | Facebook makes shadow profiles of you anyway
        
               | somat wrote:
               | Then facebook gets to track my shadow self.
        
       | rkagerer wrote:
       | Does this just impact ads shown on the site, or does it also cut
       | down on data collection and targeting that occurs when you browse
       | to third party sites who happen to include javascript from
       | Facebook?
       | 
       | How's this technique compare to just staying logged out of
       | Facebook? Or using it solely in a sandboxed browsing environment?
        
         | GeoHubToday wrote:
         | Even if you stay logged out, your data is collected from your
         | mobile devices.
         | 
         | And even if you brick your devices and pull the battery, your
         | data is collected by other people's mobile devices.
         | 
         | It all runs to data brokers in the end, and that data has a
         | reliance on Facebook for additional refinement.
         | 
         | This technique impacts that refinement step.
        
           | jzig wrote:
           | You sound like you have intimate knowledge of the landscape.
           | What would be a great disruption?
        
       | unstatusthequo wrote:
       | What browser is this intended for? The below error comes up on
       | Brave on MacOS. Both most up to date version.
       | 
       | VM172:14 Uncaught TypeError: Cannot read properties of undefined
       | (reading 'click') at <anonymous>:14:71 (anonymous) @ VM172:14
        
         | GeoHubToday wrote:
         | Ah, that's not a browser delay. That's an internet speed issue.
         | I'll have to add more resilience to account for that. Thanks!
        
           | grimgrin wrote:
           | yeah, clicking into an advertiser has a ~5 second delay to
           | /api/graphql/ at the moment. I was working on resiliency
           | myself
        
             | GeoHubToday wrote:
             | Lawdy, that's a serious delay!
             | 
             | Okay, I'll see what I can do to wait for NETWORK_IDLE or
             | something
        
       | SSLy wrote:
       | Intresting, for me the link 404's                 This page isn't
       | available       The link may be broken or the Page may have been
       | removed. Check to see if the link that you're trying to open is
       | correct.       Go to Accounts Centre
       | 
       | also                 Uncaught SyntaxError: await is only valid in
       | async functions, async generators and modules
        
       | smashah wrote:
       | Godspeed good sir. When those shitheads from PerkinsCoie send you
       | a legal threat make sure to share and shame them for it.
        
       | jeremiemyhren wrote:
       | I get this on Safari on macOS: SyntaxError: Unexpected identifier
       | 'wait'
       | 
       | and this on Chrome on macOS: TypeError: Cannot read properties of
       | undefined (reading 'click') at <anonymous>:14:71
        
       | bqmjjx0kac wrote:
       | This got a little stuck on a few of the `.click()` calls for me.
       | Here's my version:                   const wait = () => new
       | Promise(resolve => setTimeout(resolve, 1000));         const
       | getElementsByAriaLabel = (label) =>
       | document.querySelectorAll(`[aria-label="${label}"]`);
       | const getElementsByRoleAndWidth = (role, width) =>             Ar
       | ray.from(document.querySelectorAll(`[role="${role}"]`)).filter(el
       | => el.clientWidth === width);         const getElementsByText =
       | (text) => Array.from(document.querySelectorAll('*')).filter(el =>
       | Array.from(el.childNodes).some(node => node.nodeType ===
       | Node.TEXT_NODE && node.textContent.includes(text))         );
       | async function clickAndWait(elem) {             if (!elem)
       | return;             elem.click();             await wait();
       | }              await clickAndWait(getElementsByText("See
       | more")[0]);              const ads =
       | getElementsByRoleAndWidth('listitem', 508);              for
       | (const ad of ads) {
       | console.log(ad.childNodes[0].textContent)             await
       | clickAndWait(ad.childNodes[0]);                  await
       | clickAndWait(getElementsByText('They uploaded or used a list to
       | reach you.')[0]);                  const dont_allow_btns =
       | getElementsByText('Don\'t allow');             for (const btn of
       | dont_allow_btns) {                 btn.click();             }
       | await wait();                  await
       | clickAndWait(getElementsByAriaLabel('Back')[2]);
       | await clickAndWait(getElementsByAriaLabel('Back')[2]);         }
        
       | Terr_ wrote:
       | Separately, Firefox has a feature to isolate Facebook activity
       | from other things you do on the web.
        
       | stevage wrote:
       | Weirdly, as much as I hate internet ads in general, I actually
       | find the FB ones better. I've even bought some stuff from a few
       | and been happy.
        
       ___________________________________________________________________
       (page generated 2024-06-22 23:00 UTC)