Python pyppeteer 与 Selenium Firefox 隧道代理:浏览器自动化方案

pyppeteer 和 Selenium Firefox 两种浏览器自动化框架对接亿牛云爬虫代理。

亿牛云技术团队2026年5月9日1 分钟阅读

pyppeteer

pyppeteer 是 Puppeteer 的 Python 移植版,通过 --proxy-server 参数和 page.authenticate 处理代理。

import asyncio, os
from pyppeteer import launch

host = os.getenv("PROXY_HOST", "t.16yun.cn")
port = os.getenv("PROXY_PORT", "31111")
user = os.getenv("PROXY_USERNAME", "user")
pwd = os.getenv("PROXY_PASSWORD", "password")

async def main():
    browser = await launch({
        "headless": True,
        "args": [
            f"--proxy-server=http://{host}:{port}",
            "--no-sandbox",
            "--ignore-certificate-errors",
        ],
        "ignoreHTTPSErrors": True,
    })
    page = await browser.newPage()
    if user and pwd:
        await page.authenticate({"username": user, "password": pwd})

    await page.goto("https://httpbin.org/ip", {"waitUntil": "domcontentloaded", "timeout": 30000})
    html = await page.content()
    print(html[:500])
    await browser.close()

asyncio.run(main())

Selenium Firefox

Selenium Firefox 通过 set_preference 配置代理:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.firefox.service import Service
from webdriver_manager.firefox import GeckoDriverManager

host = os.getenv("PROXY_HOST", "t.16yun.cn")
port = os.getenv("PROXY_PORT", "31111")
user = os.getenv("PROXY_USERNAME", "user")
pwd = os.getenv("PROXY_PASSWORD", "password")

profile = webdriver.FirefoxProfile()
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", host)
profile.set_preference("network.proxy.http_port", int(port))
profile.set_preference("network.proxy.ssl", host)
profile.set_preference("network.proxy.ssl_port", int(port))
profile.set_preference("network.proxy.socks", host)
profile.set_preference("network.proxy.socks_port", int(port))

options = Options()
options.profile = profile
options.add_argument("--headless")

driver = webdriver.Firefox(
    service=Service(executable_path=GeckoDriverManager().install()),
    options=options,
)

driver.get("https://httpbin.org/ip")
print(driver.page_source[:500])
driver.quit()

浏览器工具代理对比

特性pyppeteerSelenium FirefoxSelenium Chrome(前文)
代理配置--proxy-server 参数network.proxy.* 偏好Chrome 扩展注入
认证方式page.authenticate()Firefox 不支持 HTTP 代理认证Chrome 扩展
支持 HTTPS Tunnel❌ 浏览器限制
适用场景Chromium 自动化Firefox Gecko 引擎测试Chrome 自动化

需要企业代理方案?

我们可根据目标站点、并发规模与稳定性目标提供定制方案。