奇术秘典篇-Day32|幻影附身:DrissionPage 配置代理 IP 实战

1 次阅读 2026-10-20 17:01

📖 知识点

1. 配置代理的入口:ChromiumOptions

和改 UA 一样,配置代理要创建 ChromiumOptions,通过它把代理地址传给浏览器:

from DrissionPage import ChromiumPage, ChromiumOptions

co = ChromiumOptions()
# 设置代理地址(IP:端口 或 带协议的完整地址)
co.set_proxy("http://127.0.0.1:8080")

page = ChromiumPage(co)

co.set_proxy("协议://IP:端口") 是配置代理的核心咒语。

2. 代理地址的写法

代理地址格式:协议://地址:端口

  • HTTP 代理:http://123.45.67.89:8080
  • SOCKS 代理:socks5://123.45.67.89:1080
  • 若代理需要账号密码:http://用户名:密码@地址:端口
co.set_proxy("http://用户名:密码@123.45.67.89:8080")

3. 验证代理是否生效

配置后,访问 "出口 IP 查询接口",看显示的 IP 是否为代理 IP:

# 配置代理后访问出口IP接口
page.get("https://httpbin.org/ip")
print(page.html)   # 返回的origin应该是代理IP

对比 Day31 无代理时的出口 IP,若不同说明代理已生效。

完整示例

from DrissionPage import ChromiumPage, ChromiumOptions

# 幻影附身咒:配置代理
co = ChromiumOptions()
co.set_proxy("http://127.0.0.1:8080")   # 替换为你的代理地址

page = ChromiumPage(co)
page.get("https://httpbin.org/ip")

# 验证出口IP
print("🪄 经由代理访问,出口IP:")
print(page.html)

⚠️ 易错提醒

  1. 代理地址、端口要写对,代理服务器需处于可用状态
  2. 需要账号密码的代理,格式是 协议://账号:密码@地址:端口
  3. 代理失效或不可达时,页面可能加载失败,先检查代理是否可用

⚔️ Kata 实战任务

任务需求:

  1. 导入 ChromiumPage 和 ChromiumOptions
  2. 创建配置,用 co.set_proxy() 设置一个代理地址
  3. 用配置创建 Page 对象
  4. 访问 https://httpbin.org/ip,打印返回的出口 IP
  5. 对比无代理时的 IP,判断代理是否生效

参考代码

from DrissionPage import ChromiumPage, ChromiumOptions

# 幻影附身咒:配置代理
co = ChromiumOptions()
co.set_proxy("http://127.0.0.1:8080")   # 替换为你实际使用的代理地址

page = ChromiumPage(co)
print("🪄 已配置代理,开始经由代理访问……")

# 访问出口IP查询接口
page.get("https://httpbin.org/ip")
print("🌐 经由代理访问后的出口IP:")
print(page.html)
print("\n✅ 对比Day31的出口IP,若不同则说明代理已生效")

运行输出(示意):

🪄 已配置代理,开始经由代理访问……
🌐 经由代理访问后的出口IP:
{
  "origin": "61.240.xxx.xxx"
}
✅ 对比Day31的出口IP,若不同则说明代理已生效

🧠 思考题

  1. 怎么判断配置的代理真的生效了?用哪个接口验证最直观?
  2. 代理需要账号密码时,set_proxy 的地址该怎么写?