我有一台运行 Windows 7 Professional 的笔记本电脑。我每天都会连接两个无线网络:
- 主页:无代理服务器
- 工作:带身份验证的代理服务器
在我的 iPad 和 iPhone 上,我有两个 WIFI 网络配置文件(一个用于家庭,一个用于工作)。工作网络配置文件指定了代理服务器设置。家庭网络配置文件没有指定代理。一切都运行良好,每当我从家到公司或从公司到家时,我都不需要更改设置。
但是,在我的笔记本电脑上,我似乎无法实现这一点。我当然可以连接到两个网络,但当我在工作时,我必须去更改代理设置(在 Internet 选项中)才能使用网络。当我在家时,我必须去关闭它们。这是一件小事,但考虑到这是我每天都必须做的事情,这有点烦人。
有什么方法可以让 Windows 根据我所连接的网络自动打开或关闭代理设置?
答案1
如今,大多数浏览器都支持代理配置脚本。这只是一段 JavaScript,以 DNS 名称/IP 作为参数,并返回一个字符串来指示要使用哪个代理。
http://en.wikipedia.org/wiki/Proxy_auto-config
即使您不懂 javascript,这也相当简单。您只需将浏览器的“自动代理配置脚本”设置指向该文件即可。有些浏览器坚持认为脚本应该位于网络上的某个位置。
有一些小程序可以托管你自己机器上的文件,例如http://tinyserver.sourceforge.net/
但我通常只是把它放在我方便的一些本地网络服务器上。
示例 autoconf.js:
function FindProxyForURL(url, host) {
// our local URLs from the domains below example.com don't need a proxy:
if (shExpMatch(host, "*.example.com"))
{
return "DIRECT";
}
// URLs within this network are accessed through
// port 8080 on fastproxy.example.com:
if (isInNet(host, "10.0.0.0", "255.255.248.0"))
{
return "PROXY fastproxy.example.com:8080";
}
// All other requests go through port 8080 of proxy.example.com.
// should that fail to respond, go directly to the WWW:
return "PROXY proxy.example.com:8080; DIRECT";
}
最后一点特别重要,因为它允许您的系统尝试代理,然后返回到无代理。
还有一个变量myIpAddress
可以使用,如下所示:
function FindProxyForURL(url, host)
{
if (isInNet(myIpAddress(), "192.168.1.0", "255.255.255.0"))
return "PROXY 192.168.1.1:8080";
else
return "DIRECT";
}
虽然有些浏览器/系统对这一点感到困惑,可能会返回 127.0.0.1
答案2
以下是一些可以一键切换所有网络属性的免费产品:
NetSetMan 具有更广泛的功能集,免费版本可以翻转:IP 地址、网关(包括度量)、DNS 服务器、WINS 服务器、IPv4/IPv6、WiFi 管理、计算机名称、工作组/域、DNS 域/后缀、默认打印机、网络驱动器、NIC 状态和 SMTP 服务器。
答案3
TCP/IP 管理器看起来是个不错的解决方案,而且还是开源的。它能够在配置文件之间切换,甚至可以创建 BAT 脚本来处理更多事情!