1

我正在尝试在 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目录

我还没有尝试过不同版本的geckodriverand selenium-wire,但我怀疑这不是问题所在。

任何有关调试的建议将不胜感激。

4

0 回答 0