python使用requests模块模拟登陆知乎
from bs4 import BeautifulSoup
import requests
import time def captcha(captcha_data):
with open("captcha.jpg",'wb') as f:
f.write(captcha_data)
text=input("请输入验证码")
def zhihuLogin():
#构建一个session对象,可以保存cookie(相当于urllib中用的cookiejar)
sess= requests.Session()
#请求报头
headers={"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"} #首先获取登陆页面,找到需要POST的数据,同时记录当前页的cookie值
html=sess.get("https://www.zhihu.com/#signin",headers=headers).text
bs=BeautifulSoup(html,"lxml")
#获取之前get的页面的_xsrf值
#_xsrf防止CSRF攻击(跨站请求伪造),通常叫做跨域攻击,是一种利用网站对用户的一种信任机制来做坏事。
#跨域攻击一般伪装成网站信任的用户请求(利用cookie),盗取用户信息,欺骗web服务器
#所以网站会通过设置一个隐藏字段存放这个MD5字符串,这个字符串用来校验用户cookie和服务器cookie
_xsrf=bs.find("input",attrs={"name":"_xsrf"}).get("value") #验证码的链接获取,观察发现r的值是根据unix时间戳变得
captcha_url="https://www.zhihu.com/captcha.gif?r=%d&type=login" % (time.time()*1000)
#发送请求得到图片数据流
captcha_data=sess.get(captcha_url,headers=headers).content
text=captcha(captcha_data) data={
"_xsrf":_xsrf,
"email":"邮箱",
"password":"密码",
"captcha":text
}
resqonse=sess.post("https://www.zhihu.com/login/email",data=data,headers=headers)
print(resqonse.text)
#获取个人主页源码
#myhomepageresqonse=sess.get("主页url",headers=headers)
if __name__=="__main__":
zhihuLogin()
python使用requests模块模拟登陆知乎的更多相关文章
- 【python爬虫】用requests库模拟登陆人人网
说明:以前是selenium登陆取cookie的方法比较复杂,改用这个 """ 用requests库模拟登陆人人网 """ import r ...
- Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗
介绍 本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容. 为了知道POST方法所需要传 ...
- Python之requests模块-hook
requests提供了hook机制,让我们能够在请求得到响应之后去做一些自定义的操作,比如打印某些信息.修改响应内容等.具体用法见下面的例子: import requests # 钩子函数1 def ...
- Python之requests模块-cookie
cookie并不陌生,与session一样,能够让http请求前后保持状态.与session不同之处,在于cookie数据仅保存于客户端.requests也提供了相应到方法去处理cookie. 在py ...
- Python之requests模块-session
http协议本身是无状态的,为了让请求之间保持状态,有了session和cookie机制.requests也提供了相应的方法去操纵它们. requests中的session对象能够让我们跨http请求 ...
- Python之requests模块-request api
requests所有功能都能通过"requests/api.py"中的方法访问.它们分别是: requests.request(method, url, **kwargs) req ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- 第十二篇 requests模拟登陆知乎
了解http常见状态码 可以通过输入错误的密码来找到登陆知乎的post:url 把Headers拉到底部,可以看到form data _xsrf是需要发送的,需要发送给服务端,否则会返回403错误,提 ...
- python模拟登陆知乎并爬取数据
一些废话 看了一眼上一篇日志的时间 已然是5个月前的事情了 不禁感叹光阴荏苒其实就是我懒 几周前心血来潮想到用爬虫爬些东西 于是先后先重写了以前写过的求绩点代码 爬了草榴贴图,妹子图网,后来想爬婚恋网 ...
随机推荐
- SPOJ PGCD
今天做的一个很有成就感的题目,虽然经过我一个上午的痛苦挣扎,但是我觉得这个时间还是花的挺有意义的. 题目的意思是给你a和b两个数(范围是10^7),从1-a选一个数x,从1-b中间选择一个数,问你能选 ...
- hdfs源码分析第二弹
以写文件为例,串联整个流程的源码: FSDataOutputStream out = fs.create(outFile); 1. DistributedFileSystem 继承并实现了FileSy ...
- 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp
题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...
- 插件-3D轮播图
先上效果图 查看实例点击 这里 这个栗子中,可以选择展示 5 张 或者展示 3 张,即使是只有一个slide,也可以完成布局,正常轮播,麻麻再也不用怕只有4个slid而不能用这种轮播啦! 本栗实现原 ...
- C 类网络的子网快速划分
CIDR ( Classless Inter-Domain Routing ,无类域间路由选择) 进行子网划分的方法有很多,最适合你的方式就是正确的方式.在 C 类地址中,只有 8 位用于定义主机.注 ...
- ans_rproxy 说明
ans_rproxy 说明 网络IP资源分配 Windows2008R2: IP: 172.16.204.50/24 Gateway: 172.16.204.1 ...
- 【容斥原理,莫比乌斯反演】用容斥替代莫比乌斯反演第二种形式解决gcd统计问题
名字虽然很长.但是其实很简单,对于这一类问题基本上就是看你能不能把统计的公式搞出来(这时候需要一个会推公式的队友) 来源于某次cf的一道题,盼望上紫的我让潘学姐帮我代打一道题,她看了看跟我说了题解,用 ...
- 【noip2018】【luogu5021】赛道修建
题目描述 C 城将要举办一系列的赛车比赛.在比赛前,需要在城内修建 mm 条赛道. C 城一共有 nn 个路口,这些路口编号为 1,2,…,n1,2,…,n,有 n-1n−1 条适合于修建赛道的双向通 ...
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
一.什么是继承 继承是一种创建新的类的方式,在pyth ...
- C++中Vector求最大值最小值
vector<int> v: 最大值: int max = *max_element(v.begin(),v.end()); 最小值: int min = *min_element(v.b ...