Usabletested 2026-05-24 · public-tough-v1 · proxy: none

HTTPX

Modern sync/async HTTP for Python, same wall as Requests.

HTTPX is the modern Python HTTP client — sync and async APIs, HTTP/2 support, sane defaults. We ran httpx 0.28.1 (httpx.Client.get, redirects on, cookies kept) against the 21-site public corpus with no proxy.

It passed 3 of 21: Amazon search, Target search, and Rightmove. Amazon is the interesting one — plain Requests got a 503 on the same target minutes earlier, so small differences in default headers and protocol negotiation do move the needle at the margin. Everything else failed the same way it failed for Requests: 403s from eBay, Tripadvisor, Zillow, Indeed, Yelp, Trustpilot, Craigslist, and Wikipedia, 429s from Expedia and Realtor and Yahoo, robot checks from Walmart, AliExpress, Airbnb, CoinMarketCap, Reddit, and YouTube.

Like Requests, it fails fast and honestly — most refusals in well under half a second, with clean status codes.

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

  • +Amazon search passed where plain Requests drew a 503 — default header/protocol differences are measurable.
  • +Target and Rightmove passed with zero configuration.
  • +Clean, fast failure signals; the async API makes it the natural high-throughput baseline.

What failed

  • 18 of 21 targets blocked with the same 403/429/captcha wall that stops every plain HTTP client.
  • Wikipedia 403s the default User-Agent, same as Requests.
  • No TLS impersonation — protected sites identify it immediately.

When to use it

The default pick for new Python scraping code that talks to APIs and unprotected pages, especially when you want async. Against bot protection it needs the same help Requests does.

A better Requests for new code; identical odds against real protection.

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 · httpx-common-sites-v1-20260524

3/21 passedversion 0.28.1proxy: none2026-05-24

adapter: httpx.Client.get

TargetResultDetailLatency
amazon.comamazon_search_laptoppassstatus 200226 ms
walmart.comwalmart_search_laptopfailblock marker: “Robot or human”317 ms
ebay.comebay_search_laptopfailexpected 200, got 40345 ms
aliexpress.comaliexpress_search_laptopfailblock marker: “Robot”1.8 s
target.comtarget_search_laptoppassstatus 200861 ms
booking.combooking_search_parisfailexpected 200, got 202103 ms
airbnb.comairbnb_search_parisfailblock marker: “captcha”1.8 s
tripadvisor.comtripadvisor_restaurants_parisfailexpected 200, got 403184 ms
expedia.comexpedia_hotels_parisfailexpected 200, got 429219 ms
zillow.comzillow_homes_for_salefailexpected 200, got 403133 ms
realtor.comrealtor_new_yorkfailexpected 200, got 429273 ms
rightmove.co.ukrightmove_londonpassstatus 200494 ms
indeed.comindeed_python_remotefailexpected 200, got 40339 ms
yelp.comyelp_sf_restaurantsfailexpected 200, got 403119 ms
trustpilot.comtrustpilot_amazonfailexpected 200, got 40320 ms
newyork.craigslist.orgcraigslist_nyc_bikefailexpected 200, got 403513 ms
finance.yahoo.comyahoo_finance_aaplfailexpected 200, got 429156 ms
coinmarketcap.comcoinmarketcap_homefailblock marker: “captcha”33 ms
reddit.comreddit_webscrapingfailblock marker: “Please wait for verification”116 ms
youtube.comyoutube_search_scrapingfailblock marker: “captcha”711 ms
en.wikipedia.orgwikipedia_web_scrapingfailexpected 200, got 403149 ms