登陆 | 注册 设为首页 | 加入收藏 | 联系我们
太和养老网
热词老年艺术  助老机构  养老系统  

中心区域北京 天津 河北 山西 内蒙古 辽宁 吉林 黑龙江 上海 江苏 浙江 安徽 福建 江西 山东 河南 湖北 湖南 广东 广西 海南 重庆 四川 贵州 云南 西藏 陕西 甘肃 青海 宁夏 新疆 香港 澳门 台湾 全国城市养老院目录 全国县市养老院汇总目录 太和AI作品展 太和养老艺术网AI作品展示

headers的详细讲解-飞

 

2023/7/6 17:08:56 ('互联网')

本文章属于爬虫入门到精通系统教程 知乎 - 与世界分享你的知识、经验和见解

注意打开开发者工具后点击“preserve log”,密码记得故意输入错误,然后点击登录

image

我们很简单的就找到了 我们需要的请求

image
image
_xsrf:81aa4a69cd410c3454ce515187f2d4c9password:***email:admin@wuaics.cn

可以看到请求一共有三个参数

emailpassword就是我们需要登录的账号及密码

那么_xsrf是什么?我们在哪能找到?

_xsrf这种参数,一般叫做页面校检码,是来检查你是否是从正常的登录页面过来的。

那我们复制这个值,在登录页面找找看。


image

可以看到已经找到了。用xpath很简单就能获取

//input[@]/@value

所以,本次登录我们需要得到的数据已经都得到了

步骤如下:

    打开知乎登录页面,获取_xsrf把_xsrf和自己的账号及密码一起发送(模拟登录)
2.模拟登录
import requestsurl = 'https://www.zhihu.com/#signin'z = requests.get(url)print z.status_code

我们会看到 http状态码为500...

至于为什么会返回500状态码呢?是因为我们用程序来访问知乎被发现了...

我们伪装成浏览器,添加一行

image

可以看到返回正常了,http状态码为200(这就是headers的作用)

那我们现在获取_xsrf

from lxml import etreesel = etree.HTML(z1.content)# 这个xsrf怎么获取 我们上面有讲到_xsrf = sel.xpath('//input[@]/@value')[0]

然后模拟登录

loginurl = 'https://www.zhihu.com/login/email'# 这里的_xsrf就是我们刚刚上面得到的formdata = {'email':'admin@wuaics.cn','password':'你的密码','_xsrf':_xsrf}z2 = requests.post(url=loginurl,data=formdata,headers=headers)print z2.status_code#200print z2.content# '{"r":0,\n "msg": "\\u767b\\u5f55\\u6210\\u529f"\n}'print z2.json()['msg']# 登陆成功

可以看到已经模拟登录并成功了。

那我们来打开知乎 - 与世界分享你的知识、经验和见解来检查下 是否有登录成功

# 为什么用这个页面呢?# 因为这个页面只有登录后才能看得到,如果没有登录的话 会自动跳转让你登录的mylog = 'https://www.zhihu.com/people/pa-chong-21/logs'z3 = requests.get(url=mylog,headers=headers)print z3.status_code#200print z3.url# u'https://www.zhihu.com/?next=%2Fpeople%2Fpa-chong-21%2Flogs'

发现页面url是 (https://www.zhihu.com/?next=%2Fpeople%2Fpa-chong-21%2Flogs)

并不是 我前面输入(诺亚方舟是什么意思?诺亚方舟是《圣经》中诺亚制造的大船,诺亚方舟是《希伯来圣经·创世纪》中的故事。)的 (https://www.zhihu.com/people/pa-chong-21/logs)

说明知乎判断我们没有登录,然后把我们跳转到登录页面了.

如果感兴趣的话,可以把z3.text 的返回值存为123.html,然后打开看看,是不是跳转到登录页面了..

那么为什么会跳到登录页面呢?刚刚不是已经登录成功了么?

这是因为,我们这几个模拟请求,相互间都是独立的,所以z2登录成功了,和z3并没有什么关系。

那如果我现在想要z3不用再模拟登录一次,也能登录的话,怎么办呢?

我们可以把z2登录成功后得到的cookie给z3,这样,z3也就能登录成功了.

用程序实现

image

再次判断下是否登录成功。

z3 = requests.get(url=mylog,headers=headers)print z3.url# u'https://www.zhihu.com/people/pa-chong-21/logs'

我们可以看到已经正常访问了。说明我们登录成功了

所以,以后只要你带着这个cookie,就可以访问登录后的页面了.(这就是cookie的作用..)

最后附上一个小技巧.

当你需要登录,或者说你需要在一段会话中操作(也就是我们上面的操作)

会话对象高级用法 - Requests 2.10.0 文档

会话对象让你能够跨请求保持某些参数。它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能。所以如果你向同一主机发送多个请求,底层的 TCP 连接将会被重用,从而带来显著的性能提升。 (参见 HTTP persistent connection).

使用会话后,我们上面的代码可以改成这样

image

可以看到我们没有把cookie传过去,但是还是登录成功了,这是因为session会自动帮你处理这些,会自动帮你管理cookie

我们可以打印看下我们请求的headers

image

可以看到headers里面自动加上了cookie

最后所有的代码都在kimg1234/pachong

最后再次总结一下

看完本篇文章后,你应该要

能理解User-Agent,cookie的作用了解requests中的session用法了解如何模拟登录一个网页

如果你对requests这个库不太熟悉的话,你可以在快速上手 - Requests 2.10.0 文档浏览。



扫码加微信详细咨询太和智慧养老产品和平台服务!



扫码加微信详细咨询太和智慧养老产品和平台服务!

 

 





版权声明:

---------------------------------------------------------------


所有信息来源于互联网,本文的版权归原作者所有,不代表本网观点和立场。

本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 81480447@qq.com 举报,一经查实,本站将立刻删除。



扫码加微信详细咨询太和智慧养老产品和平台服务!

 

养老资讯
助老机构介绍
评论
已有 0 条评论

最新评论

推荐养老院

您希望养老院位于
  • 不限
  • 东城
  • 西城
  • 崇文
  • 宣武
  • 朝阳
  • 丰台
  • 石景山
  • 海淀
  • 门头沟
  • 房山
  • 通州
  • 顺义
  • 昌平
  • 大兴
  • 怀柔
  • 平谷
  • 延庆
  • 密云
您希望的价格范围
  • 不限
  • 500以下
  • 500-1000
  • 1000-2000
  • 2000-3000
  • 3000-5000
  • 5000以上
老人的情况是
  • 不限
  • 自理
  • 半自理
  • 全护理
  • 特护

姓名

年龄

电话

全国城市养老院



关于我们 | 联系方式 | 网站地图 | 友情链接

Copyright 2010-2022 京ICP备18035644号-3 北京太和 版权所有