【发布时间】: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