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找出9个连续的空闲端口
Feb 01 Python
python自定义异常实例详解
Jul 11 Python
python书籍信息爬虫实例
Mar 19 Python
从请求到响应过程中django都做了哪些处理
Aug 01 Python
python使用循环打印所有三位数水仙花数的实例
Nov 13 Python
pandas进行时间数据的转换和计算时间差并提取年月日
Jul 06 Python
Django 过滤器汇总及自定义过滤器使用详解
Jul 19 Python
Python基于class()实现面向对象原理详解
Mar 26 Python
python -v 报错问题的解决方法
Sep 15 Python
python3中for循环踩过的坑记录
Dec 14 Python
python 提取html文本的方法
May 20 Python
Python加密与解密模块hashlib与hmac
Jun 05 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
关于时间计算的结总
2006/12/06 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
PHP+Ajax实时自动检测是否联网的方法
2015/07/01 PHP
php实现搜索类封装示例
2016/03/31 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
vue 1.0 结合animate.css定义动画效果
2018/07/11 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
将Django使用的数据库从MySQL迁移到PostgreSQL的教程
2015/04/11 Python
python实现在每个独立进程中运行一个函数的方法
2015/04/23 Python
python实现list由于numpy array的转换
2018/04/04 Python
python中时间模块的基本使用教程
2019/05/14 Python
解决Python内层for循环如何break出外层的循环的问题
2019/06/24 Python
python文件选择对话框的操作方法
2019/06/27 Python
pytorch简介
2020/11/11 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
经济学人订阅:The Economist
2018/07/19 全球购物
师范应届生教师求职信
2013/11/05 职场文书
家长给孩子的评语
2014/01/30 职场文书
中学清明节活动总结
2014/07/04 职场文书
超市创意活动方案
2014/08/15 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
详细总结Python常见的安全问题
2021/05/21 Python
Python绘画好看的星空图
2022/03/17 Python
CentOS7安装GlusterFS集群以及相关配置
2022/04/12 Servers
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技
mysql数据库隔离级别详解
2022/06/16 MySQL