我正在尝试从http://43.248.49.97/indexEn获取拉取数据
通常在浏览器上,对上面的url的第一个请求返回错误412,第二个请求是对JS文件的请求,第三个请求也是对上面的url的请求,并返回ok (200)。
当使用selenium时,第三个请求返回错误400 - Bad request。
我使用的是Python。有什么想法可以解释为什么会发生这种情况吗?]
谢谢
发布于 2021-01-28 16:42:18
我和你有同样的问题,但我找到了一个完美地解决我的问题的解决方案。
也许您的程序失败是因为您被检测为使用selenium的机器人。下面是使用JavaScript解决这个问题或隐藏你的身份(window.navigator.webdriver)的方法:
使用CDP(Chrome Devtools-Protocol),您可以在JS文件(检测器)加载帧之前运行代码。因此,使用以下代码删除"webdriver True“属性:
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
按键代码:
from selenium.webdriver import Chrome
driver = Chrome('D://chromedriver.exe')
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
"source": """
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
})
"""
})
driver.get('http://pythonlearner.com')
然而,如果你现在把你的Chrome升级到88。上面提到的方法将是无用的。幸运的是,我们仍然有一个解决方案(添加以下代码)
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
这些代码应该可以帮助您传递JS文件,以便您可以获取数据。至少我成功地运行了我的程序。
https://stackoverflow.com/questions/62267642
复制相似问题