python - 使用 Selenium 让 Tor 在 AWS EC2 上工作
问题描述
我试图让 Selenium 在运行 Ubuntu 20.4 的 AWS EC2 实例上与 Tor 一起工作。这是我尝试过的步骤,在pwd
哪里/home/ubuntu
:
- 安装先决条件:
sudo apt update
sudo apt install unzip libnss3 python3-pip
- 安装壁虎驱动程序:
sudo apt-get install firefox-geckodriver
- 安装 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
- 创建
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
. 我也尝试用 、 和 替换firefox
,firefox.real
但start-tor-browser
都start-tor-browser.desktop
导致相同的错误。
我也删除executable_path
了,考虑到第 2 步将 geckodriver 安装到路径,这可能会有所帮助。同样的错误。
也许我最直接的问题是:鉴于我的项目结构,我如何在 Linux 上找到 Tor 的 Firefox 二进制文件?是否需要额外的操作tor-browser_en-US
?应该tor-browser_en-US
位于不同的目录中,例如/usr/bin/
?
解决方案
推荐阅读
- maven - Grails 无法启动,卡在 postProcessBeanFactory
- uwp - UWP 中的动画
- javascript - nodejs中分配的全局变量问题
- jquery - 如何在 JsonResult 中按降序对数据进行排序?
- angular - 角度中 sharedVar 中的模板问题
- python - Scrapy CrawlSpider 抓取页面时遵循什么顺序?
- tomcat - Tomcat 因 StringCache.findClosest NPE 崩溃
- ios - 'NSRangeException',原因:'*** -[NSBigMutableString characterAtIndex:]:索引 1258 越界;字符串长度 1176'
- php - php没有更新
- c# - 通过单击超链接(不是加号和减号)在网格视图中展开和折叠