wreq
Real fingerprint, young edges.
wreq is a Rust HTTP client with browser-grade TLS/HTTP2 emulation. We ran 0.11.3 through its blocking client against the 21-site corpus, no proxy.
It passed 2 of 21 — but the two are interesting. It was the only tool in the entire test, including every browser, to land Yahoo Finance directly: everything else was redirected to Yahoo's consent wall. Its emulation profile evidently threads that needle. Target passed as well.
The sharp edge: Rightmove — a site every other tool passed — answered wreq with HTTP 400. That is a malformed-request-shape response, not bot detection, and it says the defaults still have quirks. The rest of the corpus failed with the standard 403/429/captcha wall, plus a marker miss on AliExpress.
Test conditions
21 real public sites (public-tough-v1), 2026-05-24, no proxy, single residential IP, Linux. Deterministic validators: expected status code plus required and forbidden content markers. Pass rates measure the tool and the network position together. Without a proxy, results reflect how each site's protections treat one plain residential connection as much as the tool itself.
What worked
- +Only tested tool to reach Yahoo Finance without hitting the consent redirect.
- +TLS emulation is real; failures on protected sites look like curl_cffi's, not like plain Requests'.
- +Fast — refusals typically arrived in under 300 ms.
What failed
- −2/21 overall, below curl_cffi's 5/21 on the same day.
- −Rightmove returned HTTP 400 — the only tool that failed that target at all; request-shape defaults need care.
- −Young project surface: Python bindings, docs, and defaults are less settled than curl_cffi's.
When to use it
When curl_cffi's profiles don't fit and you can invest in tuning request shape per target — its fingerprint demonstrably reaches places others can't, but expect to debug defaults.
Promising fingerprint, sharp edges on defaults. Watch it, tune it, don't assume it.
Run evidence
Every attempt below is backed by saved artifacts: request/response metadata, body content, and (for browsers) screenshots. Raw JSON and artifacts live in the runner data directory.
Run · wreq-common-sites-v1-20260524
adapter: wreq.blocking.Client.get
| Target | Result | Detail | Latency |
|---|---|---|---|
| amazon.comamazon_search_laptop | fail | expected 200, got 503 | 170 ms |
| walmart.comwalmart_search_laptop | fail | block marker: “Robot or human” | 425 ms |
| ebay.comebay_search_laptop | fail | expected 200, got 403 | 108 ms |
| aliexpress.comaliexpress_search_laptop | fail | expected content missing | 170 ms |
| target.comtarget_search_laptop | pass | status 200 | 1.5 s |
| booking.combooking_search_paris | fail | expected 200, got 202 | 284 ms |
| airbnb.comairbnb_search_paris | fail | block marker: “captcha” | 278 ms |
| tripadvisor.comtripadvisor_restaurants_paris | fail | expected 200, got 403 | 206 ms |
| expedia.comexpedia_hotels_paris | fail | expected 200, got 403 | 219 ms |
| zillow.comzillow_homes_for_sale | fail | expected 200, got 403 | 222 ms |
| realtor.comrealtor_new_york | fail | expected 200, got 429 | 218 ms |
| rightmove.co.ukrightmove_london | fail | expected 200, got 400 | 203 ms |
| indeed.comindeed_python_remote | fail | expected 200, got 403 | 44 ms |
| yelp.comyelp_sf_restaurants | fail | expected 200, got 403 | 204 ms |
| trustpilot.comtrustpilot_amazon | fail | expected 200, got 403 | 266 ms |
| newyork.craigslist.orgcraigslist_nyc_bike | fail | expected 200, got 403 | 867 ms |
| finance.yahoo.comyahoo_finance_aapl | pass | status 200 | 542 ms |
| coinmarketcap.comcoinmarketcap_home | fail | expected 200, got 403 | 20 ms |
| reddit.comreddit_webscraping | fail | expected 200, got 403 | 112 ms |
| youtube.comyoutube_search_scraping | fail | block marker: “captcha” | 166 ms |
| en.wikipedia.orgwikipedia_web_scraping | fail | expected 200, got 403 | 147 ms |