Windows系统快速网页认证
分类:内容分享技术相关 阅读量: 80 次

Windows系统快速网页认证

分类:内容分享技术相关 阅读量: 80 次

最近使用校园网,网络几个小时就会断掉,需要重新打开浏览器认证,时间长了难免有些麻烦,而且游戏过程中断网也很伤,所以想了一个懒人办法,做一个脚本一键认证,掉网之后运行一下脚本快速认证,而且把脚本加入开机自启,岂不美滋滋?

web-auth.png


第一步

首先分析这个登陆系统,我们学校使用的是“深澜软件”,认证打开的网址是2.2.2.2,在你连接上校园网的网络并且没有登录认证的情况下,它会自动把你重定向进去校园网登录系统http://xxx.xx.xxx.xx:803/srun_portal_pc.php?ac_id=3&wlanuserip=172.16.7.182&wlanacname= 然后你在这个页面输入你的账号和密码,点击登录就可以正常使用网络了, 其中的172.16.7.182是关键,他是校园网分配给你的ip,也就是内网IP,这个是看起来是GET方法,Chrome打开认证页面F12开启开发者工具然后再输入账号密码登录,会发现他把数据通过POST方法把账号什么的数据提交给了一个php文件:auth_action.php

web-auth1.png

然后我们看提交的数据,有这些东西。

web-auth3.png

点击view-source 查看提交的数据是这些:

action=login&username=15xxxxxxxx&password={B}MTxxxxxxx&ac_id=3&user_ip=172.16.7.182&nas_ip=&user_mac=&save_me=0&ajax=1

这个时候就很明显了,我们只需要向auth_action.php这个php文件POST上去我们上面的这些数据就行了,也就是把账号密码和自己的ip发送给它,它验证通过了你的账号密码后,就把你发过去的那个ip地址的网络给开通。

第二步

我们现在需要找工具来POST我们的数据给认证系统,我首先想到的是直接写一个网页,浏览器打开网页直接POST,但是别的不说,校园网分配的内网IP是会变动的,因为是DHCP。然后我想到了bat脚本,也就是Windows的批处理,但是也不行,虽然可以获取自己的ip,但是发送http请求还需要装什么CURL,麻烦。然后我选择VBS脚本,这个可以获取自己的电脑ip而且还可以发送http请求,并且不需要多装任何东西,Windows上的vbs脚本就像Linux系统上面的sh脚本一样,具体自行百度。

第三步

首先创建一个文件auth.vbs文件,然后开始写脚本。

获取ip

我们需要先获取一下电脑的ip,用vbs语法写就是

Function GetIP
    GetIP = ""
    Dim objWMIService, colAdapters, objAdapter
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    If colAdapters.Count = 0 Then
        Exit Function
    End If
    If Ubound(colAdapters.ItemIndex(0).IPAddress) = 0 Then
        Exit Function
    End If

    GetIP = colAdapters.ItemIndex(0).IPAddress(0)

End Function

ip = GetIP()

开始请求

组装我们的请求数据,用&连接:

str = "action=login&username=15xxxxxxxx&password={B}MTxxxxxxx&ac_id=3&user_ip=" & ip & "&nas_ip=&user_mac=&save_me=0&ajax=1"

然后我们开始http请求

Dim http
set Http=createobject("MSXML2.XMLHTTP")
Http.Open "POST","http://xxx.xxx.xx.xx:804/include/auth_action.php", False
http.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
http.Send str

这样我们就完成了,保存后退出编辑,直接双击这个VBS文件就可以直接执行。然后我们就认证通过了。

第四步

初步完整的脚本代码内容如下,添加了弹窗提示,只是实现的大概功能,还有很多细节没有做到位。

Function GetIP
    GetIP = ""
    Dim objWMIService, colAdapters, objAdapter
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")
    If colAdapters.Count = 0 Then
        Exit Function
    End If
    If Ubound(colAdapters.ItemIndex(0).IPAddress) = 0 Then
        Exit Function
    End If

    GetIP = colAdapters.ItemIndex(0).IPAddress(0)

