接上一章,拿到了cookie就开始登陆学分制网站了。
进入信息门户,找到了学分制系统的入口:http://my.nuist.edu.cn/index.portal?.pn=p3629
页面如下:
按常理说,这个时候就可以拿到学分制管理系统的内容了,F12中也能发现里面的各种信息。但是点击网上评教之后我发现,事情没有这么简单。
点开network发现了这个
点开看看
发现新加载的数据是通过get方法请求了一个奇怪的链接。根据我多(几)年(天)的经验,括号里的东西肯定是加密过的,而且肯定会随着我不同时间登陆而改变,算法我也不清楚,那只能另辟蹊径,看看有没有其他地方有这个玩意。
再往下看请求头:
啊哈,cookie里面出现了熟悉的iPlaneDirectoryPro,这个我们已经搞到手了,但是后面又出现了一个MYWEBAPP.ASPXAUTH,这是啥玩意,又是网站什么时候传给我的浏览器的??
经过面向搜索引擎编程的我一番搜索,这个MYWEBAPP.ASPXAUTH大概就是个保护cookie的加密验证码的玩意,那么现在解决两个问题就能进入学分制网站了:1.找到链接 ;2.拿到MYWEBAPP.ASPXAUTH码 完成这些,就能get到学分制系统啦。
让我们返回信息门户,F12查看元素,果然找到了原因:
原来,学分制系统在信息门户中是一个iframe的嵌套页面,访问的网址也给了出来,但是当我们单独使用iPlaneDirectoryPro作为cookie访问学分制系统的时候就会出现这种情况:
所以还是得需要MYWEBAPP.ASPXAUTH让网站以为我们是在信息门户里面登陆的学分制系统。
让我们试着在network里面找找。。
果然,在other过滤选项中找到了上面嵌套的学分制的请求记录:
两个default_jz.aspx让我们一个个看
第一个default:
general:
请求的网址正好是iframe中写出的网址,但是返回码是302 Found重定向状态码,说明还跳转到了下一个网址。
返回头:
里面返回了另一个奇怪网址的一部分,这个应该就是他要跳转的下一个网址。
请求头:
cookie里只有iPlaneDirectoryPro,是我们能请求到的网址。
第二个default:
general:
请求的链接正好是上一个default返回头里链接的拼接!
返回头(暴躁打码):
终于找到MYWEBAPP.ASPXAUTH了!
请求头:
没啥区别的。
所以经过两次跳转,我们终于找到了MYWEBAPP.ASPXAUTH,接下来就是网址和请求头的提取拼接以及发送请求啦!
s = requests.session()
#登陆信息门户
response = s.get('http://my.nuist.edu.cn/index.portal?.pn=p3629',headers = newCookie)
result = response.text
#学分制.aspx
a_url =result.partition('<div class="ifrmLoading"></div><iframe src="')[2]
a_url =a_url.partition('" align')[0]
url = a_url
#禁止重定向的get请求
response = s.get(url,headers=newCookie,allow_redirects=False)
#重定向之后的default
result = response.headers['Location']
#第二次重定向的url
url = 'http://wlkt.nuist.edu.cn'+b_url
#第二次禁止重定向,得到 MYWEBAPP.ASPXAUTH
response = s.get(url,headers=newCookie,allow_redirects=False)
ASPXAUTH = response.headers['Set-Cookie']
未完待续