首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Selenium请求返回错误400 -错误的请求

Selenium请求返回错误400 -错误的请求
EN

Stack Overflow用户
提问于 2020-06-09 01:15:33
回答 1查看 1.2K关注 0票数 0

我正在尝试从http://43.248.49.97/indexEn获取拉取数据

通常在浏览器上,对上面的url的第一个请求返回错误412,第二个请求是对JS文件的请求,第三个请求也是对上面的url的请求,并返回ok (200)。

当使用selenium时,第三个请求返回错误400 - Bad request。

我使用的是Python。有什么想法可以解释为什么会发生这种情况吗?]

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-01-28 16:42:18

我和你有同样的问题,但我找到了一个完美地解决我的问题的解决方案。

也许您的程序失败是因为您被检测为使用selenium的机器人。下面是使用JavaScript解决这个问题或隐藏你的身份(window.navigator.webdriver)的方法:

使用CDP(Chrome Devtools-Protocol),您可以在JS文件(检测器)加载帧之前运行代码。因此,使用以下代码删除"webdriver True“属性:

代码语言:javascript
运行
复制
Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    })

按键代码:

代码语言:javascript
运行
复制
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。上面提到的方法将是无用的。幸运的是,我们仍然有一个解决方案(添加以下代码)

代码语言:javascript
运行
复制
chrome_options.add_argument("--disable-blink-features=AutomationControlled")

这些代码应该可以帮助您传递JS文件,以便您可以获取数据。至少我成功地运行了我的程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62267642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档