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 更新ssh 远程代码 操作远程服务器的实现代码
Feb 08 Python
python快速建立超简单的web服务器的实现方法
Feb 17 Python
Python socket套接字实现C/S模式远程命令执行功能案例
Jul 06 Python
使用python批量化音乐文件格式转换的实例
Jan 09 Python
三步实现Django Paginator分页的方法
Jun 11 Python
python正则表达式匹配不包含某几个字符的字符串方法
Jul 23 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
Mar 05 Python
Python实现手绘图效果实例分享
Jul 22 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
Python获取江苏疫情实时数据及爬虫分析
Aug 02 Python
Python中递归以及递归遍历目录详解
Oct 24 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调用Oracle存储过程
2006/10/09 PHP
php实现mysql数据库备份类
2008/03/20 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
JSQL 基于客户端的成绩统计实现方法
2010/05/05 Javascript
JS对select控件option选项的增删改查示例代码
2013/10/21 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
javascript中parseInt()函数的定义和用法分析
2014/12/20 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
深入浅析JavaScript函数前面的加号和叹号
2016/07/09 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
2018/06/13 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
分享JS表单验证源码(带错误提示及密码等级)
2020/01/05 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
Python使用minidom读写xml的方法
2015/06/03 Python
python spyder中读取txt为图片的方法
2018/04/27 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
python如何输出反斜杠
2020/06/18 Python
Python 合并拼接字符串的方法
2020/07/28 Python
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
主持人演讲稿范文
2013/12/28 职场文书
审计班子对照检查材料
2014/08/27 职场文书
学校师德师风整改方案
2014/10/28 职场文书
乐山大佛导游词
2015/02/02 职场文书
校园开放日新闻稿
2015/07/17 职场文书
解决hive中导入text文件遇到的坑
2021/04/07 Python
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
mysql left join快速转inner join的过程
2021/06/30 MySQL
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL