我正在利用 Google Chrome 通过 SOCKS 代理进行端口转发。
本质上我正在通过终端运行以下命令:
ssh [email protected] -D 9999
然后在 Google Chrome 中,我将 SOCKS 代理设置为127.0.0.1:9999
。
问题是,我需要访问主机https://localhost/foo/bar
才能访问我需要访问的内容。这在 Firefox 上可以正常工作(当我修改代理设置时),但在 Chrome 上则不行。
如果我进入/etc/hosts
我的系统并创建这样的条目:
127.0.0.1 foobar
然后我可以转到https://foobar/foo/bar
,一切正常。看来 Chrome 拒绝转发localhost
或127.0.0.1
。有什么办法可以解决这个问题吗?
答案1
默认情况下,Chrome 72+ 不会localhost
通过您配置的代理发送请求。
您需要配置 Chrome 的代理绕过列表以包含<-loopback>
,这是一个特殊选项,指示其localhost
通过代理发送。
通过命令行,它看起来像:
google-chrome --proxy-server=socks://127.0.0.1:9999 --proxy-bypass-list='<-loopback>'
答案2
我有类似的问题。(但我用的是 SwitchyOmega,不知道 chrome 已经可以在内置设置中使用 socks 了)。至少,我的问题的标题可能是一样的。
有时我使用代理 ssh 隧道来访问只能从服务器本身访问的端口。
但是 Chrome 开始忽略 localhost 的代理设置,所以我不得不寻找解决方法。
目前的解决方案是使用通配符 DNS 服务。示例链接到本地主机:http://127.0.0.1.nip.io,http://127.0.0.1.xip.io