Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Happens all the time to me - fullscreen ads that require me to click on something to dismiss them. I won't click on an ad for any reason, so I have to close the page and go somewhere else. Ads are completely out of hand.


Ah yes, fullscreen horribad adverts that takeover your mobile screen. The entire page goes dark and some overlay ad has appeared on the news site you want to look at either trying to get you to log in, buy something or download their app (full of ads) but you can't scroll around to find where the actual ad is to close the popup as the overlay is so far out of resolution it doesn't fit your device, so you just give up on the blacked out content.

The only solution I could come up with for Android/iOS was to run a remote digital ocean firewall to block all ads at the network level, and connect to it with a VPN. Everything else I've tried or implemented on the devices themselves ate up too much resouces or had to be dangerously elevated in privilege (NDK) just to stop the damn ads. A bonus of this method is you can also experiment with filtering known Android bugs before they reach your device if for whatever reason you can't update your system.img


Thats why publishers and ad networks deserve whats coming. You reap what you sow.

Mobile ads are the worst. They hijack the whole screen, float around make it impossible to view content, are a pain to dismiss, and they hijack scrolling.

They are also highly likely to be a carrier for malware. Good riddance to such rubbish


I've been trying to think of a solution like this, but I'm not sure how to actually implement it. Do you know of any guides to do this?


I run a VM with pf firewall (example book) https://www.nostarch.com/pf3 which wholesale blocks known ad server IPs from adblock/ublock origin filter lists, other sources http://pgl.yoyo.org/adservers/ The firewall also prevents data leaks from misconfigured software phoning home or crash reports being sent, IPs being leaked over WebRTC, ect. You can also run your own DNS and email/backup server with the VM too.

Then scrubbed traffic is passed to Snort (or use Suricata), with a ruleset to look for attack signatures. You can update rulesets from mailing lists https://lists.emergingthreats.net/mailman/listinfo/emerging-... and make your own by following whoever on Twitter is involved in Android/iOS security like @pof (Pau Oliva). There are specific mobile "emerging threat" rulesets too https://lists.emergingthreats.net/pipermail/emerging-sigs/20...

Now you can install Ublock Origin on your phone browser and most of the work it has to do is already done saving memory and bandwidth. Here you can experiment with custom rulesets for how pages get displayed, whitelist certain objects you may wish to look at and not blindly block. To further go down the rabbit hole you can build your own mobile version of FF on your VM, ripping out all these harmful things: https://sites.google.com/a/chromium.org/dev/Home/chromium-se...

You can also set up a script on the VM to update Android on AWS. If say there's a new web views critical bug, and a patch is released your VM script (Ansible/Chef) can start an AWS instance, get the latest patch(s) and completely build a new system.img automatically. This can all be done with a custom app you write with the backend hosted on your VM, or with Termux or KBOX, and automate/abstract away all the ssh key logins and tasks with a script. Open your app see all available new Android patches, then click "Build" to automate your new system.img with your own signatures.

Of course you don't have to use any of these tools, you could learn about their innards then roll your own software. If you are a javascript developer have the pf firewall dump it into your custom interpreter on the VM, that can look for unusual behaviour and just pass scrubbed js to your browser on the phone.


On iOS, using a PAC file (for wifi configurations) works quite well I've found.


I've taken to popping open the devtools and deleting the offending DOM elements when this happens.


Ctrl+Shift+C in Chrome lets you select the node even before you open the dev tools, and then you can just press "canc" to remove it.


Excellent tip. First part works great. But what do you mean by canc? Is that a button on the inspector? A key combination? Can't find it.

Maybe I'm missing something obvious. It's been a long day...


At least on a Mac, the delete key (or rather Fn-Backspace) does the trick.


Hey thanks for the tip! Would come real handy


I have a bookmarklet that lets me do that without popping open dev tools. When I get home I'll post it.


