📖 知识点
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)
⚠️ 易错提醒
- 代理地址、端口要写对,代理服务器需处于可用状态
- 需要账号密码的代理,格式是
协议://账号:密码@地址:端口- 代理失效或不可达时,页面可能加载失败,先检查代理是否可用
⚔️ Kata 实战任务
任务需求:
- 导入 ChromiumPage 和 ChromiumOptions
- 创建配置,用
co.set_proxy()设置一个代理地址 - 用配置创建 Page 对象
- 访问
https://httpbin.org/ip,打印返回的出口 IP - 对比无代理时的 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,若不同则说明代理已生效
🧠 思考题
- 怎么判断配置的代理真的生效了?用哪个接口验证最直观?
- 代理需要账号密码时,
set_proxy的地址该怎么写?