python爬虫使用cookie登录详解

作者:__搁浅 时间:2023-10-13 06:36:39 

前言:

什么是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登录详解

来源:https://www.cnblogs.com/xiaoxi-3-/p/7586072.html

标签:python,爬虫,cookie
0
投稿

猜你喜欢

  • Python 动态变量名定义与调用方法

    2023-07-29 22:36:05
  • matlab xlabel位置的设置方式

    2022-06-11 06:51:24
  • 关于MySql 10038错误的完美解决方法(三种)

    2024-01-27 06:16:18
  • 别人复制你网站的文章时自动加上注释

    2009-02-09 13:20:00
  • python 统计一个列表当中的每一个元素出现了多少次的方法

    2021-09-21 13:48:32
  • tensorflow之获取tensor的shape作为max_pool的ksize实例

    2022-10-09 01:41:53
  • python正则表达式 匹配反斜杠的操作方法

    2023-09-04 22:18:52
  • Python 类的继承实例详解

    2021-04-30 15:54:09
  • 用server.transfer隐藏网页真实地址

    2007-12-04 13:02:00
  • Python使用arrow库优雅地处理时间数据详解

    2023-02-26 07:14:12
  • 在PyCharm的 Terminal(终端)切换Python版本的方法

    2021-10-31 08:37:07
  • vue中记录滚动条位置的两种方法

    2024-04-27 15:59:33
  • python打开url并按指定块读取网页内容的方法

    2023-07-07 11:00:36
  • 如何写python的配置文件

    2022-08-06 15:57:09
  • PHP之CI框架学习讲解

    2023-07-03 21:25:13
  • Mootools常用方法扩展(五)

    2009-03-03 12:12:00
  • 如何列举Error的所有对象?

    2010-01-12 20:01:00
  • 怎么让别人看不到网页源代码

    2008-03-21 13:06:00
  • javascript中Array()数组函数详解

    2024-04-17 10:23:36
  • Python通过m3u8文件下载合并ts视频的操作

    2023-07-19 04:36:51
  • asp之家 网络编程 m.aspxhome.com