DrissionPage 基于 Chromium,可以通过 ChromiumOptions 来设置代理。以下是几种设置代理的方法:
方法一:基础代理设置(HTTP/HTTPS)
python
from DrissionPage import Chromium
from DrissionPage.common import ChromiumOptions
# 创建 ChromiumOptions 对象
co = ChromiumOptions()
# 设置代理服务器地址和端口
co.set_proxy('http://127.0.0.1:1080') # 替换为你的代理地址
# 创建浏览器实例并传入选项
browser = Chromium(co)
# 打开页面测试
browser.get('https://httpbin.org/ip')
print(browser.html)
方法二:带认证的代理设置
python
from DrissionPage import Chromium
from DrissionPage.common import ChromiumOptions
co = ChromiumOptions()
# 设置带用户名和密码的代理
# 格式: http://username:password@proxy_host:proxy_port
proxy_url = 'http://username:password@127.0.0.1:1080'
co.set_proxy(proxy_url)
browser = Chromium(co)
browser.get('https://httpbin.org/ip')
方法三:SOCKS 代理设置
python
from DrissionPage import Chromium
from DrissionPage.common import ChromiumOptions
co = ChromiumOptions()
# SOCKS5 代理
co.set_proxy('socks5://127.0.0.1:1080')
# SOCKS4 代理
# co.set_proxy('socks4://127.0.0.1:1080')
browser = Chromium(co)
browser.get('https://httpbin.org/ip')
方法四:使用代理列表随机选择
python
from DrissionPage import Chromium
from DrissionPage.common import ChromiumOptions
import random
# 代理列表
proxies = [
'http://127.0.0.1:1080',
'http://127.0.0.1:1081',
'http://127.0.0.1:1082',
'socks5://127.0.0.1:1083'
]
# 随机选择一个代理
proxy = random.choice(proxies)
co = ChromiumOptions()
co.set_proxy(proxy)
browser = Chromium(co)
browser.get('https://httpbin.org/ip')
方法五:验证代理是否生效
python
from DrissionPage import Chromium
from DrissionPage.common import ChromiumOptions
co = ChromiumOptions()
co.set_proxy('http://127.0.0.1:1080') # 替换为你的代理
# 可选:设置无头模式
# co.headless = True
browser = Chromium(co)
# 访问 IP 检测网站
browser.get('https://httpbin.org/ip')
# 打印返回的 IP 地址
print("当前 IP:", browser.ele('body').text)
# 或者获取完整响应
print("完整响应:", browser.html)
browser.quit()
完整示例:带错误处理
python
from DrissionPage import Chromium
from DrissionPage.common import ChromiumOptions
import time
def create_browser_with_proxy(proxy_url):
"""创建带代理的浏览器实例"""
try:
co = ChromiumOptions()
co.set_proxy(proxy_url)
# 可选配置
co.headless = False # 显示浏览器窗口
co.incognito = True # 隐身模式
browser = Chromium(co)
return browser
except Exception as e:
print(f"创建浏览器失败: {e}")
return None
# 使用示例
proxy = 'http://127.0.0.1:1080' # 替换为你的代理
browser = create_browser_with_proxy(proxy)
if browser:
try:
# 测试代理
browser.get('https://httpbin.org/ip', timeout=30)
time.sleep(2)
print("代理连接成功")
print("当前 IP:", browser.ele('body').text)
# 你的爬虫逻辑...
except Exception as e:
print(f"访问失败: {e}")
finally:
browser.quit()
注意事项
-
代理格式:
- HTTP/HTTPS:
http://host:port或http://user:pass@host:port - SOCKS5:
socks5://host:port或socks5://user:pass@host:port - SOCKS4:
socks4://host:port
- HTTP/HTTPS:
-
代理类型:确保你的代理服务器支持相应的协议
-
连接超时:可以设置超时参数避免长时间等待
pythonco.set_proxy('http://127.0.0.1:1080', timeout=10) -
代理认证:如果代理需要认证,确保用户名和密码正确编码(特殊字符需要 URL 编码)
-
验证代理 :使用
https://httpbin.org/ip或https://ipinfo.io/json等网站验证代理是否生效
希望这些示例能帮助你在 DrissionPage 中成功设置代理!