PC和Android实现一键登录WLAN Web Auth的方法

好长时间没有发文了。明天还要大早起,现在正好趁着刻盘的时间把这个发出来吧,但是也不能睡太晚了。(顺便吐个槽,windows 光盘映像刻录机 速度真的很慢啊)

这次主要是说明一下快速登录部分WLAN的网页登陆(Web Auth)的方法。由于位置关系,就用最近的宿舍网的登陆举例啦。

适用范围:(原理上)用单网页进行POST提交表单的网页登陆。

举例:Anderson Junior College Hostel, Singapore.
首先,介绍一下这个例子的工作方法吧。

当新用户通过80端口获取任何网页时,服务器会自动拦截,并跳转到服务器的认证页面。(10.10.24.1/auth)用户输入完用户名和密码之后服务器会进行认证。当认证通过后,服务器会自动跳转回之前的页面。每次登陆后服务器会有一个会话ID。当该会话ID对应的IP/MAC地址超时后,会再次自动跳转并要求用户登录。

我们所要做的就是简化输入用户名和密码的这一流程,实现一键登录甚至自动登录的状态。

经过Chrome的开发者工具的提示发现,这个验证过程还是很简单的。整个过程其实只是向 10.10.24.1/auth/plain.html 发送了一个POST请求,其中包含了必要的登录信息。这样,我们只需要对这个POST指令下手了。

说到这个,最著名的功率应该就是cURL了吧。命令行模式,简洁轻快,兼容性丰富,而且只要不到1MB的空间。下载地址在此: http://curl.haxx.se/download.html (有源代码和各个系统的编译版本,如果有哪位想要自己编译我也不拦着)

接下来就是用cURL执行POST请求了。我用的指令是这样的:

curl -d “meth=plain&action=login&time=60&uid=用户名&pswd=密码 -k https://10.10.24.1/auth/plain.html
这里解释一下:

  1. -d “……” 是表示用 POST 模式发送的请求内容。这个字段可以在Chrome的开发者工具中找到。
    附方法:
    在Chrome中按下F12然后进行登陆,在提交完用户名密码后到底栏的Network标签,打开第一个文件,点击Query String Parameters右面的view source。下面出现的一行代码就是POST请求的原文了。
  2. -k 由于例子中的请求是通过HTTPS传输的,而且认证系统使用的是自制证书。去所以用 -k 开关去除SSL检查。没有SSL的可以省略。
  3. 最后的网址是请求发送的地址。
    用命令行执行过后会返回网页内容。如果内容提示登录成功,就说明我们的登陆有效了。

接下来就是一键登录的部分了。根据各自的喜好,可以把这个命令行用各种方式运行。在这里介绍几种:

Windows [1]: 桌面快捷键。
在桌面上新建一个快捷方式,把上述指令输入到路径栏。在创建好的快捷方式的属性里设置快捷键。这样,在任何时候都可以通过快捷键登入网络了。

Windows [2]: 计划任务
进入系统控制面板的计划任务区,将此指令设置为计划任务,即可使电脑每隔一段时间自动登录一次。

Android: 桌面快捷方式
GScript Lite脚本管理器中新建脚本,并在内容中输入以上指令。然后在启动器里面新建快捷方式,选择GScript Lite 然后选择你的脚本。即可在桌面上一键登录网络。