最近我制作的一个刮刀停止在无头模式下工作。我已经尝试过Firefox和Chrome。值得注意的是,我正在使用它seleniumwire
来访问 API 请求,并且我正在使用它ChromeDriverManager
来获取驱动程序。当前版本为Chrome/93.0.4577.63
.
我已经尝试手动修改用户代理,如下面的代码所示,以防网站添加了一些检查阻止HeadlessChrome/93.0.4577.63
,即原始用户代理。这没有帮助。
在常规模式下运行脚本时,它可以工作。在无头模式下运行时,以下代码将输出不返回任何请求的[]
含义。driver.get(url)
我每天运行这段代码,我想它在 8.9.2021 白天停止工作。
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 相同的问题,无头不起作用,但常规浏览可以。知道什么可能导致这个问题,什么可以解决它?我还尝试将以下参数添加到 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')