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 返回汉字的汉语拼音
Feb 27 Python
python爬虫常用的模块分析
Aug 29 Python
如何解决django配置settings时遇到Could not import settings 'conf.local'
Nov 18 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
python requests 使用快速入门
Aug 31 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
Python OpenCV中的resize()函数的使用
Jun 20 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
浅谈pycharm使用及设置方法
Sep 09 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 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
使用php+xslt在windows平台上
2006/10/09 PHP
PHP操作文件方法问答
2007/03/16 PHP
window+nginx+php环境配置 附配置搭配说明
2010/12/29 PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
2013/11/12 PHP
php中switch语句用法详解
2015/08/17 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
javascript中检测变量的类型的代码
2010/12/28 Javascript
jQuery 一个图片切换的插件
2011/10/09 Javascript
js输入框邮箱自动提示功能代码实现
2013/12/10 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
python3批量删除豆瓣分组下的好友的实现代码
2016/06/07 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
Kendra Scott官网:美国领先的时尚配饰品牌
2020/10/22 全球购物
汽车销售求职自荐信
2013/10/01 职场文书
教职工代表大会主持词
2014/04/01 职场文书
工程承包协议书范本
2014/09/29 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
廉政承诺书
2015/01/19 职场文书
小学二年级班主任工作经验交流材料
2015/11/02 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang