如何解决Google Chrome仅HTTP流量走代理配置不生效的问题
现有代码无法生效的核心问题
manifest.json存在拼写错误:background字段下的配置键应为scripts,你写的skripts导致背景脚本完全无法加载- Chrome 88及以上版本已默认停止支持Manifest V2扩展,仅开发者模式下可临时加载,稳定性差
- 你当前的PAC脚本逻辑仅对
www.site.com域名生效,未匹配所有HTTP站点;固定代理配置未明确区分HTTP/HTTPS协议规则
解决方案
方案1:使用Chrome启动参数实现(最简单,无需开发扩展)
可以直接通过启动参数实现仅HTTP站点走127.0.0.1:8080代理的需求,操作步骤:
- 关闭所有已运行的Chrome进程,确保无残留后台进程
- 给Chrome快捷方式的目标字段追加启动参数:
--proxy-server="http=127.0.0.1:8080"
- 双击修改后的快捷方式启动Chrome即可,此时所有HTTP站点流量走指定代理,HTTPS站点直连。
方案2:修复扩展(Manifest V3版本适配新版Chrome)
manifest.json
{ "manifest_version": 3, "name": "HTTP专属代理", "description": "仅HTTP流量走127.0.0.1:8080代理", "version": "1.0", "background": { "service_worker": "background.js" }, "icons": { "128": "128.png" }, "permissions": [ "proxy", "storage" ], "host_permissions": [ "<all_urls>" ] }
background.js
chrome.runtime.onStartup.addListener(setProxy); chrome.runtime.onInstalled.addListener(setProxy); function setProxy() { // 方式A:固定代理规则,仅HTTP走代理 const config = { mode: "fixed_servers", rules: { proxyForHttp: { host: "127.0.0.1", port: 8080 }, bypassList: ["<local>", "https://*/*"] } }; // 方式B:PAC脚本实现,可自定义更复杂规则 // const pacScript = `function FindProxyForURL(url, host) { // if (url.substring(0, 5) === 'http:') { // return 'PROXY 127.0.0.1:8080'; // } // return 'DIRECT'; // }` // const config = { // mode: "pac_script", // pacScript: { // mandatory: true, // data: pacScript // } // } chrome.proxy.settings.set({value: config, scope: 'regular'}, () => { if (chrome.runtime.lastError) { console.error("代理设置失败:", chrome.runtime.lastError); } }); }
修改后开启Chrome开发者模式,加载已解压的扩展文件夹即可生效。
验证方法
访问http://httpbin.org/ip查看返回IP为代理出口IP,访问https://httpbin.org/ip查看返回IP为本地直连出口IP,即代表配置成功。
内容的提问来源于stack exchange,提问作者Jony Wahhtang
相关产品推荐
相关产品推荐

