简单的答案是:你不能。没有 “全局 "的代理设置,因为代理是由个别程序(如IE浏览器、Firefox等)使用的,而不是Windows本身。但是,有些程序内部使用Internet Explorer库访问网页,所以它们会使用IE的设置,如firedfly贴出的那样。
你可以通过使用FreeCAP或Socksify等工具,强迫个别程序使用代理,即使程序本身不支持代理。
如果你真的想强迫所有程序通过代理,那就必须在网络层面上进行,所以你需要建立一个VPN连接到像Your Freedom或Steganos Internet Anonym这样的服务。
你可以通过使用netsh.exe设置一个全局的机器级代理。运行:
netsh winhttp set proxy <proxy server address> <exception list in quotes, seperated by ;>
开箱即用,你不能为所有应用程序设置一个全局代理。虽然您可以在Internet Explorer中输入您的代理信息,如firefly 所建议的那样,这只适用于某些应用程序(主要是Windows应用程序,但Google Chrome使用这些设置)。它将建立一个连接到代理和路由****所有的流量(当然不包括本地流量)。它可以在Windows和OS X上运行,甚至还有一个可移植的版本。
Proxifier是一个允许不支持通过代理服务器工作的网络应用程序通过HTTPS或SOCKS代理或代理服务器链运行的程序。
我也用这个程序回答我的Force Steam (和其他没有指定代理设置的程序)使用代理**问题。
您可以使用组策略来 为所有用户设置默认代理服务器 :
在组策略中。本地计算机策略 - 计算机配置 - 管理模板 - Windows 组件 - Internet Explorer - 启用 “设置代理服务器 "而不是 "每个用户"。这个设置可以让你不用在每次不同的用户登录机器时重新分配设置。
本地计算机策略-用户配置-Windows设置-Internet Explorer维护-连接-代理设置。你可以在这里定义代理设置)
本地计算机策略-用户配置-Windows设置-Internet Explorer维护-URLs(你可以在这里设置你的默认主页等)
还有一个选项可以配置Windows Update使用代理服务器:
Netsh winhttp set proxy myproxy
Netsh winhttp set proxy myproxy:80 ";bar"
Netsh winhttp set proxy proxy-server="http=myproxy;https=sproxy:88" bypass-list="*. contoso.com"
在我们的环境中,我们最终使用了: netsh winhttp set proxy 192.168.0.100:88 "<local>;*.company.com"
如果你有fiddler,你可以在你已经验证过后,从浏览器中查看请求,并复制代理授权头,然后在请求前设置一个断点,从程序中抓取请求,并将头粘贴到请求中。或者你可以在OnBeforeRequest(Ctrl+R)里面添加一个自定义规则:
if(!oSession.oRequest.headers.Exists("Proxy-Authorization")){
oSession.oRequest.headers.Add("Proxy-Authorization", "Basic xxxxxxxxxxxxx");
}
,其中xxxx是你从浏览器的请求中抓取的内容。虽然这不是一个永久的解决方案,但很简单,而且效果很好。添加规则也可以在流媒体打开的情况下工作。