我正在尝试在 AWS EC2 实例上使用 Seleniumwire 运行 Firefox。这是我当前的配置:
- ubuntu==20.4
- 硒线==4.3.0
- 蟒蛇==3.8.10
- 壁虎驱动==0.29.1
- ChromeDriver==94.0.4606.81
- 64 位(臂)
我已经安装了 ChromeDriversudo apt-get install chromium-chromedriver
和 geckodriver sudo apt-get install firefox-geckodriver
。
这是我要运行的脚本:
from seleniumwire import webdriver
options = webdriver.FirefoxOptions()
options.add_argument("--headless")
options.add_argument('--no-sandbox')
options.add_argument('--ignore-certificate-errors-spki-list')
options.add_argument('--ignore-ssl-errors')
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-gpu")
d = webdriver.Firefox(options=options)
d.get("https://google.com")
print(d.requests)
问题:d.requests
返回[]
,这是意外行为。我知道已经发布了有关driver.requests
返回空列表的问题,但推荐的解决方案在我的设置中不起作用。也print(d.page_source)
可以正常工作,这让我认为代理配置不正确。此外,我将这个问题隔离到 Firefox,因为相同的代码在 Chrome 上工作(用 Firefox 换成 Chrome);也就是说,d.requests
包含一个非空的请求列表。我会使用 Chrome,但我的项目范围需要 Firefox。
以下是我为调试所采取的一些步骤:
- 使用 显式设置端口
selenium_options={"port": 4444}
,其中4444
取自geckodriver
命令行上的 localhost 输出。 - 使用以下格式添加代理:
options = {
'proxy': {
'http': 'http://myusername:password@myproxyserver.com:123456',
'https': 'http://myusername:password@myproxyserver.com:123456',
'no_proxy': 'localhost,127.0.0.1'
}
}
- 在新的 EC2 实例上重新安装并重新运行我的所有脚本。
- 根据此问题指定不同的
tmp
目录
我还没有尝试过不同版本的geckodriver
and selenium-wire
,但我怀疑这不是问题所在。
任何有关调试的建议将不胜感激。