You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置WebDriver通过9191端口Socks5隧道绕过企业防火墙执行测试?

Fixing WebDriver to Use Your SOCKS5 Tunnel on Port 9191

Got it, let's walk through getting your WebDriver traffic routed through that SOCKS5 tunnel—since you had it working with authenticated Squid before, the main tweak is adapting to SOCKS5's specific configuration instead of HTTP proxy settings. Here's how to set it up for Chrome and Firefox, plus common pitfalls to avoid:

ChromeDriver Configuration

Chrome uses command-line arguments via ChromeOptions to set up SOCKS5. This is likely where you hit a snag compared to the Squid proxy, since the protocol prefix is different:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# Point Chrome to your local SOCKS5 tunnel
chrome_options.add_argument('--proxy-server=socks5://127.0.0.1:9191')

# If your SOCKS5 tunnel requires username/password authentication, uncomment this line
# chrome_options.add_argument('--proxy-auth=your_username:your_password')

# Disable proxy bypass for local addresses to ensure all traffic goes through the tunnel
chrome_options.add_argument('--no-proxy-server')

# Initialize the driver with these options
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")  # Test with any external site

Key notes here:

  • Use socks5:// instead of http:// (the Squid proxy used HTTP, so this is a critical difference)
  • --no-proxy-server prevents Chrome from skipping the proxy for local/intranet addresses, which is common in corporate environments
  • Add the --proxy-auth line only if your SOCKS5 tunnel requires credentials

Firefox Configuration

Firefox uses preference settings via FirefoxOptions to configure SOCKS5. Here's the setup:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

firefox_options = Options()
# Set proxy type to manual configuration
firefox_options.set_preference("network.proxy.type", 1)
# Point to your SOCKS5 tunnel details
firefox_options.set_preference("network.proxy.socks", "127.0.0.1")
firefox_options.set_preference("network.proxy.socks_port", 9191)
firefox_options.set_preference("network.proxy.socks_version", 5)

# If authentication is required, uncomment these lines
# firefox_options.set_preference("network.proxy.socks_username", "your_username")
# firefox_options.set_preference("network.proxy.socks_password", "your_password")

# Ensure no addresses are excluded from the proxy
firefox_options.set_preference("network.proxy.no_proxies_on", "")

driver = webdriver.Firefox(options=firefox_options)
driver.get("https://example.com")

Common Troubleshooting Steps

Before diving deeper into code, confirm your tunnel is working properly:

  • Test with curl first: Run curl --socks5 127.0.0.1:9191 https://example.com in your terminal. If this fails, the issue is with the tunnel itself (check firewall rules, tunnel connection, etc.)
  • Double-check the port number (you specified 9191—make sure there's no typo)
  • If you're getting authentication errors, verify that your credentials (if any) are correctly formatted and match the tunnel's requirements

内容的提问来源于stack exchange,提问作者user1592380

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:05:00