Windows PowerShell使用curl登录校园网

32 阅读5分钟

1.抓包分析登录过程

这里尝试过两种方法:一是直接用新版edge的DevTools,即按F12键;另一种则是使用Wireshark软件。下面分别演示这两种方法。

方法一:使用DevTools

校园网登录页面 首先打开校园网的登录页面 DevTools 接着按F12进入DevTools,选择NetWork的选项卡,默认开始记录网络活动 登录 然后返回登录页面,输入账号密码点击登录

抓取结果 此时去到DevTool的窗口,查看抓取的结果。抓取结果默认是按照时间顺序排列的,如果不是可以使用WaterFall的选项卡进行升序或者降序的排列 查找数据包 在抓取的网络活动当中,发现有名为login.php的活动,猜测其为登录的关键步骤。上图是其中的某一个login.php的活动,其向目标网址发送了一个post请求,且携带的参数当中包含账号和密码。此活动应该是登录的关键步骤。

方法二:使用WireShark

校园网登录页面 同样打开校园网的登录页面 启动WireShark 启动WireShark,选择网络接口进行抓取。一般来说,抓取的网络接口都是直接对外的总连接的接口,即波动较大的网络。如果不清楚选择哪一个,也可以打开网络中心看一看对外连接的是哪一个网络接口。

登录 然后返回登录页面,输入账号密码点击登录

抓取结果

由于已知登录界面的主机的ip,所以在这里就直接输入了ip和协议进行过滤。如果不清楚,还是需要去F12的界面查看。关于过滤规则详见1

2.构造数据包模拟登录

从F12和WireShark的抓取结果来看,登录过程主要是本地主机向登录页面发送了一个POST的请求,并携带账号密码进行验证。构造数据包的方法也有两个,一个是curl命令行构造,一个是python脚本构造

方法一:使用curl命令

curl命令行登录 原本是参照某篇博文2进行构造命令,然后发现Windows下Powshell的命令格式有所不同,并不能使用这篇博文的方式。后续根据报错查找,另一篇博文3展示了改进方法。关于Powshell下curl命令的使用方法,这里有两篇博文也有很好地说明。45也可以参照该博文6使用curl进行登录。

方法二:使用python脚本

在这里插入图片描述

python代码如下:

import requests

login_url = ""

data = {
    "opr":"",
    "userName":"",
    "pwd":"",
    "ipv4or6":"",
    "rememberPwd":""
}

doc = requests.post(login_url,data).text
print(doc)

以上代码参考了该博文7

3.总结

在抓包过程当中,DevTools的目标更明确,指定对某一个具体的页面的网络活动进行抓取,可以看到该页面的ip地址、端口等等;相比之下Wireshark的目标更宽泛,所有通过网络接口的数据均进行抓取,需要过滤才能看到目标页面的信息。不仅目标宽泛,WireShark抓取的数据也更多,过滤后,目标页面的TCP三次握手的过程也能够看到。

此次抓取的是登录过程,后续也抓取过退出过程,方法基本一致。退出过程的目标地址和登录过程的目标地址一样,只是携带的参数不同。

除此之外,也尝试过模拟登录搜狐邮箱,同样参考这篇博文7,但并没有成功。分析是携带的参数不对,除了时间戳这个变量之外,每次登录的参数还受其他变量的影响。而且其使用的是加密的https的方式,还需要对WireShark进行配置才能解密数据包8

还尝试过抓取B站的弹幕,参考的这两篇博文910,但都没有成功。原因是并没有找到储存弹幕的xml文件,也就没有找到弹幕的服务器地址和获取弹幕的请求参数。不过有大佬做了API11,可以直接使用API获取弹幕。除了用API之外,其实也可以用BeautifulSoup等python库,因为我发现弹幕是可以直接在网页的HTML文件里面找到的。直接爬取HTML文件,根据规则过滤,拿到弹幕也是可以的。但是在F12的界面,初始的HTML文件是没有弹幕的。猜测是有脚本从服务器获取了弹幕,然后按照某种规则填充了进去。如果可以从脚本开始分析,或许能够找到存储弹幕的服务器和请求弹幕的参数。

有博文12指出了之前获取弹幕XML文件的两种方法依然适用:

1、comment.bilibili.com/视频的cid.xml 2、api.bilibili.com/x/v1/dm/lis…

获取cid的方法可以去上面的博文里面查看。

虽然以上的两种方法依然适用,但是我现在,仍旧没有在F12的页面当中找到XML的传输记录

Footnotes

  1. Wireshark 常用过滤方法

  2. curl命令登录网页

  3. 在 Windows PowerShell 中执行命令:curl -X POST –data,报错:Invoke-WebRequest : 找不到接受实际参数“POST”的位置形式参数。的分析解决

  4. 在PowerShell中使用curl(Invoke-WebRequest)

  5. Invoke-WebRequest

  6. curl命令实现上网认证登录

  7. 搜狐网模拟登录案例 2

  8. 配置Wireshark抓取https数据包

  9. python爬虫----b站的弹幕获取

  10. Python爬虫爬取Bilibili弹幕过程解析

  11. bilibili_api,仅用 3 行代码获取B站(弹幕、评论、用户)数据

  12. 感谢大佬,B站弹幕也能抓取啦~