package executor import "net/http" // scrubProxyAndFingerprintHeaders removes all headers that could reveal // proxy infrastructure, client identity, or browser fingerprints from an // outgoing request. This ensures requests to Google look like they // originate directly from the Antigravity IDE (Node.js) rather than // a third-party client behind a reverse proxy. func scrubProxyAndFingerprintHeaders(req *http.Request) { if req == nil { return } // --- Proxy tracing headers --- req.Header.Del("X-Forwarded-For") req.Header.Del("X-Forwarded-Host") req.Header.Del("X-Forwarded-Proto") req.Header.Del("X-Forwarded-Port") req.Header.Del("X-Real-IP") req.Header.Del("Forwarded") req.Header.Del("Via") // --- Client identity headers --- req.Header.Del("X-Title") req.Header.Del("X-Stainless-Lang") req.Header.Del("X-Stainless-Package-Version") req.Header.Del("X-Stainless-Os") req.Header.Del("X-Stainless-Arch") req.Header.Del("X-Stainless-Runtime") req.Header.Del("X-Stainless-Runtime-Version") req.Header.Del("Http-Referer") req.Header.Del("Referer") // --- Browser / Chromium fingerprint headers --- // These are sent by Electron-based clients (e.g. CherryStudio) using the // Fetch API, but NOT by Node.js https module (which Antigravity uses). req.Header.Del("Sec-Ch-Ua") req.Header.Del("Sec-Ch-Ua-Mobile") req.Header.Del("Sec-Ch-Ua-Platform") req.Header.Del("Sec-Fetch-Mode") req.Header.Del("Sec-Fetch-Site") req.Header.Del("Sec-Fetch-Dest") req.Header.Del("Priority") // --- Encoding negotiation --- // Antigravity (Node.js) sends "gzip, deflate, br" by default; // Electron-based clients may add "zstd" which is a fingerprint mismatch. req.Header.Del("Accept-Encoding") }