我正在无头模式下运行抓取机器人。如您所知,当它在无头模式下运行时,它在useragent中包含无头字符串。为了避免这个问题,我更改了useragent。网站检测到这个假用户代理并阻止抓取机器人。我如何防止这种检测?
我正在使用selenium chromedriver.
请添加这些选项
# windows_useragent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"
# linux_useragent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument("--no-sandbox")
options.add_argument("user-agent=#{linux_useragent}")
options.add_argument("--disable-web-security")
options.add_argument("--disable-xss-auditor")
options.add_option("excludeSwitches", ["enable-automation", "load-extension"])
导航器。平台和导航仪。userAgent应该匹配。
如果userAgent是用于windows的,那么navigator。平台应为"win32">
如果userAgent是linux的,那么navigator。平台应为"Linux x86_64";
你可以这样设置
platform = {
windows: "Win32",
linux: "Linux x86_64"
}
driver.execute_cdp("Page.addScriptToEvaluateOnNewDocument", {
"source": "
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
}),
Object.defineProperty(navigator, 'languages', {
get: () => ['en-US', 'en']
}),
Object.defineProperty(navigator, 'platform', {
get: () => "#{platform[:linux]}"
})"
})
,当然你需要设置导航器。Webdriver到undefined