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 相关文章推荐
Django日志模块logging的配置详解
Feb 14 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
Jul 22 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
numpy中的ndarray方法和属性详解
May 27 Python
python opencv 简单阈值算法的实现
Aug 04 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Python SMTP配置参数并发送邮件
Jun 16 Python
keras CNN卷积核可视化,热度图教程
Jun 22 Python
linux mint中搜狗输入法导致pycharm卡死的问题
Oct 28 Python
python中的yield from语法快速学习
Nov 06 Python
Python+Tkinter制作专属图形化界面
Apr 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、Java des加密解密实例
2015/04/27 PHP
php轻松实现文件上传功能
2016/03/03 PHP
javaScript parseInt字符转化为数字函数使用小结
2009/11/05 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
分析Node.js connect ECONNREFUSED错误
2013/04/09 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
js获取html页面代码中图片地址的实现代码
2018/03/05 Javascript
vue ssr 指南详读
2018/06/29 Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
2018/08/27 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
2020/11/04 Javascript
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
解决phantomjs截图失败,phantom.exit位置的问题
2018/05/17 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
2019/05/18 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
Python的条件锁与事件共享详解
2019/09/12 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
解决python运行效率不高的问题
2020/07/20 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
基于HTML5的WebGL经典3D虚拟机房漫游动画
2017/11/15 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
意大利时尚奢侈品店:D’Aniello Boutique
2021/01/19 全球购物
运动会四百米广播稿
2014/01/19 职场文书
家庭困难证明
2014/10/12 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android