博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-爬虫之requests模块介绍(登陆github)
阅读量:4696 次
发布时间:2019-06-09

本文共 2027 字,大约阅读时间需要 6 分钟。

介绍

使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(本质就是封装了urllib3)

注意

requests库发送请求将网页内容下载下来以后,并不会执行js代码,这需要我们自己分析目标站点然后发起新的request请求

安装

pip3 install requests

GET请求

requests.get(url="",headers={
'User-Agent':'',      'Referer':'',},Cookie={}, ) #headers:请求头信息,User-Agent:浏览器标识,Referer:上次请求的url

POST请求

#GET请求HTTP默认的请求方法就是GET     * 没有请求体     * 数据必须在1K之内!     * GET请求数据会暴露在浏览器的地址栏中GET请求常用的操作:       1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求       2. 点击页面上的超链接也一定是GET请求       3. 提交表单时,表单默认使用GET请求,但可以设置为POST#POST请求(1). 数据不会出现在地址栏中(2). 数据的大小没有上限(3). 有请求体(4). 请求体中如果存在中文,会使用URL编码!#!!!requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据

发送post请求,模拟浏览器的登录行为

'''一 目标站点分析    浏览器输入https://github.com/login    然后输入错误的账号密码,抓包    发现登录行为是post提交到:https://github.com/session    而且请求头包含cookie    而且请求体包含:        commit:Sign in        utf8:✓        authenticity_token:lbI8IJCwGslZS8qJPnof5e7ZkCoSoMn6jmDTsL1r/m06NLyIbw7vCrpwrFAPzHMep3Tmf/TSJVoXWrvDZaVwxQ==        login:egonlin        password:123二 流程分析    先GET:https://github.com/login拿到初始cookie与authenticity_token    返回POST:https://github.com/session, 带上初始cookie,带上请求体(authenticity_token,用户名,密码等)    最后拿到登录cookie    ps:如果密码时密文形式,则可以先输错账号,输对密码,然后到浏览器中拿到加密后的密码,github的密码是明文'''import requestsimport re#第一次请求r1=requests.get('https://github.com/login')r1_cookie=r1.cookies.get_dict() #拿到初始cookie(未被授权)authenticity_token=re.findall(r'name="authenticity_token".*?value="(.*?)"',r1.text)[0] #从页面中拿到CSRF TOKEN#第二次请求:带着初始cookie和TOKEN发送POST请求给登录页面,带上账号密码data={    'commit':'Sign in',    'utf8':'✓',    'authenticity_token':authenticity_token,    'login':'xxxxxx',    'password':'xxxxx'}r2=requests.post('https://github.com/session',             data=data,             cookies=r1_cookie             )login_cookie=r2.cookies.get_dict()#第三次请求:以后的登录,拿着login_cookie就可以,比如访问一些个人配置r3=requests.get('https://github.com/settings/emails',                cookies=login_cookie)print('xxxx' in r3.text) #True自动登陆github(自己处理cookie)

 

转载于:https://www.cnblogs.com/liuzhongchao/p/8320190.html

你可能感兴趣的文章
SharePoint 2010版本表
查看>>
【BootStrap】初步教程
查看>>
Codeforces Round #152 (Div. 2)总结
查看>>
VC++6.0编译器标记的那些内存值
查看>>
BFC清除浮动
查看>>
Java关键字(五)——this
查看>>
使用tomcat的时候,网页地址出现中文,出现不认识编码导致查询无法完成解决方案...
查看>>
无法启动mysql服务,错误提示 1067:进程意外终止
查看>>
The request was denied by service delegate (SBMainWorkspace) for reason: Unspecified.
查看>>
关于Django的序列化问题。serializers
查看>>
判断浏览器内核,包括移动端
查看>>
智能电视领域的6个创业机会(转)
查看>>
HTTP请求、响应报文格式
查看>>
Android“寄生兽”漏洞技术分析
查看>>
jQuery代码在移动端不运行
查看>>
unbuntu 安装nginx
查看>>
【Oracle】Oracle中复合数据类型
查看>>
秀一下偶的数码奖品
查看>>
C# winform中Show()和ShowDialog()的区别
查看>>
linux uname命令参数及用法详解--linux查看系统信息命令
查看>>