自动VPN穿墙无忧

| 分类 即用  | 标签 VPN  WinHttpRequest 

一直使用谷歌搜索,大约在 4、5 月份时,突然用不了了,一时茫然。我知道 goagent,也用过赛风,然而网速实在慢,这些网上常见的免费方案基本用不了。于是尝试着看看必应如何,用了许多天感觉效率很低,尤其搜索结果中重复项很多(网络内容过度冗余)。

设置 VPN

一天在简书偶然看到免费VPN合集,随意点了进去。看到了 VPN,以前似乎都没尝试过这种方案,既然是免费的,不妨试试。

网友共享VPN
简介:免费美国VPN,支持PPTP,每2小时更换密码

这个不用注册,于是根据其中的设置教程在系统中设置好。此时,桌面上就出现了连接图标: 宽带连接图标

自动更新密码

这个 VPN 会间隔一段时间更换密码,这样我们也必须跟着更新才行:打开网友共享VPN,复制密码并粘贴到从桌面所打开连接的密码框中,然后连接。这操作虽然简单,但一直重复总是很烦。所以,看看能否 AutoHotkey! 于是,搜索“宽带连接 autohotkey”找到了 rasdial 命令,简单测试发现用这个命令操作是可行的:

rasdial "ilvpn" ilvpn.com uzBa4Kp5 /phone:172.245.220.181 /phonebook:"C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk"

这里,ilvpn 是刚才建立的宽带连接名称,rasphone.pbk 是我系统中的 pbk 文件,不清楚其他系统如何,可考虑用 Everything 搜索。 现在要用 AutoHotkey 实现的操作就很简单了:断开当前 VPN 连接,从网页上获取新密码再次连接。定时或在需要时手动执行这个操作就行了。

#Persistent
Settimer, AutoUpdate, % 50 * 60 * 1000 ; 设置为 50 分钟时自动更换。
GoSub, AutoUpdate
Return

F1:: ; 根据自己的情况自定义。
AutoUpdate:
Run, %ComSpec% /c rasdial "ilvpn" /disconnect,, Hide
sUrl := "http://172.245.220.181/mm.txt"
oWinHttp := ComObjCreate("WinHttp.WinHttpRequest.5.1") ; WinHttpRequest Object Reference: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384109
oWinHttp.Open("GET", sUrl, True)
oWinHttp.Send()
If (oWinHttp.WaitForResponse(-1) <> -1)
{
    MsgBox, 获取失败,稍后继续尝试。
    Sleep, 5000
    GoSub, AutoUpdate
}
sPassword := SubStr(oWinHttp.ResponseText, 1, 8)
RunWait, %ComSpec% /c rasdial "ilvpn" ilvpn.com %sPassword% /phone:172.245.220.181 /phonebook:"C:\Documents and Settings\All Users\Application Data\Microsoft\Network\Connections\Pbk\rasphone.pbk",, Hide
Return

其中 http://172.245.220.181/mm.txt 是从源码分析而得。 这里手动按个热键代替计时器也很方便了,还可以执行 rasdial 从结果判断当前是否连接了 VPN 实现智能连接(在断线时自动重连,常常不清楚什么原因就断线了)。看个人的需要。

其他

  • 有“纯 ahk”情节的朋友考虑同名的 RasDial 函数,新手忽略吧;
  • 经常需要的朋友不妨购买支持,免费东西的背后是别人默默的付出;
  • 后来找到了无需穿墙即可使用的谷歌搜索(知乎的问题找不到了),偶尔才有需要;

一开始使用这个 VPN 时是两小时更换一次密码的,6 月中旬当机了一次,现在更新时间变成一小时了(有这个脚本一分钟一次都不会有压力)。好好珍惜吧,有更好的方案记得分享~最后老生常谈一次:VPN 有风险,使用需谨慎


上一篇     下一篇