最近模擬帶賬號登陸,查看了一些他人的博客,發現正方教務已經更新了,所以只能自己探索了。
登陸:
通過抓包,發現需要提交的值

需要值lt,這是個啥,其實他在訪問登陸頁面時就產生了

session=requests.Session() response = session.get(login_url, headers=header) cookies = response.cookies for c in cookies: cookie = c.name + '=' + c.value print('cookie-get:' + cookie) selector = etree.HTML(response.text) token = selector.xpath('//input[@name="lt"]/@value')[0] # 解析出登陸所需的lt信息 print(token)
得到lt的值,加入到自己創建的表單中
根據上面抓包工具中需要的值,創建所需表單
login_data={ 'useValidateCode': '0', 'isremenberme': '1', 'ip':'', 'username': username, 'password': password, 'losetime': '30', 'lt': token, '_eventId': 'submit', 'submit1':'' }
post請求登陸:
response = session.post(login_url, data=login_data, headers=header) print(response.status_code)
我們成功了,哈哈哈,很開心!

進入了主頁面:

這是我們登進的頁面,要爬取成績,成績在教務系統中,細心觀察
get下鏈接:http://******/xs_main.aspx?xh=***&type=1
response = session.get(main_url, headers=header) print(response.cookies) print(response.status_code) print(BeautifulSoup(response.text, 'lxml'))
response.status_code返回200,以為成功了?打印一下

額!難受,鬼刀一開,看不見........他竟然返回的是登陸界面?
究竟是什么問題呢,我懷疑是cookie:
因為
print(response.cookies)打印的值是:
<RequestsCookieJar[]>
瀏覽器訪問抓包看下

啊嘞嘞,why?
查看其他請求,在Cookie中竟然都沒有創建過ASP.NET_SessionID
那怎么辦呢?
那我自己寫一個吧:
requests.utils.add_dict_to_cookiejar(session.cookies,{"ASP.NET_SessionId":"0ftp4drb5uar0r55urffkobr"})
哎呀,成功了。開心,不過似乎ASP.NET_SessionId有時效性。
不管了,也不知道為啥Session.Cookies得不到所需要的Cookie,先不管了,各位大佬,發現問題的話,或者有啥好的解決辦法麻煩告訴下!拜謝
代碼地址:https://github.com/JackyWjx/HNCU下的HNCU.py
****************************************第二次更新*********************************************************************************************************************************
這個做法有問題呀:所以:我又來了。。。
經過學習cookie,意識到自己以前的一些錯誤,特來改正:
上篇對於ASP.NET_SessionId值不知道如何解決,只能自己添加
解決原理:既然ASP.NET_SessionId是一個cookie值,那么有一個請求的作用就是服務器設置ASP.NET_SessionId給瀏覽器,那么我們就直接拿到這個請求不就迎刃而解了

請求就知道了,那么請求這個請求就解決了,有由於我們的項目使用的requests那么也不需要設置啥了
代碼地址:
https://github.com/JackyWjx/HNCU 下的HNCU-neW.py
