python爬虫使用cookie登录详解


Posted in Python onDecember 27, 2017

前言:

什么是cookie?

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的。那么我们可以利用Urllib库保存我们登录的Cookie,然后再抓取其他页面,这样就达到了我们的目的。

一、Urllib库简介

Urllib是python内置的HTTP请求库,官方地址:https://docs.python.org/3/library/urllib.html

包括以下模块:

>>>urllib.request请求模块

>>>urllib.error异常处理模块

>>>urllib.parseurl解析模块

>>>urllib.robotparserrobots.txt解析模块

二、urllib.request.urlopen介绍

uurlopen一般常用的有三个参数,它的参数如下:

urllib.requeset.urlopen(url,data,timeout)

简单的例子:

1、url参数的使用(请求的URL)

response=urllib.request.urlopen('http://www.baidu.com')

2、data参数的使用(以post请求方式请求)

data=bytes(urllib.parse.urlencode({'word':'hello'}),encoding='utf8')

response=urllib.request.urlopen('http://www.baidu.com/post',data=data)

3、timeout参数的使用(请求设置一个超时时间,而不是让程序一直在等待结果)

response=urllib.request.urlopen('http://www.baidu.com/get',timeout=4)

三、构造Requset

1、数据传送POST和GET(举例说明:此处列举登录的请求,定义一个字典为values,参数为:email和password,然后利用urllib.parse.urlencode方法将字典编码,命名为data,构建request时传入两个参数:url、data。运行程序,即可实现登陆。)

GET方式:直接以链接形式访问,链接中包含了所有的参数。

LOGIN_URL="http://fr*****.aflt.kiwisns.com/postLogin/"

values={'email':'*******@user.com','password':'123456'}

data=urllib.parse.urlencode(values).encode()

geturl=LOGIN_URL+"?"+data

request=urllib.request.Request(geturl)

POST方式:上面说的data参数就是用在这里的,我们传送的数据就是这个参数data。

LOGIN_URL='http://fr*****.aflt.kiwisns.com/postLogin/'

values={'email':'*******@user.com','password':'123456'}

data=urllib.parse.urlencode(values).encode()

request=urllib.request.Request(URL,data)

2、设置Headers(有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers的属性)

python爬虫使用cookie登录详解

fiddler抓包请求-headers

上图可以看到该请求的headers,这个头中包含了许多信息:Cache、Client、Transport等等。其中,agent就是请求的身份,如果没有写入请求身份,那么服务器不一定会响应,所以可以在headers中设置agent。

举例:(这个例子只是说明了怎样设置headers)

user_agent=r'Mozilla/5.0(WindowsNT6.1;Win64;x64;rv:55.0)Gecko/20100101Firefox/55.0'

headers={'User-Agent':user_agent,'Connection':'keep-alive'}

request=urllib.request.Request(URL,data,headers)

四、使用cookie登录

1、获取登录网址

浏览器输入需要登录的网址:'http://fr*****.aflt.kiwisns.com/login'(注意:这个并非其真实站点登录网址),使用抓包工具fiddler抓包(其他工具也可)找到登录后看到的request。

此处确定需要登录的网址为:'http://fr*****.aflt.kiwisns.com/postLogin/'

python爬虫使用cookie登录详解

查看登录的request网址

2、查看要传送的post数据

找到登录后的request中有webforms的信息,会列出登录要用的post数据,包括Email,password,auth。

python爬虫使用cookie登录详解

webforms信息

3、查看headers信息

找到登录后看到的request的headers信息,找出User-Agent设置、connection设置等

python爬虫使用cookie登录详解

User-Agent设置、connection设置

4、开始编码,使用cookie登录该网站

python爬虫使用cookie登录详解

5、反复使用cookie登录

(上面代码中我们保存cookie到本地了,以下代码我们能够直接从文件导入cookie进行登录,不用再构建request了)

python爬虫使用cookie登录详解

总结

以上就是本文关于python爬虫使用cookie登录详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python切换pip安装源的方法详解
Nov 18 Python
Python搭建HTTP服务器和FTP服务器
Mar 09 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
python实现趣味图片字符化
Apr 30 Python
python实现复制文件到指定目录
Oct 16 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
Django中Aggregation聚合的基本使用方法
Jul 09 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 #Python
Python并发编程协程(Coroutine)之Gevent详解
Dec 27 #Python
利用 python 对目录下的文件进行过滤删除
Dec 27 #Python
python中使用%与.format格式化文本方法解析
Dec 27 #Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 #Python
python中的迭代和可迭代对象代码示例
Dec 27 #Python
python并发编程之线程实例解析
Dec 27 #Python
You might like
慎用preg_replace危险的/e修饰符(一句话后门常用)
2013/06/19 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
PHP聊天室简单实现方法详解
2018/12/08 PHP
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
vue左侧菜单,树形图递归实现代码
2018/08/24 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
移动端手指操控左右滑动的菜单
2019/09/08 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
详解Python中的正则表达式的用法
2015/04/09 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Python实现购物程序思路及代码
2017/07/24 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
python实现录音小程序
2020/10/26 Python
win10下python3.5.2和tensorflow安装环境搭建教程
2018/09/19 Python
在python中bool函数的取值方法
2018/11/01 Python
python 带时区的日期格式化操作
2020/10/23 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
介绍一下gcc特性
2015/10/31 面试题
成人教育自我鉴定
2013/11/01 职场文书
关于美容院的活动方案
2014/08/14 职场文书
技术经济专业求职信
2014/09/03 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
服务承诺书
2015/01/19 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
Nebula Graph解决风控业务实践
2022/03/31 MySQL