9 ms·
Show HN: Simple script to cripple personalized targeting from Facebook
- Terr_ 2y agoReminds 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/ https://www.theregister.com/2024/05/02/meta_facebook_tool/ [1] https://slate.com/technology/2021/10/facebook-unfollow-everything-cease-desist.html https://slate.com/technology/2021/10/facebook-unfollow-every...
- GeoHubToday 2y agoA lifetime ban from Facebook would be a blessing for me :)
- ryandrake 2y agoLOL a lifetime ban from Facebook?! Whatever will we do with all that better mental health and free time from not doomscrolling all day! Don’t threaten me with a good time!
- DavidPiper 2y agoAs someone who has read tons of books, articles, etc, on the addictive qualities of Facebook and the personal harm it can do - and personally observed the effects it was having on me - I STILL only deleted the Facebook app from my phone a few weeks ago. The dissonance between what we know is good for us and our actual behaviour in the face of addiction is truly incredible.
- junto 2y agoCool 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 2y agoMy 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 2y agomy hack is just to not have facebook
- willcipriano 2y agoMy hack is being just young enough that having a Facebook would make me feel old.
- gerdesj 2y agoYou have rather succinctly noted that sodding huge walled off communities come and go, with time. ::FAC3:B00C: is already very old school and largely irrelevant. They just haven't noticed yet. Whither Geocities and Compuserve?
- m1117 2y agoBut I'm addicted to the feed!
- 39896880 2y agoFacebook makes shadow profiles of you anyway
- rkagerer 2y agoDoes 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 2y agoEven 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 2y agoYou sound like you have intimate knowledge of the landscape. What would be a great disruption?
- deleted 2y ago[deleted]
- GeoHubToday 2y agoI do And It's a -HUGE- surface area to cover When IoT and IoB comes online, it will be near impossible to stop this kind of stuff
- lioeters 2y agoFor others like me who hadn't heard of IoB. > IoB (Internet of Behavior) as an extension of the IoT, which focuses on capturing, processing, and analyzing the “digital dust” in people’s daily lives. The term ”digital dust” is a good metaphor for the traces that users leave behind in their Internet activities. As the collection of digital dust from everyday life increases, including data that spans both the digital and physical worlds, information can in turn influence users’ behaviors.
- unstatusthequo 2y agoWhat 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 2y agoAh, 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 2y agoyeah, clicking into an advertiser has a ~5 second delay to /api/graphql/ at the moment. I was working on resiliency myself
- GeoHubToday 2y agoLawdy, that's a serious delay! Okay, I'll see what I can do to wait for NETWORK_IDLE or something
- unstatusthequo 2y ago2.5Gbps on AT&T Fiber not enough? :) bqmjjx0kac's edits worked great
- GeoHubToday 2y agoI've updated the script, try again! :D
- SSLy 2y agoIntresting, 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
- markussss 2y agoI clicked around a little and I think that the correct page for me is this one, perhaps it is the correct one for you too? The script doesn't work, but it looks like it could work with some tweaking. https://www.facebook.com/adpreferences/ad_settings/?section=audience_based_advertising&entry_product=accounts_center https://www.facebook.com/adpreferences/ad_settings/?section=...
- GeoHubToday 2y agoI've updated the script, try again! :D
- smashah 2y agoGodspeed good sir. When those shitheads from PerkinsCoie send you a legal threat make sure to share and shame them for it.
- PrairieFire 2y agoI 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
- GeoHubToday 2y agoI've updated the script, try again! :D
- bqmjjx0kac 2y agoThis 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) => Array.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]); }
- maltelau 2y agoI wonder if hn (or wherever else this was posted) is big enough to register on the ads-vs-adblocker war. Ads are 509 pixels wide coming in 3 ... 2 ... 1 ...
- GeoHubToday 2y agoclickAndWait is always good! :)
- bqmjjx0kac 2y agoLol, I got hit with this: "You're Temporarily Blocked: It looks like you were misusing this feature by going too fast. You’ve been temporarily blocked from using it." Anyone using this may want to s/1000/2000/ on the first line.
- metadat 2y ago
- Terr_ 2y agoSeparately, Firefox has a feature to isolate Facebook activity from other things you do on the web.
- atleta 2y agoI don't know how well it works in practice. The other day I bought something from a local webshop (bike parts) on my laptop. The next day I'm seeing an ad from the same webshop on my Facebook feed on my mobile. Yes, it could be coincidental though I do see a lot of bike-related ads and practically never this company. (Even though I am a returning, if not very frequent customer of theirs.)
- netsharc 2y agoSome companies upload their customer data to FB because Zuck promised them then you can send ads to your existing customers. I made the mistake of having the same email address for Facebook as for registering to random online shops...
- atleta 2y agoI use a separate email address basically everywhere so this can't be the reason. (I don't even use my main email address for facebook.)
- 29athrowaway 2y agoI heard that sites like Facebook run A/B tests all the time, and the version you get served at a given time may not be the same others see. I also suppose the version you see may be slightly different on different territories somehow. Also, these scripts break often as they depend on observable behaviors that are not contracts. It's Hyrum's law again.
- stevage 2y agoWeirdly, 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.
- snapplebobapple 2y agoSo you are the one i need to be angry at for caving and perpetuating this bs.
- atleta 2y agoFor me the correct URL seems to be: https://www.facebook.com/adpreferences/ad_settings/?section=audience_based_advertising&entry_product=accounts_center https://www.facebook.com/adpreferences/ad_settings/?section=... instead of what you have in the gist. (But the script errs on the awaits.)
- GeoHubToday 2y agoI've updated the script, try again! :D
- winrid 2y agoNeither the URL in the gist or this one load for me. The one in the gist seems to freeze at trying to load some modal, on fully updated Chrome.
- GeoHubToday 2y agoCan you post screenshots of your network tab so I can calculate the intervention actors?
- winrid 2y agoWell I don't even get a chance to run the script.
- smusamashah 2y agoWhat are the actual steps using the UI if one chooses to do it manually?
- GeoHubToday 2y agoAbout 300+ manual clicks on average :/
- smusamashah 2y agoThis was a dumb question from me. You open each advertisers link and click both buttons, then go back.
- GeoHubToday 2y agoOP here, I've updated the script for a bit more robust support when dealing with slow/delayed endpoint calls! Thanks for the feedback, HN!
- mgraczyk 2y agoWhat is the motivation to prefer untargeted ads over targeted ones?
- xzjis 2y agoTargeted ads are the ones that are the most likely to make you change your mind, and buy/consume something you didn't need in the first place.
- GeoHubToday 2y agoTargeted ads can basically gangstalk you and it's psychologically uncomfortable
- mgraczyk 2y agoAnd you are using the term "gangstalk", which refers to a specific symptom of mental illness, ironically?
- luqtas 2y ago& feeling paranoia is a garantee of having mental disease?
- mgraczyk 2y agoNo, but the phrase "gangstalk" refers to a specific kind of persecutory delusion. https://en.m.wikipedia.org/wiki/Gang_stalking https://en.m.wikipedia.org/wiki/Gang_stalking
- bqmjjx0kac 2y agoIn the words of Kurt Cobain, "Just because you're paranoid don't mean they're not after you." But I take your point. Using clinical terms in another context creates an unnecessary/unwanted association for readers.
- ndriscoll 2y ago
- ThinkBeat 2y agoand he is banned from Facebook. (for some that is a relief for others it is serious)
- seadan83 2y agoAwesome script! I'm watching it run now :) Question, could someone explain the exact impact this would have for Facebook & a person's experience with ads? I kinda have a few guesses, but am curious if anyone can weigh in with more info, how this is crippling and overall what the effect should be. Thanks!
- GeoHubToday 2y agoThose third parties upload the data they have about you to Facebook (clicks, cookies, times, geo, non-psychology factors) Facebook then refines what the third-parties have with what Facebook has (enriches this coarse data with rich psychographic data that only Facebook has) This cuts off that relationship
- tgsovlerkhgsel 2y agoMuch more entertaining: Get the list of advertisers. Find the ones who aren't allowed to share your data with Facebook, e.g. due to lack of consent or because they're bound by professional secrecy (e.g. banks or health related things). Report to your local DPA.
- azemetre 2y agoWhat does DPA stand for? Guessing it's not Drug Policy Alliance, the first hit on Google.
- david_p 2y agoin this context, DPA usually means Data Processing Agreement. I’m assuming GP meant DPO, for Data Protection Officer, the person responsible for enforcing GDPR (or similar laws) in a company.
- josephg 2y agoData protection agency. Eg, Australia: https://www.oaic.gov.au/ https://www.oaic.gov.au/ UK: https://ico.org.uk/ https://ico.org.uk/ EU: https://www.edps.europa.eu/_en https://www.edps.europa.eu/_en , etc.
- 1vuio0pswjnm7 2y agoData Protection Authority "Under the law the Data Protection Authorities (DPAs) should enforce our rights in each EU member state." https://noyb.eu/en/faqs https://noyb.eu/en/faqs List of DPAs: https://noyb.eu/en/project/dpa https://noyb.eu/en/project/dpa
- GeoHubToday 2y agoWhat you suggest and what I have are not mutually exclusive, friend :3
- noprocrasted 2y agoWhen it comes to the UK DPA they will only even consider your complaint if you have evidence of trying to resolve the issue with the offending company directly, so it will not have the desired outcome because most companies will opt you out, removing your grounds to complain to the ICO in the first place. Source: https://ico.org.uk/make-a-complaint/data-protection-complaints/data-protection-complaints/ https://ico.org.uk/make-a-complaint/data-protection-complain... > You'll need: a copy of the complaint you have made to the organisation about how they have used your information
- throwaway_5753 2y agoWhat's the legality of a script like this? Could this be construed as a violation of the CFAA if you were a motivated/evil enough lawyer? I recall some surprising legal outcomes in recent years, for example jail for posting fake Yelp reviews. Anyone know of any case law for this sort of scripting?
- GeoHubToday 2y agoI truly, deeply, and honestly hope Facebook gets litigious over this My settlement conditions are already prepared And they are non-monetary and super simple
- josephcsible 2y agoI'm worried that if you use this, Facebook will permaban you for something like "using modified or unauthorized clients to interact with Facebook services".
- actionfromafar 2y agoIt would still work, technically.
- JojoFatsani 2y agoThank you OP, you're a mensch.
- technion 2y agoThe part I'm finding most interesting is that I clicked this link and have never heard of pretty much any of the targeted advertisers listed there.
- EvgeniyZh 2y agoReminder to use AdNauseum [1] that will not only hide the ads but also click it, messing with targeting and spending advertisers' money at the same time. [1] https://adnauseam.io/ https://adnauseam.io/
- dhanrajker 2y ago[flagged]
- hemarajker 2y ago[flagged]
- GLORIA90 2y ago[dead]
- exabrial 2y agoAnyone have something like this for Google?
- exabrial 2y agoUnbelievable and incredible who hard Facebook makes this to do by hand. Completely unethical
- bequanna 2y agoThis doesn't appear to recognize any existing 'Don't allow' selections and fails when you've already disallowed some advertisers.
- rayeng 2y agohttps://www.facebook.com/profile.php?id=61560741635214 https://www.facebook.com/profile.php?id=61560741635214