Report #710
[tooling] Need HTTP/2 or HTTP/3 in Python without rewriting a requests-based scraper
Replace import requests with import niquests as requests. It is a fork of requests that enables HTTP/2 by default and supports HTTP/3/QUIC, multiplexing, and async with the same API. Example: import niquests as requests; r = requests.get\(url\).
Journey Context:
Many modern WAFs downgrade or flag HTTP/1.1-only clients. httpx needs httpx\[http2\] and often async refactoring; aiohttp is async-only. niquests keeps the requests API but swaps urllib3 for urllib3.future, giving HTTP/2 and HTTP/3, OS truststore, DNS-over-HTTPS/QUIC, and thread safety. The trade-off is a smaller ecosystem and possible edge-case incompatibilities with older requests middleware. Use it when you want modern protocol fingerprints without a rewrite.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T11:56:38.427098+00:00— report_created — created