最近模拟带账号登陆,查看了一些他人的博客,发现正方教务已经更新了,所以只能自己探索了。

登陆:

  通过抓包,发现需要提交的值

需要值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')[] # 解析出登陆所需的lt信息
print(token)

得到lt的值,加入到自己创建的表单中

根据上面抓包工具中需要的值,创建所需表单

login_data={
'useValidateCode': '',
'isremenberme': '',
'ip':'',
'username': username,
'password': password,
'losetime': '',
'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

 

最新文章

  1. VS2010 有关测试的一些使用
  2. Activiti系列: 如何给内置表单添加字段类型
  3. 表ADT
  4. 有关window.location 对象
  5. [C++程序设计]引用
  6. [LeetCode] Is Subsequence 题解
  7. vsftpd.configro
  8. [转载]ISO 8601规则
  9. springboot 学习之路 1(简单入门)
  10. [Office Web Apps]实现在线office文档预览
  11. oracle 索引的(创建、简介、技巧、怎样查看)
  12. ARKit从入门到精通(2)-ARKit工作原理及流程介绍
  13. thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?
  14. 筛选datatable
  15. Intellij Idea notes
  16. mysql语句及执行计划
  17. WebDAV服务漏洞利用工具DAVTest
  18. Tomcat日志、项目中的log4j日志、e.printStackTrace()——我的日志最后到底跑哪去了?
  19. 望岳物业APP开发过程
  20. Jenkins安装与构建部署

热门文章

  1. loj2880「JOISC 2014 Day3」稻草人
  2. cyq.data 常见使用方法
  3. 【BZOJ2721】樱花(数论)
  4. msyql存储数据时字段被截断
  5. python实现查找文件
  6. GWAS: 阿尔兹海默症和代谢指标在大规模全基因组数据的遗传共享研究
  7. FFT &amp; FNT 简要整理
  8. 一、TensorFlow的简介和安装和一些基本概念
  9. 十行代码分清Java 的 || 和 &amp;&amp;
  10. 面向对象学习(python)