TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/klzgrad/naiveproxy/llms.txt
Use this file to discover all available pages before exploring further.
naive binary is the NaïveProxy client. It connects to a frontend server running on your VPS and tunnels your traffic through Chromium’s network stack, making it indistinguishable from ordinary Chrome browser activity. You can configure it with a JSON file or command-line flags, and choose from several local listener protocols depending on your use case.
Basic Usage
Download the latestnaive binary for your platform from the NaïveProxy releases page. Always use the latest release so the TLS and HTTP signatures remain identical to the current version of Chrome.
The simplest way to get started is to create a config.json file in the same directory as the binary:
./naive — it automatically picks up config.json from the current directory if no arguments are given.
- JSON config file
- Command-line flags
Create Run with the default config file:Or point to a specific path:
config.json in the same directory as the naive binary:Listen Protocols
Thelisten field (or --listen flag) controls the protocol and address that naive uses to accept local connections. The URI format is:
LISTEN-PROTO is one of: socks, http, redir. Default values when omitted: protocol socks, address 0.0.0.0, port 1080.
SOCKS5
Starts a SOCKS5 proxy server. Most applications and system proxy settings support SOCKS5 natively.HTTP Proxy
Starts an HTTP proxy server (supports bothCONNECT tunneling and plain HTTP requests).
Transparent Redirect (redir)
The
redir listener is Linux only and requires iptables rules to redirect traffic to it. No authentication is applied.iptables to redirect traffic to the listener port.
Redirecting locally originated traffic:
redir listener also activates a built-in DNS resolver on the same UDP port. Similar iptables rules can redirect DNS queries to this resolver, which returns artificial addresses that are translated back to original domain names in proxy requests and resolved remotely.
The artificial DNS results are not saved for privacy. Restarting the resolver may cause downstream clients to cache stale results.
Proxy Protocols
Theproxy field (or --proxy flag) specifies the upstream server to route traffic through. The full grammar from USAGE.txt is:
Recommended. HTTP/2 CONNECT over TLS. Provides the strongest camouflage and security, with NaïveProxy’s padding protocol negotiated automatically.
HTTP/3 CONNECT over QUIC. Use this if
https works poorly on your network (e.g., QUIC is less likely to be throttled on some connections). Note: QUIC proxies cannot follow TCP-based proxies in a chain.Plain HTTP proxy. No TLS encryption, no NaïveProxy padding. Use only on trusted networks.
SOCKS proxy. Does not support chaining, authentication, or NaïveProxy padding.
Proxy Chaining
You can route traffic through multiple proxies in sequence by separating proxy URIs with commas:- QUIC cannot follow TCP-based proxies in a chain.
- No loops — you must ensure the chain does not cycle back to a previous proxy.
- SOCKS proxies do not support chaining, authentication, or NaïveProxy padding.
Multiple Listeners
To listen on more than one local port simultaneously, provide multiplelisten values. Each listener is paired with the proxy value at the same position.
- JSON config file
- Command-line flags
listen values must match the number of proxy values when both are arrays.
Timeout Settings
After this many seconds, a tunnel connection is retired: new streams are sent through new connections, and the old tunneled streams are forcibly closed by the idle timeout if idle, or by the tunnel timeout if still active. The retired connection is closed once all its tunneled streams finish.This setting helps with CGNAT networks where long-lived connections get stuck, but it will break long-lived TCP protocols such as SSH.
After being idle for this many seconds, tunneled streams are forcibly closed to allow timely cleanup of retired connections. A stream idle long enough is assumed to be unused, so the forced closure has minimal impact.
Other Options
Appends extra headers to requests sent to the proxy server. Separate multiple headers with CRLF (
\r\n).Statically maps a hostname to an IP address, bypassing DNS for that host. Useful when the proxy hostname itself needs a known IP.
The CIDR range used by the built-in DNS resolver (activated with the
redir listener). Artificial addresses are allocated from this range.Disables X25519Kyber768 post-quantum key agreement. Post-quantum key agreement is enabled by default. Pass this flag only if you experience compatibility issues.
Logging
By default,naive produces no logs to protect user privacy. Logging can be enabled selectively for debugging.
Save the log to a file at the given path. If the path is empty (
--log=), logs are printed to the console instead.Save a Chromium NetLog file for detailed network-level inspection. View the captured log at netlog-viewer.appspot.com.
Save TLS session keys to a file for decrypting traffic in Wireshark.
Insecure Concurrency
Open
N concurrent tunnel connections to improve robustness under poor network conditions (e.g., high packet loss). More connections increase detectability.If you must use this option, start with N=2 to see if it resolves your issues. Values above 4 are strongly discouraged.