Here it is:

    javascript:(function(){document.styleSheets[0].addRule(".highlighted_to_remove","background:red !important");var e=function(e){if(e.keyCode==27){i()}};document.addEventListener("keydown",e);var t=function(e){e.stopPropagation();this.classList.add("highlighted_to_remove");return false};var n=function(e){e.stopPropagation();this.classList.remove("highlighted_to_remove");return false};var r=function(e){this.parentNode.removeChild(this);i();e.preventDefault();e.stopPropagation();return false};var i=function(){var i=0;var s=document;while(s=document.body.getElementsByTagName("*").item(i++)){s.removeEventListener("mouseover",t);s.removeEventListener("mouseout",n);s.removeEventListener("click",r);s.classList.remove("highlighted_to_remove")}document.removeEventListener("keydown",e)};var s=0;var o=document;while(o=document.body.getElementsByTagName("*").item(s++)){o.addEventListener("mouseover",t);o.addEventListener("mouseout",n);o.addEventListener("click",r)}})()


This is what I have in my "Kill Element" bookmarklet. (SECURITY NOTE: You should never blindly copy and paste javascript like this and run it in your browser.)

  javascript:(function(){var e=document.body.style.cursor;document.body.style.cursor="crosshair";var t=document.createElement("div");var n="border:1px solid #3280FF;background-color:rgba(50,128,255,0.5);position:absolute;z-index:999999999999999;display:none;";var%20r="pointer-events:none;";var%20i="transition:width%2060ms,height%2060ms,left%2060ms,top%2060ms;";n+=r+"-webkit-"+r+"-moz-"+r;n+=i+"-webkit-"+i+"-moz-"+i;t.setAttribute("style",n);document.body.appendChild(t);var%20s=null;var%20o=function(e){var%20n=e.target;if(n!==s&&n.parentNode){var%20r=n.getBoundingClientRect();var%20i=document.documentElement;var%20o=document.body;var%20u=i.clientTop||o.clientTop||0;var%20a=i.clientLeft||o.clientLeft||0;var%20f=window.pageYOffset||i.scrollTop||o.scrollTop;var%20l=window.pageXOffset||i.scrollLeft||o.scrollLeft;var%20c=l-a+r.left-1;var%20h=f-u+r.top-1;t.style.display="block";t.style.left=c+"px";t.style.top=h+"px";t.style.width=r.width+"px";t.style.height=r.height+"px";s=n}};var%20u=function(n){document.body.style.cursor=e;if(n.target.parentNode)n.target.parentNode.removeChild(n.target);if(t.parentNode)t.parentNode.removeChild(t);window.removeEventListener("click",u,false);window.removeEventListener("mouseover",o,false);n.stopPropagation();n.preventDefault()};window.addEventListener("mouseover",o,false);window.addEventListener("click",u,false)})();void(0)


Your comment makes this page have a long horizontal scroll, and a total pain in the ass to read now. Perhaps you can edit that and put in spaces so it wraps? Thanks.


In fairness, this is HN's fault - not allowing posts to mess up the whole page is basic fit-for-purposeness for forum software and the whole reason HTML is not allowed in the first place. Your workaround, on the other hand, breaks the content as bookmarklets are always one-liners. Evidently (according to a sibling comment) the solution is to prepend 4 spaces, which isn't exactly standard.

As for the bookmarklet, smashing stuff. I'm always deleting irritating stuff on pages using the inspector.


not blaming anyone, just wanna be able to read the comments :)


Please prepend four spaces to this - you have broken formatting on the entire page.


I often do this as well for elements that steal from vertical space - the claustrophobia-inducing ones anyway.


And if it's a site I visit more than once, creating a 'display: none' CSS override. Same for the floating headers that break paging, and similar annoyances. (I use the Stylish browser extension.)


For me, sites with intrusive ads and sites i visit more than once are two groups that do not intersect.


That works well until you get to sites that randomize the id/class/whatever of the element or automatically reinsert it once you kill it. At that point i usually look for a different site. Urgh. I wouldn't mind ads if the weren't that fucking annoying.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: