飘在云端

东西南北,海角天涯

· 备查 · · 1584次浏览

谷歌浏览器使用命令行参数启用独立代理

测试环境:win 10 1903,Chrome 80.0.3987.87(正式版本)(64 位)
测试时间:2020-2-11 22:55:31
测试结果:通过
测试详情:系统代理为直连,未使用任何代理的情况下,本地架设一台socks5代理服务,127.0.0.1:1080,给谷歌浏览器增加启动参数单独指定本地代理开放的端口,成功连接国际互联网

启动参数:

--no-proxy-server 不使用任何代理,强制直连,该参数会覆盖任何代理设置
--proxy-auto-detect 自动检测代理,如果还提供了--proxy-server,则忽略此标志
--proxy-server="socks://127.0.0.1:1080" 格式如下:代理协议://代理地址:代理端口号

其中,代理协议可选值:http、socks、socks4、socks5
当不指定协议时,缺省值默认使用http代理
--proxy-server="127.0.0.1:1080"
等效于
--proxy-server="http://127.0.0.1:1080"
此外,socks值等效于socks5值。

  • 进阶设置:真全局代理
--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE 127.0.0.1"

将谷歌浏览器任何本地DNS请求忽略(包含扩展、插件),除了代理服务器本身

上面的意思,就是防止谷歌浏览器某些组件绕过全局,因为谷歌浏览器的插件和扩展发出的本地DNS请求,在使用了--proxy-server="socks://127.0.0.1:1080"还是可以绕过代理,谷歌为了防止这种情况,就增加了上面的那个命令行开关,可以把谷歌浏览器的本地所有DNS请求重定向到一个无效地址:NOTFOUND,除了 127.0.0.1,因为我们所有的DNS都是要交给本地代理socks5,通过socks5传到远端代理服务器,做远端DNS解析,防止DNS污染。

最终效果就是:谷歌浏览器实现了真正的全局
上面的127.0.0.1 这个地址,取决于你前面使用的代理服务器,比如你前面的代理服务器使用的是 --proxy-server="socks5://172.16.6.12",那么EXCLUDE后面跟的就是你使用的本地代理服务器,注意空格。

附相关调试页面和工具,用于调试DEBUG代理详细解析过程:

网络请求记录工具:
chrome://net-export/
设置好--host-resolver-rules =xxxxxx之后,在上面那个记录页面,下面有3个单选框的选项,选 Include raw bytes (will include cookies and credentials),确保完整记录所有调试信息,下面那行日志大小限制请留空不做限制,我这边测试了只请求了1个国际网址+2个国内网址,日志大小就已经 7.2 MiB

下面那行的页面已经被谷歌移除了,不再支持,只能清除相关缓存了,功能都被移到chrome://net-export/
chrome://net-internals/#proxy

chrome://net-export/点击开始后,访问你要测试的网址,访问结束后,再返回chrome://net-export/停止记录,会得到一个json格式的调试数据,数据格式没做优化,很难查找分析,所以要用下面那个网站读取json还原格式

调试数据读取网站:
https://netlog-viewer.appspot.com

上传本地调试数据,就会被分类格式化了,就可以看到类似 chrome://net-internals/#proxy的界面了

评论 (0条)