Skip to content

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

Merged
barjin merged 4 commits into
masterfrom
feat/http2-header-table-size
Oct 9, 2026
Merged

barjin merged 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
@barjin
barjin merged commit 5622ad5 into master Oct 9, 2026
52 checks passed
@barjin
barjin deleted the feat/http2-header-table-size branch October 9, 2026 09:44
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

3 participants