在 DrissionPage 中设置代理

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()

注意事项

  1. 代理格式

    • HTTP/HTTPS: http://host:porthttp://user:pass@host:port
    • SOCKS5: socks5://host:portsocks5://user:pass@host:port
    • SOCKS4: socks4://host:port
  2. 代理类型:确保你的代理服务器支持相应的协议

  3. 连接超时:可以设置超时参数避免长时间等待

    python 复制代码
    co.set_proxy('http://127.0.0.1:1080', timeout=10)
  4. 代理认证:如果代理需要认证,确保用户名和密码正确编码(特殊字符需要 URL 编码)

  5. 验证代理 :使用 https://httpbin.org/iphttps://ipinfo.io/json 等网站验证代理是否生效

希望这些示例能帮助你在 DrissionPage 中成功设置代理!

相关推荐
xiezhr17 小时前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩2 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3502 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3502 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3502 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
SelectDB3 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶3 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵3 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
Nturmoils3 天前
WHERE 条件别凭习惯写,常用查询先跑一遍
数据库