使用Selenium WebDriver Firefox通过Tor Socks5 9050端口连接网站失败
嘿,我之前也踩过Tor + Firefox + Selenium连接不上的坑,咱们一步步来排查和解决:
第一步:先确认Tor服务真的在跑
很多时候连接失败根本不是代码的问题,而是Tor没启动或者端口没监听。
- 先手动验证9050端口是否被占用:
- Linux/macOS终端运行:
netstat -an | grep 9050 - Windows命令提示符运行:
netstat -ano | findstr :9050
如果能看到127.0.0.1:9050处于LISTENING状态,说明Tor在正常工作;如果没有,先启动Tor服务: - Linux:
sudo systemctl start tor - Windows:打开Tor Browser(它会自动启动后台Tor服务),或者用Tor服务管理器手动启动。
- Linux/macOS终端运行:
第二步:修正并完善Firefox代理配置
你的代码已经有了基础框架,但有几个细节要补,而且注意变量名要一致(最后一行的pr...应该是profile吧?)。试试这个完整的配置:
from selenium import webdriver from selenium.webdriver.firefox.options import Options # 初始化Firefox配置 profile = webdriver.FirefoxProfile() # 设置代理类型为手动配置 profile.set_preference('network.proxy.type', 1) # 指定SOCKS5版本 profile.set_preference("network.proxy.socks_version", 5) # SOCKS代理地址和端口 profile.set_preference('network.proxy.socks', '127.0.0.1') profile.set_preference('network.proxy.socks_port', 9050) # 强制DNS通过Tor解析(避免DNS泄露,也能解决部分域名无法解析的问题) profile.set_preference("network.proxy.socks_remote_dns", True) # 让HTTP和HTTPS请求也走SOCKS代理(很多人会漏掉这步) profile.set_preference('network.proxy.http', '127.0.0.1') profile.set_preference('network.proxy.http_port', 9050) profile.set_preference('network.proxy.ssl', '127.0.0.1') profile.set_preference('network.proxy.ssl_port', 9050) # 不绕过任何地址(确保所有请求都走Tor) profile.set_preference('network.proxy.no_proxies_on', '') # 可选:如果需要后台运行,开启无头模式 options = Options() options.add_argument('--headless') # 启动浏览器(注意变量名要对,别写错成pr...) browser = webdriver.Firefox(firefox_profile=profile, options=options) # 测试连接Tor验证页面 browser.get('https://check.torproject.org/') print(browser.title)
第三步:检查版本兼容性
如果配置没问题还是连不上,大概率是版本不匹配:
- 确保Selenium版本和Firefox版本对应:比如Selenium 4.x需要搭配最新的geckodriver,Firefox最好用稳定版(别用太老的版本)。
- 下载对应版本的geckodriver,放到系统PATH里,或者在初始化时指定路径:
webdriver.Firefox(executable_path='/你的geckodriver路径', firefox_profile=profile)
第四步:偷懒但有效的方法——直接用Tor Browser的配置
如果手动配置总是出问题,不如直接用Tor Browser自带的profile,它已经把所有Tor相关的设置都调好的:
# 替换成你Tor Browser的profile路径 # Windows示例: tor_profile_path = r'C:\Users\你的用户名\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default' # Linux示例: # tor_profile_path = '/home/你的用户名/tor-browser_en-US/Browser/TorBrowser/Data/Browser/profile.default' profile = webdriver.FirefoxProfile(tor_profile_path) browser = webdriver.Firefox(firefox_profile=profile) browser.get('https://check.torproject.org/')
这样基本不会出错,因为Tor Browser本身就是为Tor网络优化过的。
内容的提问来源于stack exchange,提问作者Kanarsky
相关产品推荐
相关产品推荐

