行者孙Python

融灵篇-Day27|伪装幻形咒:修改请求头,伪装浏览器指纹对抗反爬

📖 知识点

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、无头特征、固定端口等
  • 伪装 = 让这些特征更像真人浏览器
  • 务必合法合规:遵守网站条款与相关法律法规,不用于攻击或恶意抓取

⚠️ 重要提醒

  1. 伪装不是万能,过度伪装、高频访问仍可能被识别
  2. 抓取请尊重 robots 协议、控制频率,用于正当用途
  3. 改 UA 要写真实的、与浏览器版本匹配的 UA

⚔️ Kata 实战任务

任务需求:

  1. 导入 ChromiumPage 和 ChromiumOptions
  2. 创建配置,用 co.set_user_agent() 设置一个常见 Chrome UA
  3. 用配置创建 Page 对象
  4. 访问百度,打印当前 UA 验证伪装生效
  5. 打印伪装完成提示

参考代码

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 ...
✅ 伪装幻形咒已生效,浏览器特征已设置

🧠 思考题

  1. 为什么默认的自动化浏览器 UA 容易被识别?设置常见 Chrome UA 有什么作用?
  2. 网站通过哪些 "指纹特征" 可能识别出自动化工具?如何尽量拟真?
‹ 返回目录
🏠首页 Python 📦资源 👤关于我