DNS Leak

Secure DNS

DNS ProviderIPv4 AddressesIPv6 AddressesDoH EndpointKey Features
Cloudflare DNS1.1.1.1<br/>1.0.0.12606:4700:4700::1111<br/>2606:4700:4700::1001https://dns.cloudflare.com/dns-queryFast, strong privacy, no logs
Google Public DNS8.8.8.8<br/>8.8.4.42001:4860:4860::8888<br/>2001:4860:4860::8844https://dns.google/dns-queryGlobal coverage, fast, partial logging
Quad99.9.9.9<br/>149.112.112.1122620:fe::fe<br/>2620:fe::9https://dns.quad9.net/dns-queryStrong privacy, malware protection
OpenDNS (Cisco)208.67.222.222<br/>208.67.220.2202620:119:35::35<br/>2620:119:53::53https://doh.opendns.com/dns-queryCustomizable filtering, good for families
AdGuard DNS94.140.14.14<br/>94.140.15.152a10:50c0::ad1:ff<br/>2a10:50c0::ad2:ffhttps://dns.adguard.com/dns-queryBuilt-in ad and tracker blocking
NextDNS45.90.28.0<br/>45.90.30.02a07:a8c0::<br/>2a07:a8c1::https://dns.nextdns.ioFully customizable, strong privacy
Comodo Secure DNS8.26.56.26<br/>8.20.247.20No official IPv6 supporthttps://doh.comodoca.com/dns-query<br/>Enterprise-grade security, malware protection
Yandex DNS77.88.8.8<br/>77.88.8.12a02:6b8::feed:0ff<br/>2a02:6b8:0:1::feed:0ffhttps://dns.yandex.net/dns-querySuitable for Russian users, parental control mode
OpenNIC192.95.54.3<br/>13.239.157.1772001:470:8f3b::1https://doh.opendns.org/dns-queryDecentralized, censorship-resistant

DoH Mode

Set DoH service in browser and setting.

Disable IPv6

Windows

  1. Open Control Panel.
  2. Go to Network and Sharing Center.
  3. Click on Change adapter settings.
  4. Right-click on your active network connection (Wi-Fi or Ethernet) and select Properties.
  5. In the list of items, uncheck Internet Protocol Version 6 (TCP/IPv6).
  6. Click OK to apply the changes.
  7. Restart your computer.

MacOS

  1. Open System Preferences.
  2. Go to Network.
  3. Select your active network connection (Wi-Fi or Ethernet) from the left.
  4. Click on Advanced.
  5. Go to the TCP/IP tab.
  6. In the “Configure IPv6” drop-down menu, select Link-local only (or Off, depending on the macOS version).
  7. Click OK and then Apply.

Linux

  1. Open a terminal window.
  2. Run the following commands to disable IPv6 temporarily (for the current session):
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

To disable IPv6 permanently, you can add the following lines to your /etc/sysctl.conf file:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

After editing the file, run:

sudo sysctl -p

Firefox

  1. Open about:config
  2. Search for network.dns.disableIPv6.
  3. Set the value to true to disable IPv6 in Firefox.

Chrome

  1. Open chrome://flags
  2. Search for “IPv6”.
  3. Disable “Experimental QUIC protocol” (QUIC uses IPv6 by default).
  4. Restart Chrome.

Windows

Flush DNS Cache

ipconfig /flushdns

MacOS

sudo killall -HUP mDNSResponder

Browser Tracking

CategoryTrackable InformationRiskExample Data
User-Agent (UA)Browser type & versionHelps identify browser and OS, making fingerprinting easierMozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0
Operating system (OS)Used to detect device type and environmentWindows 10,Linux x86_64,MacOS
Device architectureHelps distinguish between x86, x64, and ARM devicesx86_64,ARM
Navigator APInavigator.platformReveals OS, making device identification easierWin32,Linux x86_64
navigator.oscpuProvides detailed OS information, increasing tracking accuracyWindows NT 10.0
avigator.language Exposes user’s preferred languages, allowing regional trackingen-US,zh-CN
navigator.languagesExposes user’s preferred languages, allowing regional tracking["en-US", "en", "zh-CN"]
navigator.hardwareConcurrencyCPU core count, useful for device fingerprinting<br/>8,16(CPU cores)
navigator.deviceMemoryRAM size, helping with unique device identification8,16(GB RAM)
navigator.webdriverDetects automation tools, flagging bots and scraperstrue / false(Detects automation)
Screen & DisplayScreen resolutionHelps track unique device setups1920x1080,2560x1440
Color depthFurther refines fingerprinting accuracy24-bit,32-bit
Device pixel ratioDistinguishes high-resolution (Retina) displays1.0,2.0(Retina screens)
WebGL FingerprintingGraphics card modelCreates a unique hardware fingerprintNVIDIA GeForce GTX 1060,Intel UHD Graphics
WebGL vendorHelps identify GPU manufacturer and browser typeGoogle Inc.,Mozilla Foundation
Canvas FingerprintingUnique rendering outputAllows persistent tracking even with changing IPsHash from CanvasRenderingContext2D
Audio FingerprintingUnique audio processingCan track devices through distinct audio processing differencesHash from AudioContextAPI
Fonts & PluginsInstalled fontsHelps identify OS and software configurationsArial,Times New Roman,Roboto
Installed browser pluginsExposes additional software details for trackingPDF Viewer,Widevine Content Decryption
Time & RegionTime zoneAllows geographic region trackingUTC+8,America/New_York
System clock offsetHelps detect virtual machines and bots500msdeviation from server time
WebRTC (IP Leakage)Local IP addressCan reveal internal network structure192.168.1.2(Internal network)
Public IP addressBypasses VPNs and proxies, exposing real location203.0.113.45
Battery APIBattery level & charge statusCan track device behavior over time85%,Charging
Performance APIperformance.now()execution timeHelps detect virtual machines and emulated environmentsMeasures script execution delays
CPU performance metricsIdentifies device performance characteristicsMeasures speed of different JS operations
TLS FingerprintingSSL/TLS handshake fingerprint (JA3)Can detect VPNs, proxies, and bot activityUnique cipher suites & SSL config
Mouse & Keyboard EventsTyping speed & patternDifferentiates between human users and botsDetects human vs. bot behavior
Mouse movement behaviorTracks user habits and unique interaction patternsTracks unique user interactions

