(windows 下)系统代理和浏览器代理之间到底是何关系?

2018-01-21 21:34:22 +08:00
 wisej

先说下我的发现:

  1. 打开 Chrome 设置中的代理和 IE 设置中的代理,显示的窗口是一样的
  2. 走系统接口:Windows 设置->网络和 Internet->代理,打开的窗口又和 Edge 浏览器打开代理设置窗口是一致的
  3. 在$$r 的 PAC 和全局模式下,1、2 点虽然窗口样式不同,但代理配置的改变是一致的。譬如在全局下,都会被设置为同样的 IP 和端口

然后我是认为这只是一个新的,一个旧的系统 API 罢了,效果是一样的。

之后,我在$$r 的 PAC 模式打开的情况下,开启 Fiddler。令我意外的是, Chrome 代理窗口显示的是$$r 的代理配置,而系统的代理窗口显示的是 Fiddler 的代理配置(很明显,端口都不一样)。但是,Fiddler 又是能正常抓到从 Chrome 发出的请求的。

所以现在很疑惑,想知道一个从 Chrome 发出的请求在$$r PAC 模式和 Fiddler 打开的情况下,数据包到底是怎么走的?

11804 次点击
所在节点    问与答
19 条回复
WordTian
2018-01-21 21:37:02 +08:00
系统代理和 IE 浏览器代理是一个东西
WordTian
2018-01-21 21:38:55 +08:00
chrome 的浏览器肯定走 chrome 设的代理啊
wisej
2018-01-21 22:06:09 +08:00
@WordTian 不啊,你看我写的。IE 浏览器代理界面跟 Chrome 代理界面是一样的,Edge 浏览器才和系统代理设置的界面是一样的。你可以试试
iVeego
2018-01-21 22:41:25 +08:00
@wisej #3 界面不一样,但是功能是一样的,你在一个地方设置下在另外一个设置界面会看到的。
Humorce
2018-01-21 22:46:07 +08:00
IE 选项里的代理设置就是系统代理,
程序只要不声明 /设定代理(比如 QQ 默认不走系统代理)
Chrome 不装扩展,在设置中无法无法改变。
wisej
2018-01-21 22:59:36 +08:00
@iVeego
@Humorce
老哥们怕是都没看我的描述?我本来也认为是这样的。但是,后来我先打开$$r,再打开 Fiddler 时候(会冲突么),系统代理和 IE 代理的相关配置是不一致的。具体表现是,IE 代理是$$r 的,系统代理是 Fiddler 的。
所以我想知道这是为啥?
iVeego
2018-01-21 23:04:06 +08:00
@wisej #6 我只用了 SS,没用过 Fiddler...我直接截图吧。

Osk
2018-01-22 00:56:59 +08:00
@Humorce chrome 可以使用命令行参数启动: --proxy-server=socks5://ip:port 指定代 http/socks 代理,好像也能指定 pac,但我没用过
pimin
2018-01-22 01:32:44 +08:00
chrome 默认走 IE 代理,当然 chrome 也可以通过插件来管理代理,比如 switchyomega ;
1.Fiddler 抓取的网页你确定是通过 SS 访问的么?
2.Fiddler 作为一个代理,它也是需要服务器的,它有没有读取本地系统原有代理信息做一层跳转?

解决了以上两个问题,你的问题就有答案了
flynaj
2018-01-22 01:46:07 +08:00
chrome,跟 firefox 都可以用 switchyomega 管理代理,可以不同网址有不同代理
Humorce
2018-01-22 01:57:31 +08:00
@Osk 这我知道,不然 linux 版本是进不去商店装代理托管扩展的,我是指 GUI 上的设置。

@wisej 我刚才搜索了一下 Fiddler 是一个调试代理工具,说明它接管了所有程序的流量,可以复现这个情况的还有 proxifier。
我猜想是 Fiddler 默认方案是直连(不使用代理),而不是使用系统代理,所以才造成 系统代理 无法生效。
Windows 默认代理就是你说的 IE 代理 。
kokutou
2018-01-22 08:25:30 +08:00
proxifier 是用了 LSP。。。

fiddler 不太清楚,但它改了一个设置,放 cmd 里:
netsh winhttp import proxy source=ie
netsh winhttp show proxy
kokutou
2018-01-22 08:26:52 +08:00
打开和关闭 fiddler 后,show 一下看看
wisej
2018-01-22 10:54:36 +08:00
@kokutou 我知道为啥不一致了。昨天在我打开 Fiddler 之后,我在 IE 代理里查看的是"拨号和虚拟专用网络设置"。我今天查看了下方的"LAN 设置"发现是一致的。

相当于是"拨号和虚拟专用网络设置"是$$的代理设置,"LAN 设置"是 Fiddler 代理设置。

或许正是这样,包先走的 Fiddler 代理,再走$$。才能又能正常显示数据包,又能访问墙外网站?

其实这两个点我一直没太搞明白,"拨号和虚拟专用网络设置"和"LAN 设置"有何不同?
pimin
2018-01-22 12:52:06 +08:00
@wisej
拨号和虚拟专用网网络设置,只在拨号发生时生效
举个栗子,你有一个宽带链接,双击拨号,拨号同时代理自动生效;
lan 设置就比较简单了,当你通过路由器、局域网主机上网时候生效;
wisej
2018-01-22 13:36:10 +08:00
@pimin 意思是如果本机是通过宽带拨号上网,就会采取"拨号和虚拟专用网络设置";如果是走路由器,即使路由器是通过宽带拨号的,走的也是“ LAN 设置”。这么理解对么?

这样的话,在我先开$$,再开 Fiddler 的时候,Fiddler 会 override “ LAN 设置”。为什么$$还能正常工作呢?难道 Fiddler 会记录下之前的代理地址?
wisej
2018-01-22 21:00:30 +08:00
luoziluojun
2018-12-12 12:56:25 +08:00
我想问下$$是什么...
wisej
2018-12-12 13:09:00 +08:00
@luoziluojun shadowsocks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX