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

相关推荐
地球资源数据云19 分钟前
1951-2025年中国逐年1千米逐月总降水量区域统计数据集_年表_县
大数据·数据结构·数据库·数据仓库·人工智能
l1t20 分钟前
DeepSeek v4辅助生成的单文件SQL查询示例页面
javascript·数据库·sql
云飞云共享云桌面38 分钟前
精密机械制造工厂研发部门使用SolidWorks和ug,三维设计云桌面如何选择?
大数据·运维·服务器·网络·数据库·人工智能·制造
IntMainJhy1 小时前
【flutter for open harmony】第三方库 Flutter 二维码生成的鸿蒙化适配与实战指南
数据库·flutter·华为·sqlite·harmonyos
それども1 小时前
Spring Bean 注入的优先级顺序
java·数据库·sql·spring
张子行的博客1 小时前
SQL 调优实战:跨表排序性能提升之路
数据库·sql·oracle
Irene19911 小时前
数据发散(Data Spreading)详解(附:示例 数据发散最大值是笛卡尔乘积)
数据库
a9511416421 小时前
c++如何解析二进制协议中的可选字段读取逻辑及其反序列化【详解】
jvm·数据库·python
weixin_580614002 小时前
golang如何实现时间格式化_golang时间格式化方法详解
jvm·数据库·python
forEverPlume2 小时前
c++怎么利用std--span实现在不拷贝数据的前提下解析大规模文件【进阶】
jvm·数据库·python