📖 知识点
1. 什么是请求头 / 浏览器指纹?
- 请求头:浏览器发给服务器的 "自我介绍"(User-Agent、Referer 等),告诉对方 "我是 Chrome、来自哪个页面"。
- 浏览器指纹:浏览器暴露的特征集合(UA、屏幕、插件等),网站用它判断访问者是不是真人、是不是自动化工具。
- 反爬:网站据此拦截疑似自动化的请求。伪装幻形咒就是让水晶球看起来更像真人浏览器。
2. 修改 User-Agent(UA)
创建 ChromiumPage 时,通过配置修改 UA:
from DrissionPage import ChromiumPage, ChromiumOptions
co = ChromiumOptions()
# 设置一个常见的Chrome UA
co.set_user_agent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36")
page = ChromiumPage(co)
page.get("https://www.baidu.com")
print(page.title)
3. 组合伪装:无头 + 改 UA + 改参数
进阶伪装常组合使用:
co = ChromiumOptions()
co.headless(True) # 无头
co.set_user_agent("...真实UA...") # 换UA
co.auto_port() # 自动端口(减少指纹特征)
page = ChromiumPage(co)
💡 核心理解
- 反爬识别的是 "不寻常" 的特征:默认 UA、无头特征、固定端口等
- 伪装 = 让这些特征更像真人浏览器
- 务必合法合规:遵守网站条款与相关法律法规,不用于攻击或恶意抓取
⚠️ 重要提醒
- 伪装不是万能,过度伪装、高频访问仍可能被识别
- 抓取请尊重 robots 协议、控制频率,用于正当用途
- 改 UA 要写真实的、与浏览器版本匹配的 UA
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage 和 ChromiumOptions
- 创建配置,用
co.set_user_agent()设置一个常见 Chrome UA - 用配置创建 Page 对象
- 访问百度,打印当前 UA 验证伪装生效
- 打印伪装完成提示
参考代码
from DrissionPage import ChromiumPage, ChromiumOptions
# 伪装幻形咒:配置浏览器参数
co = ChromiumOptions()
co.set_user_agent(
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/120.0.0.0 Safari/537.36"
)
page = ChromiumPage(co)
page.get("https://www.baidu.com")
# 读取当前UA,验证伪装生效
ua = page.run_cdp("Network.getUserAgent") or {}
print("🪄 当前User-Agent:", ua)
print("✅ 伪装幻形咒已生效,浏览器特征已设置")
运行输出(示意):
🪄 当前User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ...
✅ 伪装幻形咒已生效,浏览器特征已设置
🧠 思考题
- 为什么默认的自动化浏览器 UA 容易被识别?设置常见 Chrome UA 有什么作用?
- 网站通过哪些 "指纹特征" 可能识别出自动化工具?如何尽量拟真?