首页 > 解决方案 > 使用 Selenium 让 Tor 在 AWS EC2 上工作

问题描述

我试图让 Selenium 在运行 Ubuntu 20.4 的 AWS EC2 实例上与 Tor 一起工作。这是我尝试过的步骤,在pwd哪里/home/ubuntu

  1. 安装先决条件:
sudo apt update
sudo apt install unzip libnss3 python3-pip
  1. 安装壁虎驱动程序:
sudo apt-get install firefox-geckodriver
  1. 安装 Tor 浏览器包:
sudo wget https://www.torproject.org/dist/torbrowser/10.5.8/tor-browser-linux64-10.5.8_en-US.tar.xz
sudo tar -xf tor-browser-linux64-10.5.8_en-US.tar.xz
sudo chmod 775 tor-browser_en-US
  1. 创建test.py
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefox.options import Options
from selenium import webdriver

tor = '/home/ubuntu/tor-browser_en-US/Browser/firefox'
firefox_binary = FirefoxBinary(tor)

options = Options()
options.headless = True

driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver', 
                            firefox_binary=firefox_binary)

driver.get("http://google.com/")
print(driver.page_source)
driver.quit()

的结构test.py取自this SO answer。

这是问题开始的地方:运行python3 test.py返回以下错误:

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    driver = webdriver.Firefox(executable_path='/usr/bin/geckodriver', 
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 170, in __init__
    RemoteWebDriver.__init__(
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/ubuntu/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: binary is not a Firefox executable

我假设错误binary是指. tor = '/home/ubuntu/tor-browser_en-US/Browser/firefox'我通过查看 的内容tor-browser_en-US、步骤 3 的结果并找到firefox. 我也尝试用 、 和 替换firefoxfirefox.realstart-tor-browserstart-tor-browser.desktop导致相同的错误。

我也删除executable_path了,考虑到第 2 步将 geckodriver 安装到路径,这可能会有所帮助。同样的错误。

也许我最直接的问题是:鉴于我的项目结构,我如何在 Linux 上找到 Tor 的 Firefox 二进制文件?是否需要额外的操作tor-browser_en-US?应该tor-browser_en-US位于不同的目录中,例如/usr/bin/

标签: pythonamazon-web-servicesseleniumubuntuselenium-webdriver

解决方案


推荐阅读