在 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 中成功设置代理!

相关推荐
青春:一叶知秋1 小时前
【Redis存储】redis事务
数据库·redis·缓存
v_cxsj8132 小时前
学会写导师都说好的论文——Spring Boot高校实习管理平台18517【部署教程+可完整运行源码+数据库】
数据库·spring boot·实习信息·企业招聘
jjjxxxhhh1233 小时前
[Google Test]- Google Test Ubuntu 完整验证指南
linux·数据库·ubuntu
三无少女指南3 小时前
开发者环境配置:用 Ollama 实现本地大模型部署(附下载慢的解决方案
c语言·开发语言·数据库·ubuntu
Lxinccode4 小时前
AI编程(3) / claude code[3] : 更新apiKey
java·数据库·ai编程·claude code
数据知道4 小时前
MongoDB数据类型全景:String、Number、Date、Boolean 及特殊的 null 类型处理
数据库·mongodb
醉颜凉5 小时前
PostgreSQL 模式(SCHEMA)详解:数据库对象的命名空间管理
数据库·postgresql
AI题库5 小时前
PostgreSQL 18 默认密码修改全指南:从安装到安全加固
数据库·安全·postgresql
七夜zippoe5 小时前
告别SQL恐惧症:我用飞算JavaAI的SQL Chat,把数据库变成了“聊天室”
java·数据库·sql·ai·javaai