DNS-based Ad Blockers are broken on latest Chrome versions, so here’s a fix
Recently, Google added support for a feature known as asynchronous DNS to Google Chrome, which aims to speed up page loading times by resolving the IP address of a website before you click the link. It works by scanning a web page as it loads, finding any domain names linked and using a Domain Name Server (DNS) to find the IP address associated with each of them. Google says it should respect the DNS server that the user has configured on-device, but on some occasions, this seems not to be the case. Users are reporting that DNS based ad-blockers like AdHell and DNS66 no longer function correctly on the latest version of Chrome.
As it turns out, Google is not always respecting the on-device configured DNS and reverting back to their own, hence why users are beginning to see advertisements again. It is not believed to affect ad blockers which do not use a DNS to block advertisements, such as NetGuard which instead uses its own firewall.
However, XDA Junior Member tersono discovered that there is a fix which can be applied pretty easily from within the application itself. It involves editing the Chrome’s flag to disable the asynchronous DNS. Note that it is possible that websites may take slightly longer to load given that the feature we will be disabling is used so that web pages can launch faster, but it will only have a minuscule impact—if there is any at all.
Fixing DNS-Based Ad Blockers in Google Chrome
Step 1 – Disabling Chrome’s Asynchronous DNS Feature
First, you’ll need to navigate to chrome://flags in your URL bar, where you’ll be brought to a menu where you can enable and disable features from within Chrome. Search for “DNS” and disable the feature entitled “Async DNS Resolver.”
Step 2 – Clearing the DNS Cache
Next, we’ll need to clear the DNS cache. This is because Google will still have many different domain names resolved to their IP addresses and have stored them in a file. This means that toggling this feature isn’t enough, as if you’ve been faced with any advertisements thus far then Google Chrome will still have their IP address stored. We can clear this cache pretty easily, simply navigate to chrome://net-internals. Navigate to the DNS tab and tap “Clear host cache.”
Step 3 – Restart Chrome
Really simple, simply restart Chrome by either swiping it away in your recents menu or force stop the application in your device’s application settings.
Why Are my DNS-Based Ad Blockers Working with Google Chrome now?
With the recent change by Google, it will often use Google’s DNS and not respect any other on-device DNS service which is running. This impacts not only DNS-Based Ad Blockers but also anybody using a VPN, as any DNS requests will leak. It presents a privacy concern to many, not just a nuisance to those who don’t want to see advertisements.
We disabled this new feature implemented in Google Chrome by disabling the flag, and so the application will be forced to use whatever DNS server the rest of the Android system is using as well. It is unknown if this fix will work in the future, since it’s possible that the flag may be removed entirely when the feature becomes enabled by default in a future version of Chrome.