Fingerprint

Here’s a table summarizing the potential information that privacy.resistFingerprinting (RFP) may leak or modify, making it detectable by websites:

CategoryEffect of RFPDetected
CPU Cores(navigator.hardwareConcurrency)Always returns 2, regardless of actual cores.Websites can check if the value is always 2.
Platform & OS(navigator.platform,navigator.oscpu)Standardized to Win32(Windows) or MacIntel(Mac).Websites may notice mismatched OS details.
Languages(navigator.languages)Always returns ["en-US"].Users with non-English systems may stand out.
Canvas FingerprintingAlters rendering to introduce noise.Websites detecting altered output can infer RFP usage.
Window Size(window.innerWidth,window.innerHeight)May force standard window sizes.Websites can check for unusual or fixed dimensions.
FontsLimits available fonts to a predefined set.Websites may detect missing fonts compared to normal users.
User-Agent SpoofingReturns a more generic User-Agent.Websites can compare User-Agent with other APIs.

Firefox

  • Open about:config
  • Search for privacy.resistFingerprinting
  • Double click it set to true
  • Then search for dom.event.clipboardevents.enabled
  • Double-click Set to false

Brave Browser (with built-in anti-fingerprinting)

  • Open brave://settings/shields
  • Find the Fingerprinting option. Select Block all fingerprinting

Chrome (experimental feature)

  • Open chrome://flags
  • Search for Fingerprinting Protection
  • Enable this feature and restart your browser

Random fingerprint everyday

  • Open about:config
  • Set privacy.resistFingerprinting.randomization.daily_reset.enabled to true

CPU Cores

FIrefox

This setting takes effect without turning on privacy.resistFingerprinting

  • Open about:config
  • Search for dom.maxHardwareConcurrency
  • Modify it to the fake cores

WebRTC

Firefox

  • Open about:config
  • Search for media.peerconnection.enabled
  • Double-click it to set it to false
  • Restart Firefox

Google Chrome (Chromium, Edge, Brave, Opera)

Chrome does not allow full disabling of WebRTC natively, you can restrict its behavior:

  • Open chrome://flags
  • Search for WebRTC. Disable the following content. Then restart Chrome.
WebRTC STUN origin header
Anonymize local IPs exposed by WebRTC

If the browser does not support this function, install the official google plugin WebRTC Network Limiter .

Linux-based Browsers (Brave, Chromium, Edge, etc.)

  • Open chrome://settings/content/webrtc
  • Set WebRTC IP Handling Policy to Disable non-proxied UDP.

WebGL

Firefox

  • Open about:config
  • Search for webgl.disabled
  • Double click it set to true

Cross-Site Tracking

  • Open about:config
  • Search for network.http.referer.XOriginPolicy
  • Modify the number to 2

UserAgent

==With current fingerprint recognition technology, most disguises will be recognized as machine.==

Modify the useragent manually.

  • Open about:config
  • Search for general.useragent.override
  • Choose String type and set the appropriate useragent

Format:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0

Explanation:

  • Mozilla/5.0 → Standard prefix for modern browsers.
  • Windows NT 10.0; Win64; x64 → Represents Windows 10/11 (64-bit).
  • rv:135.0 → Gecko rendering engine version 135.0 (matches Firefox version).
  • Gecko/20100101 → A fixed identifier for Gecko-based browsers.
  • Firefox/135.0 → Indicates the browser version.

Time Zone

The following can be recognized as time zones to determine whether or not they are forged.

ip time zone
Javascript time zone
Internationalization API time zone
time zone offset
local time

Keyboard Fingerprint

Protect keyboard Fingerprint by plugin.

Etag Tracking

Disable Browser Caching (Prevents ETags from being stored)

In Firefox, set:

about:config → browser.cache.disk.enable = false
about:config → browser.cache.memory.enable = false

In Chrome, use the “Disable Cache” option in DevTools (F12 → Network Tab → Disable Cache).

