为什么我每次使用 Selenium 时都会收到 429 错误,而在 bstn.com 上正常浏览时却没有收到 429 错误?

问题描述 投票:0回答:2

在堆栈溢出和其他页面上搜索了几个小时后,我还无法找到解决问题的任何方法。我想通过 Python Selenium 和 ChromeDriver 浏览页面 https://www.bstn.com/eu_de

使用 Firefox 或 Chrome 等普通浏览器访问该页面时,它可以正常打开。然而,当使用 Selenium 时,它会返回白屏页面。我的脚本已经包含了在 StackOverflow 上找到的标准程序数百次:

options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) options.add_argument('--disable-blink-features=AutomationControlled')
我还在每个请求上使用轮换和更新用户代理。

进一步调查显示服务器似乎抛出了 429 错误。通常 429 表示发出的请求太多,但由于我只尝试了不到 10 次,并且在普通浏览器上它仍然有效,这似乎不是问题。

再次查看 Chromes Network -> Headers 选项卡显示抛出 429 错误的服务器是 Cloudflare,因此看来 Cloudflare 以任何方式参与其中。 我比较了成功连接(图片右侧)和左侧 429 错误连接的请求标头。

标题比较

唯一不同的是一个稍大的 cookie 集(所有 cookie 在发出请求之前都被删除)、referer header、包含 same-origin 的 sec-fetch-site 值以及 sec-fetch-user: ?1 。 使用名为 seleniumwire 的工具添加/更改此标头信息似乎不会以任何方式影响我面临的问题。

我还可以识别请求 cookie:

"name":"KP_REF","domain":"www.bstn.com","value":""

在普通浏览器上创建,在使用 Selenium 时不存在。添加:

driver.add_cookie({"name":"KP_REF","domain":"www.bstn.com","value":""})
也不会改变任何东西。

我错过了什么或做错了什么才能访问此页面?到目前为止,我还没有使用 Chrome headless,而是依赖于使用 ChromeDriver,因为这是我们应用程序内部的标准。我还坚持使用 ChromeDriver,因为 ChromeDriverManager 似乎不适用于未检测到的 ChromeDriver。

python selenium selenium-webdriver selenium-chromedriver http-status-code-429
2个回答
0
投票
HTTP 429 错误

当用户在短时间内发送过多请求时,会返回

HTTP 429 Error。 429 状态代码旨在与速率限制方案一起使用。

在实时用例中,如果 AUT(

测试中的应用程序)检测到用户代理尝试在短时间内过于频繁地访问特定页面,则会触发速率限制功能。这种情况最常见的现象是攻击者反复尝试登录您的网站。

但是,应用程序服务器也可能使用 cookie 来识别用户,而不是通过登录凭据来识别用户。请求也可以基于每个请求、跨您的服务器或跨多个服务器进行计数。因此,有多种情况可能会导致您看到如下错误之一:

  • 429 请求太多
  • 429错误
  • HTTP 429
  • 错误 429(请求过多)

示例

几个例子:

HTTP/1.1 429 Too Many Requests Content-type: text/html Retry-After: 3600

<html> <head> <title>Too Many Requests</title> </head> <body> <h1>Too Many Requests</h1> <p>I only allow 100 requests per hour to this website per logged in user. Try again soon. </p> </body> </html>


补救措施

有时这个问题会自行消失。但是,在某些情况下,插件问题或

拒绝服务 (DDoS) 攻击也可能导致此错误,您需要单独解决该错误,并且应该一起进行不同的讨论。


尾声

最后,为了更加清晰和简洁,需要注意的是,使用

hCaptcha 来保护免受机器人的侵害

hCaptcha


0
投票
这个问题你解决了吗?我也遇到了和你一样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.