【问题标题】:which is the valid firefox binary path for python tbselenium?哪个是 python tbselenium 的有效 firefox 二进制路径?
【发布时间】:2019-05-09 04:05:08
【问题描述】:

实际上,我在C:/tor/ 中有提取的文件,另一个文件夹在桌面中。我正在尝试使用以下代码

import tbselenium.common as cm
from tbselenium.tbdriver import TorBrowserDriver
from tbselenium.utils import launch_tbb_tor_with_stem
tbb_dir = 'C:/Users/myName/Desktop/Tor Browser/'
tor_process = launch_tbb_tor_with_stem(tbb_path=tbb_dir)
with TorBrowserDriver(tbb_dir) as driver:
    driver.load_url("https://check.torproject.org")

tor_process.kill()

但是我得到tbselenium.exceptions.StemLaunchError: Invalid Tor binary我不知道我必须指定的路径是什么,我尝试了以下路径

C:/Users/myName/Desktop/Tor Browser/Browser/
C:/Users/myName/Desktop/Tor Browser/Browser/firefox.exe
C:/tor/Browser/firefox.exe
C:/tor/Browser/
C:/tor

对于上述所有路径,我遇到了同样的错误。我不知道如何指定 tbselenium 的路径

【问题讨论】:

  • 我试过了,但没有成功。我也尝试使用反斜杠。我也试过r'path/' :(
  • 我最好的两个猜测是:1)不设置 tbb_path,并将 tor_binary 设置为 firefox.exe bin 的完整路径(否则,该函数将连接字符串),或者2) 设置 tbb_path = "...\Tor Browser\Browser\TorBrowser\Tor",但未设置 tor_binary

标签: python selenium tor


【解决方案1】:

我希望这个答案对你有所帮助。

from selenium import webdriver

from itertools import cycle

from seleniumwire import webdriver

profile = webdriver.FirefoxProfile() 

socks=["178.62.193.19","176.9.75.42","120.132.52.180"]

ports=[8080,3128,8888]

socks_ports={}

socks_ports=dict(zip(socks,ports))

socks_pool=cycle(socks_ports.keys())

ports_pool=cycle(socks_ports.values())

def ChangeProxy(ProxyHost,ProxyPort):

    options = {

    'proxy': {

        'http': 'http://username:password@'+str(ProxyHost)+':'+str(ProxyPort),

        'https': 'https://username:password@'+str(ProxyHost)+':'+str(ProxyPort),

        'no_proxy': 'localhost,127.0.0.1,dev_server:8080'

        }

    }

    return webdriver.Firefox(seleniumwire_options=options)

while True:

    socks_item=next(socks_pool)

    ports_item=next(ports_pool)

    print(type(socks_item))

    print(type(ports_item))


    try:
        driver=ChangeProxy(socks_item,ports_item)

        driver.get("https://www.ipchicken.com/")
    except:
        continue

附言
我已经尝试了很多次,它的工作。您应该尝试找到主机和端口并添加到上面的数组中。

【讨论】:

  • 感谢您的回答,我会试试看。 :)
  • 我不知道为什么,但这是非常不稳定的代码。我昨天自己写的。如果你能改进它,那就太好了。我认为如果您希望此代码稳定,您应该使用代理。但旋转有时会起作用,有时 Firefox 会收到错误 502 bad request。
【解决方案2】:

我认为更好的解决方案是手动代理您的 selenium 驱动程序并使用 firefox。我已经看到很多关于tbselenium 包的问题,​​所以我开始认为它不起作用。

这应该可以解决问题,假设您有一个 Tor 实例(而不是浏览器)正在运行并且已经成功地为 selenium 配置了 geckodriver

from selenium import webdriver

profile = webdriver.FirefoxProfile() 

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_version", 5)
profile.update_preferences()
driver = webdriver.Firefox(firefox_profile=profile)

driver.get("http://whatismyip.com")

另外,如果您在 Windows 上启动 Tor 实例(而不是浏览器)需要帮助,请告诉我。

【讨论】:

    【解决方案3】:

    嘿,我很确定我找到了答案here

    不支持 Windows!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      相关资源
      最近更新 更多