讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在Scrapy中实现对敏感数据的自动加密存储Pipeline?

夜芳大大_2382

夜芳大大_2382

发布时间:2026-09-10 09:57:01

|

1030人浏览过

|

来源于php中文网

原创

Scrapy需手动集成加密逻辑,因数据库字段级加密使process_item无法感知加密状态,导致明文泄露、日志风险及密钥暴露;推荐用cryptography.Fernet在Pipeline中对敏感字段加密,密钥须从环境变量读取并严格管控生命周期。

如何在scrapy中实现对敏感数据的自动加密存储pipeline?

Scrapy 本身不提供加密能力,必须手动集成加密逻辑到 process_item() 中;直接在 Pipeline 里调用 hashlib 或 cryptography 是最可控、最易审计的做法。

SEO Automated Content Pipeline
SEO Automated Content Pipeline

SEO自动化内容管线技能。从竞争对手研究、关键词挖掘到文章生成与发布,全程自动化工作流。

下载

为什么不能只靠数据库字段级加密?

数据库层加密(如 MySQL 的 AES_ENCRYPT)会让 Scrapy 无法感知加密状态,导致: - process_item() 返回的 item 仍是明文,后续 Pipeline(比如去重、校验)可能误判; - 日志、调试输出、中间件捕获的数据全是原始值,敏感信息仍会泄露; - 加密密钥若硬编码在 SQL 语句里,等于暴露在配置或日志中。

如何用 cryptography 库安全加密指定字段?

推荐使用 cryptography 的 Fernet(对称加密),它强制要求密钥由 base64.urlsafe_b64encode() 编码,且自动处理 nonce 和 HMAC。操作要点: - 密钥必须从环境变量读取,绝不可写死在代码或 settings.py 里; - 只加密明确标记为敏感的字段(如 item["phone"]、item["id_card"]),非敏感字段保持原样; - 加密失败时抛出 DropItem,避免脏数据进入下游; - 不在 open_spider() 中初始化密钥,而是在 __init__() 里检查环境变量是否存在。

from cryptography.fernet import Fernet
from scrapy.exceptions import DropItem
import os
<p>class SensitiveDataEncryptPipeline:
def <strong>init</strong>(self):
key = os.getenv("ENCRYPTION_KEY")
if not key:
raise ValueError("ENCRYPTION_KEY 环境变量未设置")
self.cipher = Fernet(key.encode())</p><pre class='brush:python;toolbar:false;'>def process_item(self, item, spider):
    sensitive_fields = ["phone", "id_card", "email"]
    for field in sensitive_fields:
        if item.get(field):
            try:
                # 转为 bytes,加密,再转回 str 存入 item
                encrypted = self.cipher.encrypt(str(item[field]).encode())
                item[field] = encrypted.decode()  # 存 Base64 字符串
            except Exception as e:
                raise DropItem(f"加密 {field} 失败: {e}")
    return item

加密后怎么验证解密可用性?

别等到上线才发现密钥错位或编码异常。在本地调试时: - 启动爬虫前,用相同密钥手动加密一段测试值,确认能被 Fernet 正确解密; - 在 Pipeline 的 process_item() 末尾加临时断点,检查加密后字段是否为合法 Base64 字符串(可用 base64.b64decode(item["phone"], validate=True) 快速验证); - 如果用 SQLite 或 JSON 存储,加密字段必须是字符串类型,不能是 bytes,否则会报 TypeError: expected str, bytes or os.PathLike object; - 生产环境密钥轮换时,旧数据需配合迁移脚本解密再重加密,Pipeline 本身不处理多密钥兼容。

真正容易被忽略的是密钥生命周期管理——ENCRYPTION_KEY 一旦写进 Docker 镜像或 CI 日志,就等于失效。加密不是加个函数就完事,而是从密钥注入、字段标记、错误隔离到运维回滚,整条链路都得闭环。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
免费爬虫工具有哪些
免费爬虫工具有哪些

免费爬虫工具有Scrapy、Beautiful Soup、ParseHub、Octoparse、Webocton Scriptly、RoboBrowser和Goutte。更多关于免费爬虫工具的问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

5593

2023.11.10

pycharm怎么改成中文
pycharm怎么改成中文

PyCharm是一种Python IDE(Integrated Development Environment,集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。php中文网给大家带来了pycharm相关的教程以及文章,欢迎大家前来学习和阅读。

3349

2023.07.25

pycharm安装教程
pycharm安装教程

PyCharm是一款由JetBrains开发的Python集成开发环境(IDE),它提供了许多方便的功能和工具。本专题为大家带来pycharm安装教程,帮助大家解决问题。

6377

2023.08.21

如何解决pycharm找不到模块
如何解决pycharm找不到模块

解决pycharm找不到模块的方法:1、检查python解释器;2、安装缺失的模块;3、检查项目结构;4、检查系统路径;5、使用虚拟环境;6、重启PyCharm或电脑。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

738

2023.12.04

如何安装pycharm
如何安装pycharm

安装pycharm的步骤:1、访问PyCharm官方网站下载最新版本的PyCharm;2、下载完成后,打开安装文件;3、安装完成后,打开PyCharm;4、在PyCharm的主界面中等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

974

2024.02.23

python和pycharm的区别
python和pycharm的区别

Python和PyCharm是两个不同的概念,它们的区别如下:1、Python是一种编程语言,而PyCharm是一款Python集成开发环境;2、Python可以运行在各种不同的开发环境中,而PyCharm是专门为Python开发而设计的IDE等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

527

2024.02.23

pycharm环境如何配置
pycharm环境如何配置

配置教程:1、下载并安装PyCharm;2、选择Python解释器;3、配置虚拟环境;4、配置代码风格;5、配置调试器;6、配置版本控制工具;7、配置插件;8、配置Python路径和环境变量;9、配置其他选项。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

522

2024.02.23

pycharm解释器如何安装
pycharm解释器如何安装

安装步骤:1、打开PyCharm并打开你的项目;2、转到"File">“Settings”;3、在设置窗口中选择"Project">“Python Interpreter”;4、 点击“+” 符号添加新的解释器等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

343

2024.02.23

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

0

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Conan 2 安装指南
Conan 2 安装指南

共0课时 | 0人学习

Python虚拟环境官方教程
Python虚拟环境官方教程

共0课时 | 0人学习

Python venv官方模块文档
Python venv官方模块文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn