'Do Not Track' feature should be removed from the Tracking Protection section
Issue Details
The Do Not Track feature is not respected by most websites and in fact often it is used for the purpose of tracking. Firefox in version 135 removed it from their browser for this reason. Apple removed it from Safari in 2019.
Relevant links: https://techcrunch.com/2024/12/11/mozilla-removes-do-not-track-setting-from-firefox-because-it-was-useless/ https://gizmodo.com/do-not-track-the-privacy-tool-used-by-millions-of-peop-1828868324 https://umatechnology.org/why-enabling-do-not-track-doesnt-stop-you-from-being-tracked/
Proposed solution
The Ask websites not to track you feature should only support Global Privacy Control.
Alternative solution
This should be done not just for the AdGuard Extension but also for all AdGuard products like AdGuard for Windows, AdGuard for Android and so on.
@SeriousHoax Hello! Thanks, we'll think about it
@SeriousHoax
Yes, I also find the coexistence of GPC+DNT annoying. So I disabled the setting. I wrote a rule that enables GPC on the client side. The rule resolves 2/3 of the test specifications:
, but unfortunately an extension is required on the server side. I chose to use ModHeader - Modify HTTP headers to send Sec-GPC 1.
@SampeiNihira Thanks for the suggestion. I was able to set it up using your suggested extension. But what rule do you use for the client-side detection? I am having to use an userscript. Is it possible via an adblock rule?
Enter this rule I wrote in AG:
*#%#//scriptlet('set-constant', 'navigator.globalPrivacyControl', 'true')
P.S.
Of course, the opposite approach would also be possible. Leave the GPC+DNT setting enabled and block “navigator.doNotTrack” with a rule, + block HTTP DNT with ModHeader.
But my first method is better because it can also be exported to other adblockers, such as uBlock Origin. Obviously, with a different rule syntax to be entered in my filters.
@SampeiNihira Thanks for the simple solution. I was asking AI chatbots before seeing your answer and none of them suggested using scriptlet. After giving ChapGPT this scriptlet it suggested to me use trusted-set-constant.
*#%#//scriptlet('trusted-set-constant', 'navigator.globalPrivacyControl', 'true')
Apparently this makes it seem like a native browser like implementation and forces websites to honor it and not try to change the value. I don't know how accurate this info is.
In my opinion, my rule is more compatible but less aggressive. The rule you wrote is more aggressive but may not work on all websites. Considering that the GPC and BrowserLeaks tests GPC+DNT have been passed, I remain faithful to my rule.
Of course, only an expert from the AG team knows the exact answer.
Gemini wrote this scriptlet for uBlock Origin that tests OK at the the GPC website:
*##+js(set-constant, navigator.globalPrivacyControl, true)
Just saw that in the Privacy Badger issue, it was mentioned that the German court banned LinkedIn from ignoring "Do Not Track" signals in 2023. So the argument is that the DNT signals still has value in some cases. So I'm a bit more confused now. Maybe a separate option as suggested by the OP of the below issue would be the better solution https://github.com/AdguardTeam/CoreLibs/issues/1982
@SeriousHoax The separate option idea was rejected by PB developer. See the last comment. https://github.com/EFForg/privacybadger/issues/2950
@sillyjaybird Yeah, I saw that. Let's see what AdGuard decides.
It is interesting to note that in Firefox, “navigator.doNotTrack” = unspecified, whereas in my Edge browser, for example, it has a value= null. To achieve almost the same thing, Edge considers it "undefined", so an rule would need to be added:
Hello @SeriousHoax! Do you have any new suggestions?
@dmitriivqa39 Hi! I think for the sake of user choice, giving separate options for each feature might be the better solution. So if a user wants to only use Do Not Track, then they can enable that; if they want only Global Privacy Control, then they can enable that. Those who want both can enable that also. The current state of combining both into one option is not ideal, IMO.
@SeriousHoax Thanks, we'll think about it
@SampeiNihira
According to code, the unspecified value is defined by Firefox.
The default value of navigator.doNotTrack is null in all chromium-based browser when do not track header is not enabled.
No need to worry about that, because DNT is "Non-standard: This feature is not standardized", therefore the different browser(like gecko-based / chromium-based) may define their default values differently.