![如何避免本地主机的 Google Chrome 代理绕过?](https://linux22.com/image/1586464/%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E6%9C%AC%E5%9C%B0%E4%B8%BB%E6%9C%BA%E7%9A%84%20Google%20Chrome%20%E4%BB%A3%E7%90%86%E7%BB%95%E8%BF%87%EF%BC%9F.png)
在 Linux 上我启动了 chrome,google-chrome --proxy-server=127.0.0.1:8888 --proxy-bypass-list=""
但是它仍然没有使用代理来处理本地主机请求。
我如何强制 Chrome 使用我的本地主机代理?
你可能想知道我为什么要这样做,我正尝试使用 jmeter 记录对在本地环境中运行的应用程序的所有请求。
答案1
你几乎已经知道了,但答案位于 Chromium 文档中,用于绕过选项你正在使用。你需要减去通过在要删除的内容前面添加破折号来删除默认值,在本例中是环回接口,字面意思是<loopback>
。
常规绕过规则会指示浏览器不应使用代理的 URL,而此规则则具有相反的效果,并告诉浏览器改用代理。
完整参数是--proxy-bypass-list="<-loopback>"
有点遗憾的是,这一点没有被提及或链接起来Chromium 的网络设置页面...
答案2
最后我找到了一个巧妙的解决方案。从一开始就很清楚这是一个浏览器问题,因为我能够使用 发出请求curl --proxy
。
诀窍在于 DNS 解析也通过代理进行,因此在远程机器上进行。因此只需在远程文件中添加一个新条目/etc/hosts
:
127.0.0.1 local
然后,您可以在本地计算机上访问远程“localhost”,因为 Chrome 对这个新主机名一无所知。例如:http://local:8080/mysite
。
答案3
对于 Windows10,这是一个系统问题,本地主机将始终转到当前 PC,并且不会通过代理。
您可以在操作系统的代理设置中设置此项,以强制本地主机使用代理。
- 打开操作系统的代理设置
- 确保您的代理服务器(主机和端口)已设置。
- 下面,将有一个输入供您输入,说
Use the proxy server except for address that start with the following entries. Use semicolons(;) to separate entries
- 添加
<-loopback>
到该输入中。 - 节省。
然后您对本地主机的请求将通过代理进行。
笔记:
- 虽然浏览器默认会绕过 localhost,但即使没有此设置,CMD 也能工作。
curl -x http://{proxyserIp}:{proxyPort} http://localhost:3000
- 如果您使用某些浏览器扩展(如
SwitchyOmega
),您也可以添加<-loopback
到其中Bypass list
,它仍然有效。
参考: https://docs.microsoft.com/en-us/archive/blogs/fiddler/fiddler-and-the-ie9-release-candidate https://stackoverflow.com/questions/37700079/how-to-intercept-local-server-web-requests-using-burp-in-internet-explorer
答案4
如果您使用 mitmproxy 或 charles 来调试本地主机请求,请尝试在 macos 中使用设置了系统代理的 Chrome 69。