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 相关文章推荐
2款Python内存检测工具介绍和使用方法
Jun 01 Python
Python 实现字符串中指定位置插入一个字符
May 02 Python
python实现自动发送报警监控邮件
Jun 21 Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 Python
Django数据库类库MySQLdb使用详解
Apr 28 Python
python实现中文文本分句的例子
Jul 15 Python
PyTorch预训练的实现
Sep 18 Python
Python 迭代,for...in遍历,迭代原理与应用示例
Oct 12 Python
Python语言异常处理测试过程解析
Jan 08 Python
django admin后管定制-显示字段的实例
Mar 11 Python
Python 如何测试文件是否存在
Jul 31 Python
通过实例简单了解Python sys.argv[]使用方法
Aug 04 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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
PHP加密解密类实例代码
2016/07/20 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
JS禁止浏览器右键查看元素或按F12审查元素自动关闭页面示例代码
2017/09/07 Javascript
微信小程序支付及退款流程详解
2017/11/30 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python基于辗转相除法求解最大公约数的方法示例
2018/04/04 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
2018/07/02 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
python修改文件内容的3种方法详解
2019/11/15 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
HTML5+CSS3:3D展示商品信息示例
2017/01/03 HTML / CSS
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
班级安全教育实施方案
2014/02/23 职场文书
我为自己代言广告词
2014/03/18 职场文书
献爱心捐款倡议书
2014/05/14 职场文书
学校党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
html5表单的required属性使用
2021/07/07 HTML / CSS
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript