Go SHP Client
Overview
Chrome Extension for a go lang secure HTTP proxy.
This is the extension for go-shp (https://github.com/winguse/go-shp). A open source secure HTTP proxy written in golang. The source code can be found in https://github.com/winguse/go-shp/tree/master/extension . This extension include features: 1. set proxy on / off for Chrome 2. rule base proxy selection 3. latency test to select proxy server ## Extension Permissions ### `proxy` Used to configure the browser's system-wide proxy settings via `chrome.proxy.settings.set()`. The extension generates a PAC (Proxy Auto-Config) script from the user's routing rules and proxy host list, and installs it so Chrome knows which requests to tunnel through the proxy and which to send direct. Without this permission the extension cannot route any traffic. ### `webRequest` Used to register a `chrome.webRequest.onAuthRequired` listener. Chrome's proxy API (PAC script) has no mechanism to embed credentials — it only specifies which proxy host to use. When the proxy server responds with HTTP 407 Proxy Authentication Required, Chrome fires this event. The extension intercepts the challenge and supplies the configured username and token so Chrome can retry the request with a `Proxy-Authorization` header automatically. ### `webRequestAuthProvider` Required in Manifest V3 to use the `asyncBlocking` extra info string when calling `chrome.webRequest.onAuthRequired.addListener()`. This grants the listener the ability to asynchronously return `authCredentials` back to Chrome. Without it, the `onAuthRequired` callback cannot actually provide credentials — it can only observe the event. ### `storage` Used to persist the user's configuration across browser sessions via `chrome.storage.local`. This includes proxy host lists, routing rules, credentials, and the latency history used to rank proxy hosts by speed. Without this permission settings would be lost every time the browser is closed. ### `alarms` Used to schedule periodic proxy health checks via `chrome.alarms`. The background service worker probes each configured proxy host at a user-defined interval (default: every minute) to measure latency and update host rankings. Service workers cannot use `setInterval` reliably, so `alarms` is the correct API for recurring background work in MV3. ### Host Permission — `<all_urls>` This extension is designed for self-hosted SHP (Secure HTTP Proxy) deployments. Users run their own proxy servers at arbitrary hostnames and ports — there is no fixed domain that can be listed. The `<all_urls>` host permission is therefore required for the following reasons: - The `webRequest.onAuthRequired` listener must cover all URLs so that 407 authentication challenges from any user-configured proxy host are intercepted, regardless of what domain the user has deployed their server on. - The PAC script routes traffic through proxy hosts that are unknown at extension-build time. The browser needs host permission for the destinations being proxied. - The background health-check probes send requests to `http://<proxy-host><authBasePath>/407` to measure latency. Since the proxy host is user-configured, no specific hostname can be declared in the manifest. No page content is ever read or modified. The extension only observes request metadata (URL, host) and proxy authentication events — it never accesses response bodies or injects scripts into web pages.
0 out of 5No ratings
Details
- Version1.0.1
- UpdatedJuly 30, 2026
- Offered byYingyu
- Size93.59KiB
- LanguagesEnglish
- Developer
Email
zippy.indent2u@icloud.com - Non-traderThis developer has not identified itself as a trader. For consumers in the European Union, please note that consumer rights do not apply to contracts between you and this developer.
Privacy
This developer declares that your data is
- Not being sold to third parties, outside of the approved use cases
- Not being used or transferred for purposes that are unrelated to the item's core functionality
- Not being used or transferred to determine creditworthiness or for lending purposes
Support
For help with questions, suggestions, or problems, please open this page on your desktop browser