因众所周知的原因,Google的某些SSL服务经常间竭性的抽疯,怎样才能快速发现某SSL已经抽疯并切换至未抽疯的服务,从而不影响到我们使用这些非常优秀的服务呢?
为了解决这个问题我自己用VC写了这个Host Switchy小工具,界面:
功能:
1. 理论上可以添加无数个域名和端口,每个域名可以添后无数个IP。
2. 每隔指定的时间间隔(单位分钟,使用Timer事件)逐一检查表格中所有域名的IP,如果发现某在用IP已经无法连接指定端口则自动选用RTT(Round Trip Time)最小的那个IP。
3. 将选用的IP和域名以hosts指定的格式更新到系统的hosts文件中(Windows系统通常目录SystemDirectory\drivers\etc,其它目录暂不支持)。
4. 可以设成开机自动运行(写键值到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run)、运行后自动开始。
5. 自动保存配置内容到程序所在目录的HostSwitchy.ini文件,此文件可用于交互(从别人那拿到这个配置文件开始后并不会自动应用选定的IP,可以手工替换配置文件里的“U”成“-”或手工选中某IP点“Switch”菜单)。
6. 可根据连接情况和RTT任意切换IP,但此IP必须是可连接状态(即“V”状态)。
说明:
1. 域名的格式:域名:端口号,省略端口号则默认检查80端口。同一域名不同端口不做检测,但hosts文件并不支持端口,因此后设置的会替换前面的,所以建议同一域名只添加关键端口。
2. IP的格式:暂时只支持IPV4格式xxx.xxx.xxx.xxx
3. IP的测试状态:RTT值|是否端口可连|是否选用,RTT值即使用PING命令得到的time=xxxms对应的值,端口可连接以“V”表示,不可连接以“-”表示,此IP选用以“U”表示,未选用以“-”表示。
4. 在逐一检测过程中界面可能会有短暂不影响的情况,这属于正常情况。
5. 在检测RTT时后台是调用系统的ping.exe工具来获取的(Windows系统通常目录SystemDirectory),如果系统中的此文件不存在将无法测得该值,请自行从别的系统找到此文件放于系统目录下。
想获知某服务的IP可以到Just-Ping网站去输入域名进行PING操作。
本地下载:HostSwitchy
的確是很便捷的工具,如果可以直接更新真實的IP就更好了。呵呵
不能那样做的,上回就因提供一个PHP页面代理查找Twitter API的IP地址,结果导致整个IP段被墙,为此我还不少挨骂呢,再也不干这种给GFW“提供信息”的事了,只提供方便,IP来源自己找,呵~
求助:XP 下正常,但WIN7 受限用户运行后无法探测到RTT,全部显示为0……
WIN7要以管理员身体运行才能修改hosts文件,受限用户无法探测RTT怀疑是ping.exe命令找不到或不允许执行。
是用管理员身份运行的,在Process Explorer 里面也可以看到ping.exe 被反复执行,但结果全部是0。很奇怪,同样的配置文件,在另一台XP 上就是正常的。
有可能是你Win7的防火墙拦住了ping.exe的执行,你可以试试在命令行下测试一下ping命令,比如:
C:\>ping -n 2 74.125.235.17
这个工具里就是使用的上面的格式来获得“Average = xxxms”的结果的。
应该不是防火墙的原因,防火墙是关着的,ping 命令一直是正常的,我刚也测试了,能得出结果。
我刚才到管理员账户下运行Host Switchy,还是全部为0.
也许是WIN7 的PING 和XP 的PING 有不同吧。
还有一种可能就是WIN7中文版PING的显示内容是中文导致无法找到“Average = xxxms”的结果,改天我找个环境测试一下看看。