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作用域用法实例详解
Mar 15 Python
python模块之re正则表达式详解
Feb 03 Python
对python中执行DOS命令的3种方法总结
May 12 Python
Python实现通过继承覆盖方法示例
Jul 02 Python
对Django外键关系的描述
Jul 26 Python
python 多进程并行编程 ProcessPoolExecutor的实现
Oct 11 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
Python实现鼠标自动在屏幕上随机移动功能
Mar 14 Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 Python
什么是python的自省
Jun 21 Python
Python字符串三种格式化输出
Sep 17 Python
golang中的空接口使用详解
Mar 30 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
php验证是否是md5编码的简单代码
2014/04/01 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
漂亮的widgets,支持换肤和后期开发新皮肤
2007/04/23 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
详解react-native-fs插件的使用以及遇到的坑
2017/09/12 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
探究Python多进程编程下线程之间变量的共享问题
2015/05/05 Python
python多进程读图提取特征存npy
2019/05/21 Python
python实现名片管理器的示例代码
2019/12/17 Python
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
华为python面试题
2016/05/03 面试题
销售员求职个人的自我评价
2014/02/19 职场文书
感恩父母的演讲稿
2014/05/06 职场文书
讲文明知礼仪演讲稿
2014/09/13 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
期末考试复习计划
2015/01/19 职场文书
统计工作个人总结
2015/03/03 职场文书
紫日观后感
2015/06/05 职场文书
长江七号观后感
2015/06/11 职场文书
同意落户证明
2015/06/19 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL