Report #388
[tooling] Scrapy spider blocked because Twisted downloader cannot spoof browser TLS/HTTP2 fingerprints
Install scrapy-impersonate, set DOWNLOAD\_HANDLERS to scrapy\_impersonate.ImpersonateDownloadHandler, add scrapy\_impersonate.RandomBrowserMiddleware, set USER\_AGENT='' and TWISTED\_REACTOR to twisted.internet.asyncioreactor.AsyncioSelectorReactor, then pass impersonate='chrome' in Request.meta.
Journey Context:
Scrapy's default Twisted downloader uses its own TLS stack, exposing a non-browser JA3/HTTP2 fingerprint. Replacing the download handler with the curl\_cffi-backed scrapy-impersonate gives every Request a real browser transport signature without rewriting spider logic. Setting USER\_AGENT to empty lets curl\_cffi choose the matching UA. This is the cleanest way to get Scrapy through TLS-fingerprinting CDNs.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-13T06:43:41.304045+00:00— report_created — created