【问题标题】:driver.get() stopped working in Headless -mode (Chrome)driver.get() 在无头模式下停止工作(Chrome)
【发布时间】:2021-11-06 00:50:43
【问题描述】:

最近我制作的一个刮刀停止在无头模式下工作。我已经尝试过使用 firefox 和 Chrome。值得注意的是,我使用seleniumwire 来访问API 请求,并且我使用ChromeDriverManager 来获取驱动程序。 Chrome/93.0.4577.63 的当前版本。

我已经尝试手动修改 User-Agent,如下面的代码所示,以防网站添加了一些阻止 HeadlessChrome/93.0.4577.63 的检查,这是原始的 User-Agent。这没有帮助。

在常规模式下运行脚本时,它可以工作。在无头模式下运行时,以下代码将输出[],这意味着driver.get(url) 不返回任何请求。我每天运行这段代码,我想它在 2021 年 8 月 8 日停止工作。

from selenium.webdriver.chrome.options import Options as chromeOptions
from seleniumwire import webdriver
from webdriver_manager.chrome import ChromeDriverManager

options = {
'suppress_connection_errors': False,
'connection_timeout': None
}

chrome_options = chromeOptions()
chrome_options.add_argument("--start-maximized")
chrome_options.add_argument("--incognito")
chrome_options.add_argument('--log-level=2')
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument('--allow-running-insecure-content')
chrome_options.add_argument('--headless')

driver = webdriver.Chrome(ChromeDriverManager().install(), seleniumwire_options=options, chrome_options=chrome_options)

userAgent = driver.execute_script("return navigator.userAgent;")
userAgent = userAgent.replace('Headless', '')
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": userAgent})

url = 'my URL goes here'
driver.get(url)
print(driver.requests)

与 FireFox 相同的问题,headless 不起作用,但常规浏览可以。知道什么可能导致这个问题,什么可以解决它?我还尝试将以下参数添加到 Chrome 选项中,但没有任何运气:

chrome_options.add_argument("--proxy-server='direct://'")
chrome_options.add_argument("--proxy-bypass-list=*")
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--ignore-certificate-errors-spki-list')
chrome_options.add_argument('--ignore-ssl-errors')

【问题讨论】:

    标签: python selenium selenium-webdriver headless seleniumwire


    【解决方案1】:

    这可能已经解决 - 我注意到我首先将窗口大小设置为最大化,然后将其设置为 1920,1080。当我删除参数以最大化 chrome_options.add_argument("--start-maximized") 问题消失了,现在脚本又可以工作了。

    我不确定这是否真的解决了它或者是否是其他问题,因为 Selenium 有点挑剔,有时数据不会以相同的方式加载到同一个网页,但至少现在它可以工作。

    【讨论】:

      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 2012-08-18
      相关资源
      最近更新 更多