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数据分析中Groupby用法之通过字典或Series进行分组的实例
Dec 08 Python
python2.7到3.x迁移指南
Feb 01 Python
python TCP Socket的粘包和分包的处理详解
Feb 09 Python
Python子类继承父类构造函数详解
Feb 19 Python
Python3 批量扫描端口的例子
Jul 25 Python
python多线程与多进程及其区别详解
Aug 08 Python
3行Python代码实现图像照片抠图和换底色的方法
Oct 10 Python
python 生成器和迭代器的原理解析
Oct 12 Python
Python3爬虫关于识别检验滑动验证码的实例
Jul 30 Python
Python pygame实现中国象棋单机版源码
Jun 20 Python
Python利用机器学习算法实现垃圾邮件的识别
Jun 28 Python
Python面向对象编程之类的概念
Nov 01 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单链表实现代码分享
2016/07/04 PHP
PHP使用PDO调用mssql存储过程的方法示例
2017/10/07 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
javascript 获取图片颜色
2009/04/05 Javascript
基于jquery的无缝循环新闻列表插件
2011/03/07 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
原生的html元素选择器类似jquery选择器
2014/10/15 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
js和C# 时间日期格式转换的简单实例
2016/05/28 Javascript
Angular2安装angular-cli
2017/05/21 Javascript
JS数组操作中的经典算法实例讲解
2017/07/26 Javascript
详解10分钟学会vue滚动行为
2017/09/21 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
vue 获取及修改store.js里的公共变量实例
2019/11/06 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
python删除某个字符
2018/03/19 Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
2018/05/21 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
python中关于数据类型的学习笔记
2020/07/19 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
成人教育自我鉴定
2013/11/01 职场文书
审计主管岗位职责
2014/01/31 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
2015年财务部工作总结
2015/04/10 职场文书
城南旧事读书笔记
2015/06/29 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书
Python入门之基础语法详解
2021/05/11 Python
如何使用SQL Server语句创建表
2022/04/12 SQL Server
MySQL数据库事务的四大特性
2022/04/20 MySQL