Use a Privacy-Focused Browser

  • Tor Browser & Brave automatically block ETag tracking.

Block ETags with Browser Extensions

  • uBlock Origin: Add a custom rule to block ETag headers:

Clear Cache Regularly

  • Use private browsing mode or manually clear the cache after each session.

Use a VPN / Proxy

  • ETags may still track browser sessions, but changing IPs frequently makes tracking harder.

Modify Headers with Extensions

  • Use Chameleon or Header Editor extensions to strip If-None-Match headers from requests.

Tor Browser

When you use Tor Browser, it standardizes or falsifies several types of information to protect your privacy. Here’s a more detailed list of the information Tor falsifies or standardizes:

Fake Canvas Fingerprints

Use the following plugin to fake Canvas fingerprint requests. Don’t disable canvasprint in your browser.

  • CanvasBlocker (Firefox) – Blocks or modifies canvas fingerprinting.
  • Trace (Chrome & Firefox) – Provides multiple fingerprinting protections.

CanvasBlocker

Ignored APIs Setting

  • DO NOT ignore canvas (let CanvasBlocker spoof it).
  • DO NOT ignore audio (audio fingerprinting is common).
  • DO NOT ignore domRect (some sites use it for fingerprinting).
  • DO NOT ignore navigator (spoofing prevents easy tracking).
  • IGNORE history (not needed, Firefox already protects it).
  • IGNORE window (not a major tracking method).
  • IGNORE svg & textMetrics (less commonly used).
  • IGNORE screen (not as critical if you’re already spoofing navigator).

Ignored APIS Settings (Recommandation)

  • canvas (DO NOT IGNORE – let CanvasBlocker spoof it).
  • audio (DO NOT IGNORE – prevents audio fingerprinting).
  • history (IGNORE – Firefox blocks most tracking here).
  • window (IGNORE – rarely used for tracking).
  • domRect (DO NOT IGNORE – some fingerprint scripts use it).
  • svg (IGNORE – minor impact).
  • textMetrics (IGNORE – minor impact).
  • navigator (DO NOT IGNORE – important for spoofing).
  • screen (IGNORE – less critical than navigator).

CanvasBlocker configuration json

Bot Detection

Identification and Bot Detection

The combination of fingerprinting and bot detection gives you a powerful tool to protect against online fraud and produces the best results when used together.

WebDriver
WebDriver Advance
Selenium
NightmareJS
PhantomJS
Awesomium
Cef
CefSharp
Coaches
FMiner
Born
Phantomas
Rhino
Webdriverio
Headless Chrome

Chrome DevTools Protocol Detection

Detectable use of developer tools to simulate browsers or control them via related developer protocols.

CDP

Native Navigator

Detect whether the Navigator is deceptive. Some browser plug-ins or robots will modify key attributes to achieve deception.

appVersion: 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36
deviceMemory: 8
hardwareConcurrency: 4
maxTouchPoints: 0
mimeTypes: "[object MimeTypeArray]"
plugins: "[object PluginArray]"
productSub: 20030107
userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36
vendor: Google Inc.
language: en-US
languages: [ "en-US", "en" ]
javaEnabled: function javaEnabled() { [native code] }
getGamepads: function getGamepads() { [native code] }
requestMIDIAccess: function requestMIDIAccess() { [native code] }
mozGetUserMedia: function mozGetUserMedia() { [native code] }
sendBeacon: function sendBeacon() { [native code] }
requestMediaKeySystemAccess: function requestMediaKeySystemAccess() { [native code] }
getAutoplayPolicy: function getAutoplayPolicy() { [native code] }
registerProtocolHandler: function registerProtocolHandler() { [native code] }
taintEnabled: function taintEnabled() { [native code] }
permissions: "[object Permissions]"
pdfViewerEnabled: true
doNotTrack: 1
mediaCapabilities: "[object MediaCapabilities]"
vendorSub: 
cookieEnabled: true
mediaDevices: "[object MediaDevices]"
serviceWorker: "[object ServiceWorkerContainer]"
credentials: "[object CredentialsContainer]"
clipboard: "[object Clipboard]"
mediaSession: "[object MediaSession]"
userActivation: "[object UserActivation]"
wakeLock: "[object WakeLock]"
globalPrivacyControl: true
webdriver: false
geolocation: "[object Geolocation]"
appCodeName: Mozilla
appName: Netscape
platform: Win32
product: Gecko
locks: "[object LockManager]"
onLine: true
storage: "[object StorageManager]"
constructor: function Navigator() { [native code] }
duckduckgo: { "platform": "extension" }
toString: function toString() { [native code] }
toLocaleString: function toLocaleString() { [native code] }
valueOf: function valueOf() { [native code] }
isPrototypeOf: function isPrototypeOf() { [native code] }
propertyIsEnumerable: function propertyIsEnumerable() { [native code] }
__defineGetter__: function __defineGetter__() { [native code] }
__defineSetter__: function __defineSetter__() { [native code] }
__lookupGetter__: function __lookupGetter__() { [native code] }
__lookupSetter__: function __lookupSetter__() { [native code] }

Webdriver