Python实战:利用Scrapy与browsercookie获取浏览器Cookie进行博客爬取

一颗松果
一颗松果
发布时间:2026-10-14| 5人浏览过
原创

本文详解如何在Python Scrapy框架中集成browsercookie库,通过读取本地Firefox浏览器的Cookie实现免登录爬取。重点讲解如何替换默认的CookiesMiddleware,处理Chrome 80版本后的加密差异,并演示如何构造POST请求完成自动化点赞操作,为需要登录态的爬虫提供实用方案。

browsercookie 知识铺垫

首先需要掌握的关键技术点是利用 browsercookie 库提取浏览器中存储的 Cookie。该库可以通过执行 pip install browsercookie 命令进行安装,这是后续操作的基础环境准备。

在获取 firefox 浏览器的 Cookie 时,我们特意避开了 chrome 谷歌浏览器。这是因为在 80 版本之后,Chrome 对 Cookie 的加密机制进行了调整,导致直接使用 browsercookie 模块处理 Chrome Cookie 时会抛出如下错误信息。


win32crypt must be available to decrypt Chrome cookie on Windows

获取 Cookie 的具体代码实现如下所示:


import browsercookie

firefox_cookiejar = browsercookie.firefox()

for c in firefox_cookiejar:
    print(c)

执行上述代码后,终端将输出如下格式的内容,展示提取到的 Cookie 数据。

成功获取 Cookies 后,即可访问那些需要登录权限才能查看的页面。需要注意的是,这一操作的前提是用户必须在对应的火狐浏览器中已经成功登录过一次目标网站。

以某管理中心为例,在火狐浏览器完成登录后,利用 browsercookie 提取出的 Cookie 可以直接用于访问后台接口,无需再次手动输入账号密码。


import browsercookie
import requests

firefox_cookiejar = browsercookie.firefox()

# for c in firefox_cookiejar:
#     print(c)

res = requests.get("https://img-home.csdnimg.cn/data_json/jsconfig/menu_path.json", cookies=firefox_cookiejar)
print(res.text)

通过这种方式,程序可以直接获取到后台菜单列表等受保护资源。

使用 browsercookie 实现 自动化点赞

在 Scrapy 框架中,系统已经内置了一个 CookiesMiddleware 中间件用于处理 Cookie 逻辑。本次实战中,我们将通过继承 CookiesMiddleware 类,并结合 browsercookie 库来开发一个点赞器。这是一个测试案例,并未启用并发处理以提高调试效率。

打开 middlewares.py 文件,在其中编写自定义的中间件类:


from scrapy.downloadermiddlewares.cookies import CookiesMiddleware
import browsercookie
class BrowserCookiesDownloaderMiddleware(CookiesMiddleware):
    def __init__(self, debug=False):
        super().__init__(debug)
        self.load_browser_cookies()

    def load_browser_cookies(self):
        # 注意这个地方的名字叫做 firefox
        jar = self.jars['firefox']
        firefox_cookiejar = browsercookie.firefox()
        for cookie in firefox_cookiejar:
            jar.set_cookie(cookie)

上述自定义类的核心逻辑在于调用 browsercookie 模块来提取浏览器的 Cookie,并将其存储到 CookieJar 类型的字典 jars 中。在后续发起网络请求时,程序会从该字典中读取并调用相应的 Cookie 信息。

同时,需要在 settings.py 配置文件中禁用默认的 CookiesMiddleware 中间件,并启用我们刚才自定义的新类,以确保 Scrapy 使用我们定制的 Cookie 处理逻辑。


DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': None,
    'csdn.middlewares.BrowserCookiesDownloaderMiddleware': 543,
}

在编写爬虫的核心函数时,重点是将 Request 请求修改为 POST 请求,并携带必要的参数,同时通过 meta={'cookiejar':COOKIEJAR} 指定使用的 CookieJar。具体代码如下所示:


import scrapy
class ClikeSpider(scrapy.Spider):
    name = 'clike'
    allowed_domains = ['csdn.net']
    like_url = 'https://blog.csdn.net/phoenix/web/v1/article/like'
    def start_requests(self):
        data = {
            "articleId": "120845464",
        }
        yield scrapy.FormRequest(url=self.like_url, formdata=data, meta={'cookiejar': 'firefox'})
    def parse(self, response):
        print(response.json())

运行爬虫程序后,观察日志输出可以发现点赞操作已成功执行。

以上就是 Python 实战 Scrapy 操作 Cookie 爬取博客涉及 browsercookie 的详细内容,更多关于 Scrapy 操作 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 算法库。