mirror of
https://github.com/router-for-me/CLIProxyAPIPlus.git
synced 2026-03-27 22:27:28 +00:00
51 lines
1.7 KiB
Go
51 lines
1.7 KiB
Go
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")
|
|
}
|