
A scraper is not judged only by whether its fingerprint looks like Chrome, but by whether its IP, cookies and connection history continue to describe the same believable browser.
When a scraper starts getting blocked, the standard advice is predictable.
Change the User-Agent. Add the missing headers. Rotate the proxy. Generate new cookies. Try another Chrome profile. If none of that works, rotate everything more often.
But every one of those components can look valid on its own while becoming contradictory when combined. A Chrome User-Agent can be paired with the wrong TLS behavior. A valid cookie can appear from the wrong IP. One persistent cart token can jump between five supposed devices.
That problem becomes more visible at production scale. One request may look perfectly ordinary. A thousand sessions following the same sequence, timing and teardown can reveal the automation template behind them.
As Saksham Solanki, creator of the open-source HTTP client httpcloak, put it during our recent Reddit AMA:
Rotating the pieces separately manufactures a client that doesn't exist anywhere in the real world, and that's easier to spot than whatever you were trying to hide.
Saksham built httpcloak, a Go HTTP client designed to reproduce browser behavior across TLS, HTTP/2, HTTP/3 and the connection lifecycle, while working against a Cloudflare-protected target that was scoring on TLS and running HTTP/3. His experience comes from capturing browser traffic, comparing Chrome's networking behavior at the frame and byte level, and repeatedly correcting cases where httpcloak passed every public fingerprint test but still differed from Chrome underneath.
In our sixth r/WebScrapingInsider AMA, we asked Saksham why apparently browser-identical clients still get blocked, how identity breaks across proxies and sessions, where HTTP clients stop being sufficient, and what browser-impersonation product claims hide.
Here are the nine biggest insights from the discussion.