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分割和拼接字符串
Nov 01 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
Python实现的计算器功能示例
Apr 26 Python
Python代码缩进和测试模块示例详解
May 07 Python
Python输出\u编码将其转换成中文的实例
Dec 15 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
Python求正态分布曲线下面积实例
Nov 20 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
Mar 18 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
Pandas中两个dataframe的交集和差集的示例代码
Dec 13 Python
Python爬虫数据的分类及json数据使用小结
Mar 29 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
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
Javascript优化技巧(文件瘦身篇)
2008/01/28 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
密码框显示提示文字jquery示例
2013/08/29 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
js判断为空Null与字符串为空简写方法
2014/02/24 Javascript
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jquery+html5制作超酷的圆盘时钟表
2015/04/14 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
动态JavaScript所造成一些你不知道的危害
2016/09/25 Javascript
jQuery中Datatables增加跳转到指定页功能
2017/02/08 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
使用vue中的v-for遍历二维数组的方法
2018/03/07 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Python中的异常处理try/except/finally/raise用法分析
2019/02/28 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Servlet面试题库
2015/07/18 面试题
体育专业个人的求职信范文
2013/09/21 职场文书
财务副总经理工作职责
2013/11/25 职场文书
校园自助餐厅的创业计划书
2013/12/26 职场文书
教学评估实施方案
2014/03/16 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
仲裁协议书
2014/09/26 职场文书
初二学生评语大全
2014/12/26 职场文书
pytorch锁死在dataloader(训练时卡死)
2021/05/28 Python
Python pandas求方差和标准差的方法实例
2021/08/04 Python