我的博客

北邮校园网登录程序的开发

目录
  1. 查看 WEB 登录请求的细节
  2. 模拟 POST 请求

查看 WEB 登录请求的细节

登录网址:http://gw.bupt.edu.cn/

这个是本学期新修改的,上学期还是 http://ngw.bupt.edu.cn/,所以很多用原来的网址的脚本就不行了,似乎只修改网址就可以正常使用了。还有一个变化就是新的少了一个参数,但是似乎不影响。

使用 Chrome 浏览器(或者别的也行),打开登录界面,按下 F12 启动开发者工具,点击 network 选项卡。

输入用户名密码,点击登录,然后点击开发者工具,network 里的 login,这个实际上是这次登录浏览器向服务器发出的请求。

查看登录请求细节

可以看到请求的参数,

请求头:

1
2
3
4
5
6
7
8
9
10
11
12
13
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Content-Length: 27
Content-Type: application/x-www-form-urlencoded
Cookie: SessionId=c311aa79d393ec23
Host: gw.bupt.edu.cn
Origin: http://gw.bupt.edu.cn
Referer: http://gw.bupt.edu.cn/index
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36

表单:

1
2
user: 2018xxxxxx
pass: xxxxxx

对于这个地方主要关注表单内容、请求方法、和请求的地址就可以了。

请求地址是 :http://gw.bupt.edu.cn/login(图上忘了圈)
请求方法:POST
表单内容:user 和 pass 两个字段

模拟 POST 请求

1
2
3
4
5
6
7
8
9
10
import requests

def login(name, passwd):
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36',
'Upgrade-Insecure-Requests':'1',
'Connection':'keep-alive'
}
data = {'user':name, 'pass':passwd}
requests.post(f'http://gw.bupt.edu.cn/login', data, headers=headers)

这里需要安装一个依赖 requests

直接使用 pip 安装 pip install requests

这里只说了登录,退出也一样,只不过是 get 方法

1
2
3
4
import requests

def logout():
requests.get(f'http://gw.bupt.edu.cn/logout')

这些代码来自于 buptgw ,稍有改动。 buptgw 用于登录北京邮电大学校园网的命令行程序。跨平台,但仅支持 Python 3。可以从文件读取用户名和密码自动登录,或者通过参数指定用户名密码,也可以交互式输入用户名密码。

关于如何打包发布python程序可以参考这篇文章

评论无需登录,可以匿名,欢迎评论!