tp5的网页怎么保持登陆状态_摸索 | 试写广财校园网自动登陆脚本

8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 8ea541471c852d30d009abf5b397c059.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png 83ebf4f7eb0a81ba6d3077ceeced52f3.png

记得大一刚入学时,我们宿舍在其他同学的介绍下向一位师兄购买了刷机路由器。这种路由器内嵌了校园网的登陆脚本,可以自动登陆校园网和共享上网,一个宿舍只要一个账号,大家便能一起上网。后来校园网的运营商从电信换成了移动,我们宿舍的路由器就失效了……

搬回本部校区后,趁着开学前这几天没事干,研究了下校园网的登陆过程。于是用Python写了个小脚本,可以用来检测校园网是否掉线并恢复登陆。 这个脚本我放在github上开源了:https://github.com/zimin9/GDUFE_InternetLogin 各位朋友觉得有用的话麻烦在github给个star( 3c8efa57f0fc344119c210d5d1e4ae37.png 3c8efa57f0fc344119c210d5d1e4ae37.png ) 下面是整个抓包分析过程,这里仅分享思路,代码请移步github查看 我用的是Chrome浏览器自带的开发者工具进行抓包,广财大的校园网web登陆认证页是 http://100.64.13.17,打开网页并手动登陆校园网账号,抓包得到以下数据。下图红圈中的请求就是登陆时浏览器所发出的GET请求:

f6d63014178c0fa548b7744bf003bb34.png

登陆过程是向http://100.64.13.17:801  发送了一个GET请求,url中带上了所有登陆信息。在Chrome浏览器的开发者工具中可以很直观的看到这些数据:

c0c89e132f9a817ec22f719244b78364.png

其中user_account和user_password分别是校园网账号与密码(上图已打码hhh),wlan_user_ip与wlan_user_mac分别是宿舍墙上端口所对应的ip地址与你设备的mac地址(这两个信息也打码了)。除了‘callback’与‘_’这两个值之外,基本都是固定值。

callback’与‘_’这两个值到底是啥呢?每一次请求,这两个值都会改变。最后通过查找它的js代码,发现这两个值其实是当前时间的时间戳。

78f04bf3a8157c1c0fce15023828ec27.png

js代码中生成时间戳的方法 

在确定了每一个值的含义后,这个脚本的编写思路就明确了很多。

首先是将requests headers里的内容修改好(其中最重要的是修改User-Agent,将脚本伪装成浏览器),然后将账号、密码、ip地址、mac地址、当前时间的时间戳分别填入URL中,最后向这个URL发送GET请求即可。

p.s.:

Python默认生成的时间戳仅有10位,而登陆时使用的时间戳却是13位的……

百度之后发现的处理办法:

import timeint(round(time.time() * 1000))

这样就可以生成13位的时间戳了!!

解决了登陆的问题,还剩下检查状态的问题

只有识别到了当前是否掉线,程序才能做出相应的反应

在多次查看http://100.64.13.17  返回的信息后,我留意到了以下代码:

    page.run(1);

如果校园网处于在线状态,那么page.run()的括号中就有1。反之,如果校园网已经离线了,那么括号中没有1。

根据这一点,就可以用正则表达式来判断当前的网络状态了。只有校园网离线时,才进行登陆。

最后为这个脚本添加定时任务即可,这样这个脚本就能时不时地帮你“看看”网络正不正常、需不需要登陆。(可以将这个脚本放在路由器、树莓派、电脑等等支持python的设备上运行)

不同的操作系统添加定时任务的方式不同,这里就不做介绍了~

c2a4704ab1fd9e69c248ac2951b56b7c.png 340884aafdc06893c31db928df980663.png

扫码关注

惊喜多多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值