Tags: sardanioss/httpcloak
Tags
Add session.Fork(n) and bump to 1.6.0-beta.13 Fork creates N sessions sharing cookies and TLS session caches but with independent connections, simulating multiple browser tabs from the same browser instance.
Add session.Warmup() and bump to 1.6.0-beta.12 Warmup simulates a real browser page load — fetches HTML, discovers subresources (CSS, JS, images, fonts), and fetches them in batches with Chrome-accurate headers, priorities, and timing. Cookies, TLS sessions, cache state, and client hints accumulate naturally through the existing Request() pipeline. Wired through C FFI and all language bindings (Python, Node.js, .NET).
Auto-cleanup proxy QUIC resources when connection dies When a QUIC connection through SOCKS5 proxy closes (timeout, error, idle), the associated quic.Transport and udpbara connection now get cleaned up automatically via a goroutine watching conn.Context().Done(). Previously these resources only cleaned up on session.Close()/Refresh(), so failed requests with retries + protocol fallback (H3→H2→H1) accumulated leaked goroutines (quic.Transport reader + udpbara relay) that burned CPU on Linux due to ECN/GSO syscalls on dead connections.
Fix quic.Transport goroutine leak in SOCKS5 H3 proxy path Each dialQUICWithProxy call created a per-connection quic.Transport that was never tracked or closed, leaking internal goroutines (packet reader, timers). On Linux these goroutines spin on closed sockets after cleanup, causing ~47% CPU on multi-core machines. Fix: bundle each udpbara.Connection with its quic.Transport in a proxyQUICConn struct so both are properly closed together — quic.Transport first (sends CONNECTION_CLOSE), then udpbara (closes sockets). Also remove the QUIC_GO_DISABLE_RECEIVE_BUFFER_WARNING suppression so users see the warning when Linux UDP buffers are too small for QUIC.
Fix CI: run go mod tidy after dropping local replaces The go.sum was generated with local replace directives and lacks checksums for remote sardanioss/* modules. Running go mod tidy resolves them from the Go proxy.
Add auto Content-Type detection for JSON POST bodies
When Post(), Request(), or their async/streaming variants are called with
a string body that starts with { or [, automatically set Content-Type to
application/json if not already set. Case-insensitive check for existing
Content-Type header. Does not affect byte[] body paths or override
explicitly set headers.
Fix clib version to 1.6.0-beta.4 and fix bogus fallback values in get… …ter functions httpcloak_version() was still returning "1.5.10". Also fixed httpcloak_session_get_proxy/tcp_proxy/udp_proxy and httpcloak_session_get_header_order which returned "1.5.10" as fallback on nil session instead of proper error JSON.
PreviousNext