windows-iso-downloader/cli
Shekhar Vaidya 9e22cd8bf8 feat(cli): TLS/HTTP2 fingerprint hardening via tls-client
Three checkpoints over 17 days confirmed a stable ~20% Sentinel
rejection rate on the CLI's own requests, despite running from
residential IPs specifically to avoid ASN-based blocking. That
persistence points at TLS ClientHello fingerprinting as an additional
signal: Go's stdlib crypto/tls produces a handshake that looks nothing
like a real browser, independent of IP or headers.

Swaps the CLI's HTTP transport (session setup, SKU lookup, download
link fetch, eval link resolution) from net/http to
github.com/bogdanfinn/tls-client, which wraps utls with a maintained
Chrome browser profile (TLS + HTTP2 fingerprint together, not just
TLS -- a browser-consistent one without the other is its own tell).
Bumped msUA's claimed Chrome version to 133 to match the chosen
profile, since a mismatched UA vs. TLS fingerprint is itself
detectable.

The custom simpleCookieJar is gone -- tls-client provides its own
cookie jar. fetchEvalLinks got the same treatment for consistency,
even though the Eval Center path isn't currently blocked.

Verified: go build/vet/test all pass, and a live end-to-end run
(msdl --id 3262 --lang English) returned a real signed download link
and successfully contributed it back to the shared cache. That proves
the flow still works functionally through the new client -- it does
NOT prove the fingerprint theory, since the old client already
succeeded ~80% of the time. The real test is watching the Sentinel-
rejection-rate telemetry over a comparable multi-day window after
this ships.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-31 12:02:44 +05:30
..
catalog.go feat: add check-new-releases tools; fix msdls_v3.py; add missing 25H2 V2 China variants 2026-07-14 11:07:45 +05:30
catalog_test.go feat(cli): homepage landing screen for bare msdl; fix search substring bug 2026-07-13 12:24:43 +05:30
go.mod feat(cli): TLS/HTTP2 fingerprint hardening via tls-client 2026-07-31 12:02:44 +05:30
go.sum feat(cli): TLS/HTTP2 fingerprint hardening via tls-client 2026-07-31 12:02:44 +05:30
homepage.go feat(cli): homepage landing screen for bare msdl; fix search substring bug 2026-07-13 12:24:43 +05:30
homepage_test.go feat(cli): homepage landing screen for bare msdl; fix search substring bug 2026-07-13 12:24:43 +05:30
main.go feat(cli): homepage landing screen for bare msdl; fix search substring bug 2026-07-13 12:24:43 +05:30
microsoft.go feat(cli): TLS/HTTP2 fingerprint hardening via tls-client 2026-07-31 12:02:44 +05:30
microsoft_test.go feat(cli): direct Microsoft client (session, SKU, links, eval scrape) 2026-06-18 11:45:14 +05:30
picker.go feat(cli): combined product picker with eval products + clipboard fix 2026-06-30 07:25:03 +05:30
picker_test.go feat(cli): interactive numbered picker (stdin/stderr separated) 2026-06-18 11:53:59 +05:30