Python爬虫利用Cookie实现自动登录的完整指南

温以宁
温以宁
发布时间:2026-10-13| 3人浏览过
原创

本文详解Python爬虫中如何利用Urllib库保存和复用Cookie实现网站自动登录。通过解析urlopen参数、构造Request对象及设置Headers,结合POST/GET请求示例,展示从抓包分析到代码实现的完整流程,帮助开发者突破登录限制。

前言:

什么是Cookie?

Cookie是指某些网站为了辨别用户身份、进行Session跟踪而储存在用户本地终端上的数据(通常经过加密)。

例如,部分网站要求用户登录后才能访问特定页面。在登录前直接抓取页面内容通常会失败。此时,我们可以利用Urllib库保存登录后的Cookie,随后在后续请求中携带该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介绍

urlopen函数常用的参数有三个,具体如下:

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属性。)

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/'

查看登录的request网址

2、查看要传送的post数据

在登录后的Request中找到webforms信息,其中列出了登录所需的POST数据,包括Email、password和auth。

webforms信息

3、查看headers信息

在登录后的Request中找到headers信息,提取User-Agent设置、connection设置等内容。

User-Agent设置、connection设置

4、开始编码,使用cookie登录该网站

5、反复使用cookie登录

(在上述代码中我们将cookie保存到了本地,以下代码演示如何直接从文件导入cookie进行登录,无需再重新构建Request。)

总结

以上就是本文关于Python爬虫使用Cookie登录的详解全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。