Proxy tier benchmark Targets

Do you need a proxy to scrape Steam store pages?

High-defence commercial sites · minimum viable tier: no proxy needed · measured 2026-08-18

Not for occasional fetches, and yes for sustained collection — this is the one target in the study where those two answers differ sharply. The Counter-Strike 2 store page returned the expected content on 60 of 60 requests: 100% unproxied and 100% on every one of the six configurations tested. But this benchmark fetches 10 pages per arm, and Steam's defence is a per-IP rate limit that 10 requests never approach. Measured 2026-08-18.

What was measured

URL https://store.steampowered.com/app/730/CounterStrike_2/
Content assertion Counter-Strike 2 on Steam
Arms 6
Rounds per arm 10
Requests 60
Measured 2026-08-18, 15:38–18:09 UTC
Benchmark host DigitalOcean droplet, New York (nyc3)

A request counts as a success only if the expected content is present. An HTTP 200 carrying a challenge page, an empty body or the wrong page is a failure, because it is not a page you can use.

This measures whether a tier works, not long-run stability under sustained load. Ten requests per arm, at a two-second floor, never approach a per-IP rate limit — which is the thing a rotating pool exists to defeat.

Results by arm

Arm Success p50 p95 Bytes per success Outcomes
direct (no proxy) 100% 375 ms 536 ms 184,366 success 10
datacenter, one pinned exit 100% 448 ms 805 ms 184,437 success 10
datacenter, rotating exit 100% 787 ms 1,828 ms 183,908 success 10
anti-detect, one pinned exit 100% 902 ms 1,783 ms 183,939 success 10
anti-detect, rotating exit 100% 658 ms 1,700 ms 184,191 success 10
residential, rotating exit 100% 1,591 ms 1,873 ms 184,364 success 10

What protects this target

Nothing visible at this volume — no challenge signature, no 403, no rate-limit status across all 60 requests, with a median unproxied response of 375 ms.

What actually protects it appears only under load, and BotProxy's own production traffic measures it. DIMENSIONS.md reports 5.4 million requests against steampowered.com grouped into day-long observation windows: when the same workload is spread thinly across many exit addresses the failure rate is 2.4%, and when it is concentrated onto few addresses it is 73.3% — a 71-point swing, with a Spearman rank correlation of 0.78 between requests-per-exit-IP and failure. Same requests, same rate, differing only in how many IP addresses carried them.

That is the clearest per-IP throttle in the corpus, and this benchmark cannot see it. A page reporting only the 100% figure would give the wrong answer to anyone collecting the Steam catalogue.

robots.txt status

The URL measured is allowed by the host's robots.txt.

Status allowed
File https://store.steampowered.com/robots.txt
Crawl-delay not declared
Fetched as the benchmark's own User-Agent
Note robots.txt 303 bytes via benchmark_ua

Practical setup

If you are fetching a few store pages, fetch them directly. If you are collecting the catalogue, the variable that matters is not the proxy tier -- every tier scored 100% here — but how many exit addresses the requests are spread across. Use a fresh session id per request so each takes a different exit (see sessions); a fixed session id pins you to one address and reproduces the 73.3% case. Pace the work with daily limits rather than bursting.

Limits of this result

  • The 2.4% / 73.3% figures come from production traffic, not from this benchmark, and are derived from response-size distributions rather than status codes; they are directional evidence about the target's behaviour, not precise block rates.
  • Ten rounds per arm in a single three-hour window on 2026-08-18. Anti-bot behaviour drifts; a result older than a few months is a historical record, not a current one.
  • One exit geography. Every request left from a US datacenter host or a US exit, so nothing here describes how this target answers traffic from elsewhere.
  • The unproxied arm ran from a clean, previously unused cloud IP with no accumulated reputation. It is a best case a production scraper will not sustain.

Run date: 2026-08-18 · Full benchmark report · Harness and raw data · All 32 targets

The 60 rows behind this page are in results/six-arm/raw.csv; filter them with grep '^[^,]*,steam_app,' raw.csv.


Test your own target

The result above describes one URL on one day. Paste your own URL into the live tester and see the real response before creating an account.

Test your target See plans