Skip to content

feat: send HTTP/2 HEADER_TABLE_SIZE and MAX_CONCURRENT_STREAMS from browser fingerprints - #560

Open
barjin wants to merge 4 commits into
masterfrom
feat/http2-header-table-size
Open

barjin wants to merge 4 commits into
masterfrom
feat/http2-header-table-size

Conversation

@barjin

@barjin barjin commented Oct 6, 2026

Copy link
Copy Markdown
Member

Uses the new reqwest HTTP/2 settings (pinned to git until released) and fixes the WINDOW_UPDATE of older Chrome and Firefox profiles.

Closes #385

barjin added 3 commits October 5, 2026 17:04
Adds `header_table_size` to `Http2Fingerprint` and sets it to 65536 for the
Chrome and Firefox profiles, matching what both browsers send in their
SETTINGS frame. reqwest is patched to the commit exposing
`http2_header_table_size` (seanmonstar/reqwest#3105) until it is released,
and the hyper-util and tower-http forks are bumped to their synced heads
to satisfy its requirements.

Related to #385
… fingerprints

`initial_connection_window_size` is the target window, h2 subtracts the
default 65535 to get the WINDOW_UPDATE increment. The older Chrome and
Firefox profiles passed the on-wire increment instead, so they emitted
15597570 and 12451842 rather than the 15663105 and 12517377 the browsers
send. chrome151 and ios_18 already use the full window size.

Related to #385
Chrome 100 to 116 send 1000 and iOS sends 100, using the
`http2_max_concurrent_streams` from the same reqwest change.

Related to #385
@barjin
barjin requested a review from Pijukatel October 6, 2026 09:43
@barjin barjin self-assigned this Oct 6, 2026
@apify-service-account apify-service-account added the t-tooling Issues with this label are in the ownership of the tooling team. label Oct 6, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

t-tooling Issues with this label are in the ownership of the tooling team.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

HTTP/2 SETTINGS values are not fingerprinted — all profiles share hyper defaults

2 participants