【问题标题】:How to connect to Tor browser using Python如何使用 Python 连接到 Tor 浏览器
【发布时间】:2019-05-25 08:03:48
【问题描述】:

我正在尝试连接到 Tor 浏览器,但收到一条错误消息,指出“proxyConnectFailure”任何想法我已尝试多次尝试了解 Tor 浏览器的基础知识以使其连接,但如果有任何帮助生活可能都是徒劳的节省了大量时间:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary


binary = FirefoxBinary(r"C:\Users\Admin\Desktop\Tor Browser\Browser\firefox.exe")
profile = FirefoxProfile(r"C:\Users\Admin\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default")

# Configured profile settings.

proxyIP = "127.0.0.1"
proxyPort = 9150

proxy_settings = {"network.proxy.type":1,
    "network.proxy.socks": proxyIP,
    "network.proxy.socks_port": proxyPort,
    "network.proxy.socks_remote_dns": True,
}
driver = webdriver.Firefox(firefox_binary=binary,proxy=proxy_settings)

def interactWithSite(driver):

    driver.get("https://www.google.com")    
    driver.save_screenshot("screenshot.png")

interactWithSite(driver)

【问题讨论】:

标签: python selenium proxy tor firefox-profile


【解决方案1】:

要通过 FirefoxProfile 连接到 Tor 浏览器,您可以使用以下解决方案:

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    import os
    
    torexe = os.popen(r'C:\Users\AtechM_03\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe')
    profile = FirefoxProfile(r'C:\Users\AtechM_03\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:\Utility\BrowserDrivers\geckodriver.exe')
    driver.get("http://check.torproject.org")
    
  • 浏览器快照:


可以在How to use Tor with Chrome browser through Selenium找到相关讨论

【讨论】:

  • 仍然是同样的错误,实际上我正在连接到 Tor 浏览器但无法访问该网站
  • 能否先进行交叉检查,如果您能够连接到 url http://check.torproject.org 并看到消息 This browser is configured to use Tor. first?
  • 所以基本上你没有通过 Tor 连接。您是否尝试使用答案中的代码块并按原样尝试?
  • 是的,我基本上是这样做的
  • 终于连接上了,我不得不把 sock_port 改成 9150 就成功了
【解决方案2】:

我想通过添加 Linux 对应项来扩展 @DebanjanB 答案:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
import os

torexe = os.popen('some/path/tor-browser_en-US/Browser/start-tor-browser') 
# in my case, I installed it under a folder tor-browser_en-US after
# downloading and extracting it from 
# https://www.torproject.org/download/ for linux

profile = FirefoxProfile(
    'some/path/tor-browser_en-US/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()

firefox_options = webdriver.FirefoxOptions()
firefox_options.binary_location = '/usr/bin/firefox' 
# /usr/bin/firefox is default location of firefox - for me anyway

driver = webdriver.Firefox(
    firefox_profile=profile, options=firefox_options, 
    executable_path='wherever/you/installed/geckodriver') 
# I keep my geckodriver(s) in a special folder sorted by versions.
# Geckodriver downloadable here: 
# https://github.com/mozilla/geckodriver/releases/
driver.get("http://check.torproject.org")

【讨论】:

    【解决方案3】:

    在打开 dot onion 站点的情况下,经过验证的答案不起作用(我相信这与不允许访问普通 firefox 的 Tor 网络有关)。

    至于最新的tor浏览器(来自tor浏览器包),使用selenium启动它会导致一些错误,由于浏览器无法启动tor代理本身导致代理和超时错误(不管tor代理是否由python或手动或根本不启动)。这也可能是由于端口 9050 或 9150 被 tor 代理使用并且对浏览器的 tor 实例不可用,但这并不能解释当没有 tor 代理实例运行时导致的错误。

    我找到的解决方案是正常启动 tor 代理,手动或使用os.popen("tor.exe") 并将 tor 浏览器配置为不启动 tor 代理。 这是代码:

    from selenium import webdriver
    from selenium.webdriver.firefox.firefox_profile import FirefoxProfile
    from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
    
    os.popen(r'e:\\bla\\bla\\bla\\tor\\Tor\\tor.exe')
    
    binary=FirefoxBinary(r'e:\\bla\\bla\\bla\\Tor Browser\\Browser\\firefox.exe')
    fp=FirefoxProfile(r'e:\\foo\\bar\\bla\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default')
    
    fp.set_preference('extensions.torlauncher.start_tor',False)#note this
    fp.set_preference('network.proxy.type',1)
    fp.set_preference('network.proxy.socks', '127.0.0.1')
    fp.set_preference('network.proxy.socks_port', 9050)
    fp.set_preference("network.proxy.socks_remote_dns", True)
    fp.update_preferences()
    
    driver = webdriver.Firefox(firefox_profile=fp,firefox_binary=binary)
    driver.get("http://check.torproject.org")
    driver.get('https://www.bbcnewsv2vjtpsuy.onion/')
    

    *note fp.set_preference('extensions.torlauncher.start_tor',False) 第 10 行用于配置 tor 不启动自己的 tor 实例,以便它使用上面启动的代理配置和 tor 实例。

    lo and behold as the tbb starts working like normal firefox bot browser

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-11
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      相关资源
      最近更新 更多