You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Selenium调用Tor浏览器进行网页爬取时出现WebDriverException的问题排查与解决

问题原因与解决方法

错误原因分析

从你给出的WebDriverException错误信息里的proxyConnectFailure可以明确看出问题所在:你用Selenium启动的Firefox实例(也就是Tor Browser的firefox.exe)没有正确加载Tor专属的配置文件(Profile),导致浏览器使用了错误的代理设置——要么是没有配置Tor的Socks代理,要么是代理地址/端口不对,最终无法连接到目标网站。

之前用webbrowser库能成功,是因为那段代码启动的是完整的Tor Browser程序,它会自动加载自己预设好的Profile(里面已经配置了连接Tor网络的代理、安全设置等),同时启动Tor后台进程建立网络连接。但Selenium默认会创建一个临时的空白Profile,完全没有Tor的相关配置,自然就会出现代理连接失败的问题。

解决方法:加载Tor Browser的专属Profile

要让Selenium正常使用Tor Browser,核心就是让它加载Tor自带的Profile,而不是用默认的空白Profile。具体步骤如下:

  1. 找到Tor Browser的Profile路径

    • 打开你的Tor Browser,在地址栏输入 about:profiles 并回车
    • 在页面中找到「默认使用的配置文件」,复制它的「根目录」路径(比如Windows下可能是 C:\Users\Lenovo\AppData\Roaming\TorBrowser\Browser\TorBrowser\Data\Browser\profile.default,如果是便携版Tor,路径可能在你Tor Browser文件夹的Data\Browser目录下)
  2. 修改Selenium代码,指定Profile和二进制文件
    注意:Selenium 4.x版本已经废弃了FirefoxBinary参数,推荐用Options类来配置,下面是修正后的代码:

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

# 初始化Firefox选项
options = Options()

# 1. 指定Tor Browser的Profile路径(替换成你从about:profiles复制的路径)
options.profile = r"C:\Users\Lenovo\AppData\Roaming\TorBrowser\Browser\TorBrowser\Data\Browser\profile.default"

# 2. 指定Tor Browser的二进制文件路径(可选,如果系统找不到Tor的firefox.exe的话)
options.binary_location = r"C:\Users\Lenovo\Bureau\Tor Browser\Browser\firefox.exe"

# 启动浏览器实例
driver = webdriver.Firefox(options=options)

# 访问目标网站
url = 'https://www.google.com/'
driver.get(url)

额外注意事项

  • 运行代码前,请确保所有Tor Browser实例都已关闭,否则Profile会被锁定,Selenium无法加载它。
  • 不需要手动设置代理,Tor的Profile已经预设了正确的Socks代理(指向本地Tor进程的9150端口),代码会自动继承这个配置。
  • 如果启动后Tor需要重新连接网络,稍等几秒再调用driver.get()即可,避免因为Tor还没建立连接导致的临时失败。

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

火山引擎 最新活动