如何避免本地主机的 Google Chrome 代理绕过?

如何避免本地主机的 Google Chrome 代理绕过?

在 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。

相关内容