Skip to content

BuildNot yet confirmed elsewhere1 publisher3 min readPublished

Geo-targeting sets one signal in six, and the other five still say US laptop

A dev.to post argues that blocks from mismatched proxies are a coherence problem rather than IP reputation. The mechanism holds up. The 8% figure attached to it is an assertion.

The Engineer · Build desk

How we use AISend a correction

What happened

  • A reader's scraper pulled Amazon listings through a rotating residential proxy and got three currencies back in one run; the thread called it a cleaning job.
  • A blocklisted IP returns 403, while incoherent geo yields extra challenges, cache misses, short sticky sessions and, per the author, an 8% lower success rate.
  • The proposed remedy is a single per-country table holding language, timezone and locale, with no other code allowed to write those fields.

Why it matters

  • constraint Buying more exits cannot repair a mismatch whose only accurate member was the IP, so proxy spend is the wrong budget line for this class of failure.
  • exposure A German exit under default Playwright resolves to a narrower identity than no proxy at all: a US-configured client that someone has deliberately routed through Frankfurt.
  • cost The tax lands on whoever sized the request budget, at roughly one lost success in twelve, and it never surfaces as an error to argue about.
  • decision Teams that normalise mixed currencies in their cleaning stage are choosing to destroy the one artefact that shows which signal each endpoint trusted.

The useful part of the roamproxy write-up is the currency mess, because it is the only part of this failure that leaves something you can grep [1]. According to the post, a large storefront picks which shop to serve from some mix of IP geolocation, Accept-Language and any locale cookie you are carrying, and different endpoints resolve it differently: search on the IP, product page on the cookie, cart on the account [6]. Three currencies in one output file is therefore a transcript of which signal each handler believed [6]. Normalise it in post-processing and you have deleted your only free detector.

Then the count. The post enumerates six things a target can read off a single request arriving on a German residential exit: Accept-Language, timezone, locale-derived formatting, the storefront you get served, where your DNS query came from, and a resumed TLS session ticket [3][4][5][6][7][8]. The `country-de` flag in the proxy username sets exactly one of them [2]. Five to one is the whole argument [11].

The sharpest of the five is not exotic. Playwright's default Accept-Language is `en-US,en;q=0.9` [3], which is character for character the value the author's own profile table assigns to the `us` exit [10][12]. `requests` and `httpx` send the header not at all [3]. A real German Chrome sends four tags with descending q-values [3]. The German exit does not make the client German; the client keeps announcing its own country underneath a network layer that claims another.

Two of the six come with the author's own caveats, and they are worth keeping. The DNS split, where `socks5://` resolves locally so a CDN sees a query from California and a connection from Frankfurt, is described as something most sites do not act on; the harm is landing on the wrong edge, with a different A/B bucket and a different cache [7]. A TLS ticket issued to an IP in Ohio and resumed from Frankfurt is called a small oddity, visible at the handshake before any HTTP [8]. Neither of those blocks you. They corrupt data you have already collected and will misattribute to the target.

The number to handle carefully is the 8%. The soft-failure model around it is coherent: more challenges, fewer cached responses, sticky sessions that expire early, A/B assignment to the control group, and no error anywhere to tell you [13]. But the claim that your success rate sits 8% below where it should be, permanently, arrives without a measurement behind it [13], and it is the line most likely to get quoted back. Taken at face value it is roughly one request in twelve or thirteen that should have worked and did not [14], with nothing in the log to mark it.

The remedy the post offers is a table keyed by exit country holding language, timezone and locale, with nothing else in the codebase permitted to set those three [10]. It is cheap. The reason it goes undone is that IP reputation has a vendor attached and header coherence does not: rotation is a purchase, and a profile table is a refactor of code you already shipped [9].

What to watch

  • Measured block or challenge rates for matched versus mismatched Accept-Language on the same exits, since the 8% shortfall is currently an assertion with no data behind it.
  • Whether headless browser tooling starts deriving timezone and locale from the proxy exit rather than the host machine by default.
  • Whether large storefronts consolidate locale resolution onto one signal, which would remove the mixed-currency output that makes this diagnosable at all.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence42
Adoption
Insufficient
Hype gap+25
Incentives65
Confidence55
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    A reader described a scraper pulling Amazon listings through a rotating residential proxy that returned prices in three different currencies inside one run; the discussion thread treated it as a data-cleaning problem.

    ReportedSupportedSource: dev.to post by roamproxyView cited source
  2. [2]

    Geo-targeting a proxy is a single line of configuration, for example country-de in the proxy username.

    ReportedSupportedView cited source
  3. [3]

    Python's requests sends no Accept-Language header and httpx sends none; Playwright sends en-US,en;q=0.9 by default; a real German Chrome sends de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7.

    ReportedSupportedView cited source

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · August 25, 2026

    Your Proxy Is in Germany. The Rest of Your Client Isn't.

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Loading related stories