电商价格监控系统的反爬虫对抗实战:请求头指纹与设备一致性

简介: 本文揭秘爬虫被封主因——非IP或UA问题,而是请求头不全与设备指纹不一致。详解完整请求头配置、Python设备指纹生成器及智能爬虫实现,实战将拒访率从35%降至3%以下。(239字)

一、为什么加了UA和代理还是被封?
很多开发者遇到这个问题:明明加了User-Agent伪装、配置了代理IP池,爬虫还是一跑就被封。
核心原因:90%的爬虫被封,不是因为IP不够多、UA不够真,而是忽略了请求头完整性和设备指纹一致性。现代网站的反爬早已从"单一特征识别"升级为"多维度行为校验"。
二、请求头指纹详解
一个真实的浏览器请求包含数十个请求头字段,而大多数爬虫只设置了UA:
text

不完整的请求头 → 容易被识别headers = {"User-Agent": "Mozilla/5.0..."}# 完整的请求头 → 更像真实浏览器headers = { "User-Agent": "Mozilla/5.0 ...", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8", "Accept-Language": "zh-CN,zh;q=0.9,ja;q=0.8,en;q=0.7", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Cache-Control": "max-age=0"}

三、设备指纹一致性实现
python
import randomimport hashlibimport timeclass DeviceFingerprint: """设备指纹生成器 - 保证每次请求的指纹一致""" def init(self, device_id: str = None): self.device_id = device_id or self._generate_device_id() self.fingerprint = self._build_fingerprint() def _generate_device_id(self) -> str: """生成唯一设备ID""" base = f"{time.time()}{random.randint(1000, 9999)}" return hashlib.md5(base.encode()).hexdigest()[:16] def _build_fingerprint(self) -> dict: """构建完整的设备指纹""" return { "device_id": self.device_id, "screen_resolution": f"{random.choice([1920, 1366, 1440])}x{random.choice([1080, 768, 900])}", "timezone": "Asia/Tokyo", "language": "ja-JP", "platform": "Win32", "webgl_vendor": random.choice(["Google Inc.", "Intel"]), "webgl_renderer": random.choice(["ANGLE", "Mesa"]), "fonts": self._get_font_list() } def _get_font_list(self) -> str: """模拟系统字体列表""" fonts = ["MS Gothic", "MS PGothic", "Meiryo", "Yu Gothic", "Arial", "Helvetica"] return ",".join(random.sample(fonts, 4)) def get_headers(self) -> dict: """生成完整的请求头""" ua = self._generate_ua() return { "User-Agent": ua, "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8", "Accept-Language": "ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7", "Accept-Encoding": "gzip, deflate, br", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1", "Sec-Fetch-Dest": "document", "Sec-Fetch-Mode": "navigate", "Sec-Fetch-Site": "none", "Cache-Control": "max-age=0", "sec-ch-ua": f'"Not_A Brand";v="99", "Chromium";v="{random.randint(110, 120)}"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"' } def _generate_ua(self) -> str: """生成真实浏览器UA""" chrome_version = f"{random.randint(110, 122)}.0.{random.randint(5000, 6500)}.{random.randint(100, 300)}" return f"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{chrome_version} Safari/537.36"
四、完整请求流程
python
import requestsfrom requests.adapters import HTTPAdapterfrom urllib3.util.retry import Retryclass SmartCrawler: """带设备指纹的智能爬虫""" def init(self): self.fingerprint = DeviceFingerprint() self.session = self._create_session() def _create_session(self): session = requests.Session() retry = Retry(total=3, backoff_factor=0.5) adapter = HTTPAdapter(max_retries=retry) session.mount('http://', adapter) session.mount('https://', adapter) return session def get(self, url: str): """发送带完整指纹的请求""" headers = self.fingerprint.get_headers() # 每次请求使用相同的设备指纹 response = self.session.get( url, headers=headers, timeout=10 ) return response
五、实战效果
这套指纹伪装方案应用于日本电商数据采集项目后,请求被拒绝率从35%降至3%以下。核心经验:反爬对抗的关键在于模仿人类行为的完整性,而非单一维度的伪装。

目录
相关文章
|
4天前
|
云安全 人工智能 运维
阿里云SecOps Agent,全新安全跨产品执行体验
自然语言驱动 云安全中心/WAF/CFW/ 等多款安全产品联动
1595 2
|
1天前
|
人工智能 定位技术 SEO
我学 GEO 第 15 天:终于知道AI GEO该如何做?
我是暴走的莉莉酱,边旅行边研究AI GEO的数字游民。专注普通人如何提升“AI可见度”——让AI在回答用户问题时准确识别、理解并推荐你。不讲玄学,只做可测、可调、可持续的GEO实践。
348 122
|
4天前
|
机器学习/深度学习 人工智能 调度
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
HappyHorse 1.1 是新一代视频生成大模型,全面升级动态表现力、角色一致性、指令遵循、视觉质感与音画协同能力。支持I2V/T2V/R2V三类生成,适配短剧、电商广告、品牌营销等场景,提供高质、流畅、可控的AI视频生产力。
581 4
🐴 HappyHorse 1.1 现已上线阿里云百炼!快来查收模型使用指南,现在调用享 6 折~
|
14天前
|
缓存 测试技术 API
Qwen 3.7 Plus 与 Max 实测:性价比与多模态能力差异解析(2026)
2026 年 6 月 1 日,阿里悄无声息地发布了 Qwen 3.7 Plus,距 Qwen 3.7 Max 上线刚好 11 天。同样的 1M 上下文,同样的 35 小时自治上限。但价格才是头条:Plus 是 0.40/M输入,Max是 2.50/M——便宜约 6 倍——并且还能看图、看视频。Vision Arena 上 Plus 已经排到 #16。所以这周真正值得讨论的问题不是”要不要为视觉能力买单”,而是”Max 凭什么用 6 倍价格换来 2 个百分点的 benchmark 领先”。
|
15天前
|
JavaScript 定位技术 API
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
CodeGraph 是一款爆火的本地代码智能工具,通过 tree-sitter 解析 AST 构建结构化知识图谱(存于 SQLite),为编程 Agent 提前生成“代码地图”。它显著降低 Agent 在中大型项目中的探索成本——实测工具调用减少71%、Token 降57%、速度提升46%,支持19+语言及主流框架路由识别,完全离线、无需 API Key。
911 11
CodeGraph 爆火:编程 Agent 需要的不是更多上下文,而是一张提前画好的代码地图
|
8天前
|
缓存 人工智能 运维
GLM 5.2自托管全流程实战:硬件选型、vLLM/SGLang部署与成本盈亏测算
2026年智谱发布GLM 5.2超大混合专家模型,区别于以往仅开放API的闭源大模型,该模型权重以MIT开源协议对外发布,企业与开发者可完整下载、本地审计、私有化部署,实现数据不出环境、自定义微调、自主调度推理资源。GLM 5.2拥有753B总参数,原生支持百万级上下文窗口,在代码生成、长文档推理、数学逻辑等多项基准测试中对标国际顶尖商用模型,是首款可完整自托管的前沿代码向大模型。
655 0
|
2天前
|
消息中间件 人工智能 Kafka
AI 时代,实时入湖正在告别 ETL:从 Kafka 到 Iceberg 的架构减法
本文围绕“零 ETL”这一趋势,讨论流数据入湖为什么需要做架构减法,并结合 Kafka × Table Bucket 的实践,分析一种将通用入湖能力前移到消息与表存储链路中的方案,如何在降低复杂度的同时,兼顾实时性、一致性、Schema 演进、CDC 语义与开放生态兼容。
193 121
|
2天前
|
人工智能 监控 前端开发
Electron 监控:让桌面 Agent 监控触手可及
一行代码实现Electron桌面端全景监控,自动还原崩溃现场、预警内存泄漏、全链路追踪、 SSE流式响应与交互埋点,让 AI 助手运行状态清晰可见,助力快速恢复稳定与流畅。
182 125
|
11天前
|
人工智能 自然语言处理 算法
阿里云百炼Qwen 3.7 Plus与Max实测全解:性价比与多模态能力、成本深度对比
2026年,阿里云百炼平台推出的Qwen 3.7系列成为企业与开发者落地AI应用的核心选择,其中Qwen 3.7 Max与Plus作为两大旗舰版本,定位差异显著:Max是纯文本推理旗舰,专注高强度智能体与复杂逻辑任务;Plus则是多模态全能版,在保留强大文本能力的同时,补齐图像、视频理解能力,且价格大幅降低。本文基于2026年最新实测数据,从核心参数、文本能力、多模态能力、智能体表现、性价比与场景选型六大维度,全面解析两款模型的差异,为用户提供精准选型参考。
540 0