如何使用 Selenium 和 Python 绕过 Tor 网络设置确认弹出窗口

How to bypass Tor Network Settings confirmation popup using Selenium and Python

我正在尝试通过 selenium 自动使用 Tor 浏览器:

import time
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = '/Applications/TorBrowser.app/Contents/MacOS/firefox'
firefox_binary = FirefoxBinary(binary)
try:
    driver = webdriver.Firefox(firefox_binary="/Applications/Tor Browser.app/Contents/MacOS/firefox")
    driver.get("https://www.google.com/")
    time.sleep(3)
finally:
    driver.close()

我正在尝试使用 Tor 浏览器进行抓取,一切正常,但每次我 运行 编码时,您都必须手动单击连接按钮。如何禁用确认屏幕或自动从 selenium 中接受它?

这个 浏览器配置屏幕...

... 出现是因为您没有在代码块中明确配置 TOR 浏览器 设置。所以每次你执行你的程序时,它都会启动一个没有代理设置的新 TOR 浏览上下文,并假设你正在 运行ning Tor 浏览器 第一次。因此,您将在每个 运行.

上看到 Tor 网络设置 window

解决方案

要摆脱 Tor 网络设置 window,您需要在代码中配置 Tor 网络设置块如下:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    import os
    
    torexe = os.popen(r'C:\Users\Soma Bhattacharjee\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe')
    profile = FirefoxProfile(r'C:\Users\Soma Bhattacharjee\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default')
    profile.set_preference('network.proxy.type', 1)
    profile.set_preference('network.proxy.socks', '127.0.0.1')
    profile.set_preference('network.proxy.socks_port', 9050)
    profile.set_preference("network.proxy.socks_remote_dns", False)
    profile.update_preferences()
    driver = webdriver.Firefox(firefox_profile= profile, executable_path=r'C:\WebDrivers\geckodriver.exe')
    driver.get("http://check.torproject.org")
    
  • 浏览器快照:


参考资料

您可以在以下位置找到一些详细的讨论: