- Introduced ARCHITECTURE.md to outline the system architecture and flow. - Created CONFIGURATION.md detailing configuration options and their meanings. - Added DOCKER.md for Docker setup instructions and usage. - Developed GETTING_STARTED.md to guide users through initial setup and usage. - Included LAN_SHARING.md to explain how to enable LAN sharing for the proxy. - Established SECURITY.md to highlight security practices and responsibilities. - Compiled TROUBLESHOOTING.md to assist users in resolving common issues. - Translated documentation into Persian, including ARCHITECTURE.md and CONFIGURATION.md.
3.9 KiB
Troubleshooting
Start with the symptom you see. Most problems are configuration, certificate trust, or an outdated Apps Script deployment.
Certificate Errors
Symptoms:
- Browser says the connection is not private.
- Telegram or another app works, but normal HTTPS sites do not.
- Chrome or Edge still fails after you installed the certificate.
Fix:
- Make sure the proxy has run at least once so
ca/ca.crtexists. - Install
ca/ca.crtas a trusted root certificate. - Fully close and reopen the browser. On Windows, check Task Manager for background Chrome or Edge processes.
- For Firefox, import the CA separately from Settings -> Privacy & Security -> Certificates -> View Certificates -> Authorities.
You can also run:
python main.py --install-cert
unauthorized
The shared secret does not match.
Fix:
- Open apps_script/Code.gs.
- Find
const AUTH_KEY = "...";. - Make sure it exactly matches
auth_keyinconfig.json. - Deploy a new Apps Script deployment after changing apps_script/Code.gs.
Config not found
Run the wizard:
python setup.py
Or copy config.example.json to config.json and fill script_id plus auth_key.
502 Bad JSON
Google returned HTML or another unexpected response instead of relay JSON.
Common causes:
- Wrong Deployment ID.
- Apps Script daily quota is exhausted.
- You edited apps_script/Code.gs but did not create a new deployment.
- The deployment access setting is not Anyone.
Fix:
- Create a new Apps Script deployment.
- Copy the new Deployment ID into
config.json. - Confirm the deployment is a Web App with Execute as: Me and Who has access: Anyone.
- If quota is exhausted, wait for the quota reset or add more deployments with
script_ids.
Connection Timeout
The current google_ip may be blocked or slow on your network.
Run:
python main.py --scan
Then set the recommended IP in config.json:
"google_ip": "RECOMMENDED_IP"
Restart the proxy.
Slow Browsing
Try these in order:
- Install all dependencies from requirements.txt, especially
h2. - Run
python main.py --scanand updategoogle_ip. - Deploy multiple Apps Script projects and use
script_ids. - Keep
log_levelatINFOunless debugging. - Use an exit node only when needed, because it adds another hop.
Browser Proxy Is Set But Sites Do Not Load
Check:
- The terminal says HTTP proxy is listening on
127.0.0.1:8085. - Browser proxy type is HTTP, not HTTPS.
- HTTPS traffic is also configured to use the same HTTP proxy.
- The CA is installed and the browser was fully restarted.
SOCKS5 Works Differently Than HTTP Proxy
Some SOCKS5 clients resolve domains locally and only send raw IPs to the proxy. That can break routes that depend on hostnames.
Use HTTP proxy 127.0.0.1:8085 for browsers and apps that support it. This is especially important for Telegram-style cases where hostname handling matters.
YouTube Opens But Video Playback Fails
Try:
"youtube_via_relay": true
Then restart the proxy. This routes YouTube through the Apps Script relay instead of the direct Google SNI-rewrite path. It may use more Apps Script executions.
If exit_node.mode is full, YouTube may also be routed through the relay so the exit node can handle all traffic.
Docker Certificate Confusion
The container generates ca/ca.crt into the host ./ca volume, but certificate installation inside the container does not trust it on your host OS.
Install ca/ca.crt manually on the host browser or OS. See Docker Guide.
Reset The Local Certificate
To remove the certificate from trust stores:
python main.py --uninstall-cert
To generate a fresh CA, stop the proxy and delete the ca/ folder. The next run will create a new one.
Never share the ca/ folder.