End Function

ip = GetIP()

If Not ip = "" Then

phone = 15xxxxxxxx

passwd = "{B}MTxxxxxxx"

str = "action=login&username=" & phone & "&password=" & passwd &"&ac_id=3&user_ip=" & ip & "&nas_ip=&user_mac=&save_me=0&ajax=1"
Dim http
set Http=createobject("MSXML2.XMLHTTP")
Http.Open "POST","http://xxx.xx.xxx.xxx:804/include/auth_action.php", False
http.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
http.Send str
msgbox "Phone:" & phone & " IP:" & ip & vbcrlf & "The script runs successfully!","64","Campus Network Authentication"

End If

运行结果如图:

web-auth4.png

其他的网页认证,也可以通过此方法快速认证,只需要改一下POST请求的文件和数据字符串即可。

然后我们把它加入到开机自动启动,实现开机自动认证:

打开文件管理器也就是我的电脑,在地址栏输入

%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup

按回车键跳转,然后把我们的脚本复制进去就可以开机自动运行这个脚本了。
参考资料:https://blog.csdn.net/qq_36999656/article/details/80278437

复制文件的过程中你的安全软件肯定会提示你敏感操作,因为这是修改启动项,记得允许。

huorong.png

关于

以上代码大部分借鉴网络,我本人并不会vbs,只是略微整合修改一下代码来实现小功能。代码来源已经不可究。

最终品

这两天又修改了一下,添加了一些判断条件和网页返回数据,还有多网卡情况下的IP地址筛选(不然会获取到错误的ip地址)。最终品如下:

Function GetIP

    GetIP = ""
    
    Dim objWMIService,colAdapters,colAdapter
    
    strComputer = "."
    
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Set colAdapters = objWMIService.ExecQuery("SELECT IPAddress FROM Win32_NetworkAdapterConfiguration")
    
    For Each colAdapter in colAdapters '遍历所有的网卡的address
    
      If Not IsNull(colAdapter.IPAddress) Then
      
        For i = LBound(colAdapter.IPAddress) to UBound(colAdapter.IPAddress) '遍历address的ipv4与ipv6
        
          If mid(colAdapter.IPAddress(i),1,4) = "172." Then '判断是否是校园网开头的IP地址
          
            GetIP = colAdapter.IPAddress(i) '把筛选出来的IP地址赋值
          
          End If
          
        Next
        
      End If
    
    Next
    
End Function

ip = GetIP()

If ip = "" Then '如果上面没有筛选出来,则IP赋值为空

  msgbox "Cannot get campus network IP address!","48","Campus Network Authentication"

Else

  phone = 1xxxxxxxxxx
  
  passwd = "{B}MTIzNDU2"
  
  str = "action=login&username=" & phone & "&password=" & passwd &"&ac_id=3&user_ip=" & ip & "&nas_ip=&user_mac=&save_me=0&ajax=1"
  
  Dim http,strHtml
  
  set Http=createobject("MSXML2.XMLHTTP")
  
  Http.Open "POST","http://221.14.248.94:803/include/auth_action.php", False
  
  http.setRequestHeader "CONTENT-TYPE","application/x-www-form-urlencoded"
  
  http.Send str
  
  strHtml = http.responseText '网页返回数据
  
  If mid(strHtml,1,8) = "login_ok" Then '判断返回数据头
  
      msgbox "Phone:" & phone & " IP:" & ip & vbcrlf & time() & " Login successfully!","64","Campus Network Authentication"
      
  Else
  
      msgbox strHtml,"48","Campus Network Authentication" '没有认证成功则返回网页上面的数据
      
  End If
  
End If

其实可以不用上面那个操作把脚本加入开机启动,直接用Windows的计划任务,设置触发器为“登陆后无限期的隔3:00:00重复执行”,也就是你开机登陆你的Windows账户后进入桌面他会自动执行一次脚本,然后每个3小时,自己会自动执行一次脚本,这样一套操作过来,校园网就像家里的宽带一样,开机就可以用,而且还不会掉网,完全省去了认证的操作。

评论