Who Is Really A Scraping Pro? Benchmarking The Fingerprinting Skills Of Scraping Pros
Today, with anti-bot systems using ever more advanced request fingerprinting techniques to detect and block scrapers, a crucial skill every scraping pro needs to develop is browser fortification.
Which is the ability to fortify their requests so that they don't leak any signs that the requests are coming from a scraper.
Developers can do this themselves or use fortified versions of Puppeteer, Playwright or Selenium (often need more fortification).
However, this can be a difficult and time consuming process if you don't have prior experience.
As a result, most proxy providers now offer some form of smart proxy solution that claim to manage this browser fortification for you.
So in this article, we decided to put the Scraping Pro's to the test...
Are they really experts at browser fortication?
Or do they make noob errors that no scraping professional should make?
So in this article we will put them to the test, covering:
- TLDR Scoreboard
- Header and Browser Fingerprint Testing Methodology
- 15-Test Comparison Matrix
- Top Performer #1: Scrapfly
- #2: Zenrows
- #3: Scrape.do
- #4: Zyte API
- #5: ScraperAPI
- #6: ScrapingBee
- #7: Bright Data Unlocker
- #8: Decodo Site Unblocker
- #9: Scrapingdog
- Lessons Learned: What This Benchmark Teaches Us
- Conclusion: A More Realistic Way to Think About Scraping Tools
TLDR Scoreboard
Pretty much every proxy provider claims to be the "Best Proxy Provider" so we decided to put to the test.
Each scraping tool is a variation of the same basic idea. Managed rotating proxies with user-agent and browser fingerprint optimization to bypass anti-bot detection.
Premium Unlockers
Some of these proxy products like Oxylabs Web Unblocker, Bright Data Web Unlocker and Decodo Site Unblocker, are dedicated "Unlockers" that specialize themselves in bypassing anti-bot systems on the most difficult websites and price themselves accordingly.
Smart APIs
Whereas others like Scrape.Do, ScraperAPI and ScrapingBee are more generic Smart Proxy APIs that offer lower cost scraping solutions, but also allow users to activate more advanced anti-bot bypassing functionality on requests.
Our analysis revealed a significant performance gap among the tested proxy providers in generating realistic and resilient browser fingerprints.
- Top Performer: Scrapfly emerged as the definitive leader, delivering high-quality, diverse, and contextually accurate profiles.
- Okay Performers: A middle tier of providers including Zenrows, Scrape.do, and Zyte API showed promise in some areas like hardware realism but failed systematically in others, particularly geo-specific spoofing.
- Poor Performers: The remaining providers exhibited critical flaws, ranging from static, easily-detectable fingerprints and blatant automation flags to fundamental inconsistencies between browser layers.
Here are the overall results:
| Provider | Overall Score (0–100) | Pass/Warn/Fail (count) | Comments |
|---|---|---|---|
| ✅ Scrapfly | 88.96 | 12 / 2 / 0 | Leader by a wide margin. Excellent geo-aware data & hardware realism. |
| ⚠️ Zenrows | 60.39 | 8 / 2 / 4 | Strong fingerprint diversity but failed on all geo-specific tests (timezone/language). |
| ⚠️ Scrape.do | 59.09 | 7 / 3 / 4 | Good hardware/resolution diversity. Failed geo-spoofing and platform consistency. |
| ⚠️ Zyte API | 57.79 | 7 / 3 / 4 | Good hardware profiles but failed on location data and platform consistency. |
| ❌ ScraperAPI | 35.06 | 3 / 3 / 8 | Failed on entropy (static hash), geo data, and exposed HeadlessChrome in UA. |
| ❌ ScrapingBee | 23.37 | 3 / 0 / 11 | Failed due to static hash, 800x600 resolution, and CDP automation flags. |
| ❌ Bright Data Unlocker | 22.72 | 0 / 1 / 1 | Most tests N/A; browser failed to return JS-based device info. |
| ❌ Oxylabs Web Unblocker | 15.58 | 2 / 0 / 12 | Critical failures: static profile, platform mismatch, and exposed automation flags. |
| ❌ Decodo Site Unblocker | 15.58 | 2 / 0 / 12 | Critical failures: static profile, platform mismatch, and exposed automation flags. |
| ❌ Scrapingdog | 7.79 | 1 / 0 / 13 | Abysmal performance. Displayed massive contradictions between reported UA and JS properties. |
Header and Browser Fingerprint Testing Methodology
For this benchmarking, we decided to send requests with each proxy providers headless browser enabled to Device and Browser Info to look at the sophistication of their header and browser fingerprinting.
The key question we are asking is:
Is the proxy provider leaking any information that would increase the chances of a anti-bot system detecting and blocking the request?
To do this, we focused on any leaks that could signal to the anti-bot system that the request is being made by a automated headless browser like Puppeteer, Playwright, Selenium, etc.
Here are the tests we conducted:
1. Fingerprint Entropy Across Sessions
Test whether the browser fingerprint shows natural variation across multiple sessions.
- Example: Identical JS fingerprint hashes, same WebGL/canvas values, or repeated hardware profiles across visits.
- Why it matters: Real users vary; deterministic fingerprints are a strong indicator of automation.
2. Header Realism
Check whether HTTP headers match the structure and formatting of real modern browsers.
- Example: Missing
Accept-Encoding: br, gzip, malformedAcceptheaders, or impossible UA versions. - Why it matters: Incorrect headers are one of the fastest and simplest ways anti-bot systems identify bots.
3. Client Hints Coherence
Evaluate whether Client Hints (sec-ch-ua*) align with the User-Agent and operating system.
- Example: UA claims Windows but
sec-ch-ua-platformreports "Linux", or the CH brand list is empty. - Why it matters: Mismatched Client Hints are a highly reliable signal of an automated or spoofed browser.
4. TLS / JA3 Fingerprint Realism
Test whether the TLS fingerprint resembles a real Chrome/Firefox client rather than a script or backend library.
- Example: JA3 matching cURL/Python/Node signatures, missing ALPN protocols, or UA/TLS contradictions.
- Why it matters: Many anti-bot systems fingerprint TLS before any JS loads, so mismatched JA3 values trigger instant blocks.
5. Platform Consistency
Evaluate whether the OS in the User-Agent matches navigator.platform and other JS-exposed platform values.
- Example: UA says macOS but JavaScript reports
Linux x86_64. - Why it matters: Real browsers almost never contradict their platform; mismatches are a classic bot signal.
6. Device-Type Coherence
Test whether touch support, viewport size, and sensors align with the claimed device type (mobile vs. desktop).
- Example: A mobile UA with
maxTouchPoints=0, or an iPhone UA showing a 1920×1080 desktop viewport. - Why it matters: Device-type mismatches are one of the simplest heuristics anti-bot systems use to flag automation.
7. Hardware Realism
Check whether CPU cores, memory, and GPU renderer look like real consumer hardware.
- Example: Every session reporting 32 cores, 8GB RAM, and a SwiftShader GPU.
- Why it matters: Unrealistic hardware profiles strongly suggest virtualized or automated browser environments.
8. Timezone vs IP Geolocation
Evaluate whether the browser's timezone matches the location implied by the proxy IP.
- Example: German IP reporting UTC or
America/New_York. - Why it matters: Timezone mismatches reveal poor geo-spoofing and are widely used in risk scoring.
9. Language/Locale vs IP Region
Check whether browser language settings align with the IP's expected locale.
- Example: All geos returning
en-USregardless of country, or JS locale contradicting theAccept-Languageheader. - Why it matters: Locale mismatch is a simple yet strong indicator that the request is automated or spoofed.
10. Resolution & Pixel Density Realism
Test whether screen resolution and device pixel ratio resemble real user devices.
- Example: Fixed 800×600 resolution, or repeated exotic sizes not seen on consumer hardware.
- Why it matters: Bots often run in virtual machines or containers with unnatural screen sizes.
11. Viewport & Geometry Coherence
Evaluate whether window dimensions and screen geometry form a logically possible combination.
- Example: Inner window width larger than the actual screen width.
- Why it matters: Impossible geometry is a giveaway that the environment is headless or virtualized.
12. Fonts & Plugins Environment
Check whether the browser exposes realistic fonts and plugins for the claimed OS and device.
- Example: A single font across all sessions, or empty plugin lists on macOS.
- Why it matters: Normal devices have rich font/plugin environments; sparse lists are characteristic of automation.
13. Peripherals Presence
Test whether microphones, speakers, and webcams are exposed the way real devices normally do.
- Example: All sessions reporting 0 microphones, 0 speakers, and 0 webcams.
- Why it matters: Real devices, especially desktops and laptops, almost always expose some media peripherals.
14. Graphics Fingerprints (Canvas & WebGL)
Evaluate whether canvas and WebGL fingerprints are diverse and platform-appropriate.
- Example: Identical WebGL renderer hashes across sessions, or a SwiftShader GPU on a claimed macOS device.
- Why it matters: Graphics fingerprints are hard to spoof; unrealistic or repeated values reveal automation.
15. Automation Signals
Check whether the browser exposes direct automation flags or patched properties.
- Example:
navigator.webdriver=true, visible “CDP automation” flags, or inconsistent worker properties. - Why it matters: These are explicit—and often fatal—indicators that the environment is controlled by a bot framework.
These header and device fingerprint tests aren't conclusive on their own. But if a proxy provider is leaking numerous suspicious fingerprints that are sent consistently then it is easy for a anti-bot to detect and block these requests. Even if the proxy IPs are rotating.
We sent requests to Device and Browser Info using each proxy providers United States, German, Japanese, United Kingdom and Russian IPs to see how they are optimizing their browsers for each geolocation and the browser leaks differ by location.
During testing we encountered some issues:
15-Test Comparison Matrix
The following is a summary breakdown of the test results for each proxy provider.
Providers are ordered from best to worst based on overall performance.
| Test \ Provider | Scrapfly | Zenrows | Scrape.do | Zyte API | ScraperAPI | ScrapingBee | Bright Data Unlocker | Oxylabs Web Unblocker | Decodo Site Unblocker | Scrapingdog | Weight |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1. Fingerprint Entropy | ✅ Excellent diversity across all sessions. | ✅ Good fingerprint diversity across sessions. | ✅ Good hash and profile variation. | ✅ Good fingerprint diversity across sessions. | ❌ Identical hash across all sessions. | ❌ Identical hash across all sessions. | N/A | ❌ Low diversity, very static profiles. | ❌ Very low diversity, static profiles. | ❌ Mostly identical hashes across sessions. | 3 |
| 2. Header Realism | ✅ Headers were clean and realistic. | ✅ Headers were clean and realistic. | ⚠️ Extra space in UA string (Chrome/141.. ). | ✅ Headers looked well-formed and complete. | ✅ Headers looked well-formed and complete. | ✅ Headers looked well-formed and complete. | ❌ Malformed Accept headers (no commas). | ✅ Headers looked well-formed and complete. | ✅ Headers looked well-formed and complete. | ❌ FF UA with Chrome CH; missing br. | 3 |
| 3. Client Hints Coherence | ⚠️ Brands serialization artifact; otherwise coherent. | ⚠️ Brands serialization artifact; otherwise coherent. | ⚠️ Brands serialization artifact; otherwise coherent. | ⚠️ Brands serialization artifact; otherwise coherent. | ⚠️ Brands serialization artifact; otherwise coherent. | ❌ Blank brands and sec-ch-ua missing. | ⚠️ Present for Chrome, not Safari; lacked context. | ❌ Brands/UA versions mismatched; HeadlessChrome. | ❌ Frozen brands value and version mismatch. | ❌ Impossible: Firefox UA with Chrome CH. | 2.5 |
| 4. TLS / JA3 Realism | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 3 |
| 5. Platform Consistency | ⚠️ Win32 platform for some Win64 UAs. | ⚠️ Win32 platform for some Win64 UAs. | ❌ Win32 platform for Win64 UAs. | ❌ Win32 platform for Win64 UAs. | ✅ UA Linux matched navigator.platform. | ✅ UA Linux matched navigator.platform. | N/A | ❌ macOS/Win UA with Linux x86_64 platform. | ❌ macOS/Win UA with Linux x86_64 platform. | ❌ Win UA vs. Linux platform/CH. | 3 |
| 6. Device-Type Coherence | ✅ Desktop UA, maxTouchPoints=0. | ✅ Desktop UA, maxTouchPoints=0. |