如何使用 Python 绕过速率限制 ..HTML 错误 1015

Posted

技术标签:

【中文标题】如何使用 Python 绕过速率限制 ..HTML 错误 1015【英文标题】:How to bypass being rate limited ..HTML Error 1015 using Python 【发布时间】:2021-03-15 15:21:31 【问题描述】:

所以我创建了一个自动化机器人来在互联网上为我做一些事情..使用 Selenium Python..经过长时间的编码会话..在这个项目上工作的日日夜夜,我终于完成了它......只是随机收到错误 1015“您受到速率限制”。

我知道这是为了防止 DDOS 攻击。但这是一个重大打击。

我已联系网站解决问题,但无济于事..但他们使用的第三方安全软件说他们网站可以授予我的 ip 排除速率限制。

所以我想知道有没有其他方法可以绕过这个......也许从编码的角度来看...... 我认为清除 cookie 之类的东西不会解决任何问题..或者会因为它是我的特定 IP 地址而被他们阻止

注意: 我正在运行我的机器人的网站的 TofC 并没有说你不能在上面使用自动化软件..但它也没有说你也不能。

我不介意编写更多代码以防止随机访问拒绝..我认为持续 24 小时这可能是有害的,因为此构建的最后阶段是让我的程序每天运行很长时间。

您认为我可以与第三方安全部门沟通,要求他们要求网站授予我访问权限吗..我已经尝试通过网站解决问题。他们只说A。在那边说我很好 B. 问题很可能出在我这边 ..“也许某些恶意软件正试图访问我们的网站” .. 不是恶意软件,但是是机器人。这就是让我觉得如果我自己解决问题可能会更好的原因。

您认为我可能必须在进程之间实现等待时间或其他什么。我卡住了。

感谢您的帮助。而且它是一个机器人!

【问题讨论】:

网站没有API供您使用吗?您也可以尝试弄乱用户代理字符串,以防他们将您检测为机器人并以不同的方式对待您。 遗憾的是没有......如果这样做的话,它会将开发时间缩短到 2 周左右,而不是 iv 在这个项目上花费 10 周以上;( support.cloudflare.com/hc/en-us/articles/… 这里说网站可以给我的ip一个例外 但我似乎无法向他们解释他们被允许这样做 【参考方案1】:

如果你被随机打招呼......

...暗示网站所有者实施了Rate Limiting,这会影响您的访问量。


限速原因

Cloudflare 可以对访问者流量进行速率限制,试图对抗可能的Dictionary attack。


速率限制阈值

在一般情况下,Cloudflare 在访问者流量超过速率限制阈值时对访问者进行速率限制,该阈值的计算方法是,将 24 小时未缓存的网站请求除以相同 24 小时内的唯一访问者.然后,除以估计的平均访问分钟数。最后,乘以 4(或更大)为您的网站确定每分钟的估计阈值。高于 4 的值很好,因为大多数攻击都比典型的流量速率高一个数量级。


解决方案

在这些情况下,潜在的解决方案是使用undetected-chromedriver 来初始化Chrome 浏览上下文

undetected-chromedriver 是一个优化的 Selenium Chromedriver 补丁,它不会触发像 Distill Network / Imperva / DataDome / Botprotect.io 这样的反僵尸服务。它会自动下载驱动程序二进制文件并对其进行修补。

代码块:

import undetected_chromedriver as uc
from selenium import webdriver

options = webdriver.ChromeOptions() 
options.add_argument("start-maximized")
driver = uc.Chrome(options=options)
driver.get('https://bet365.com')

参考文献

您可以在以下位置找到一些相关的详细讨论:

Selenium app redirect to Cloudflare page when hosted on Heroku Linkedin API throttle limit

【讨论】:

这听起来很完美......我试试看然后回复你 iv 尝试实现未检测到的 chromedriver 但无济于事.. pip install comand 工作,它说它已安装,但是当尝试导入 python(pycharm) 时它没有出现 @HamzaArshad See undetected chromedriver 应该从检测角度满足您的要求。但是您面临的问题,即 import into python(pycharm) 是一个配置问题。请您对您的新要求提出一个新问题吗? @HamzaArshad 很高兴能为您提供帮助。 Vote up the other questions and answers 你觉得很有帮助。见Why is voting important。【参考方案2】:

我在这里为你看到了一些可能性:

引入对站点的请求之间的等待时间 减少您的请求 扩展您的机器人以检测它何时达到限制并更改您的 IP 地址(例如通过重新启动路由器)

最后一个是我认为最不受欢迎的一个,也是最耗时的一个。

【讨论】:

我怀疑这与...中发送的请求数量有关 问题是机器人会考虑网站的多个部分..并在一个阶段更改每个部分的详细信息..然后进入下一个..意味着打开了多个选项卡在任何给定的时间。你认为这会影响它吗? 我已经实现了一些等待时间。我想我只需要添加更多。【参考方案3】:

首先:阅读网站的使用条款,例如查看 robots.txt,通常位于网站的根目录,如 www.google.com/robots.txt 。请注意,违反网站所有者的明确条款可能是非法的,具体取决于司法管辖区,并可能导致所有者阻止您的工具和/或 IP。

https://www.robotstxt.org/robotstxt.html

这会让您知道网站所有者明确允许自动化和抓取的内容。

在您查看了网站的条款并了解了他们允许的内容之后,他们没有回复您,并且您确定您没有违反网站的使用条款,唯一真正的其他选择是使用代理和/ 或 VPS,将为运行脚本的系统提供不同的 IP。

【讨论】:

该网站没有 robots.txt ...看起来我在这很长一段时间..不是一个好时机.. 老实说我看的方式我被允许这样做是通过查看 TofC ..寻找机器人 ..和自动化软件等词:没有找到一个词

以上是关于如何使用 Python 绕过速率限制 ..HTML 错误 1015的主要内容,如果未能解决你的问题,请参考以下文章

如何绕过 python 中 sys.exit() 的 0-255 范围限制?

Python 请求,如何限制接收大小、传输速率和/或总时间?

如何绕过 IE8 32k 数据限制:base64 编码上的 uri?

没有脚本编译速率限制的多个文档上的 Python ElasticSearch 更新字段

如何使用 Apache 实现速率限制? (每秒请求数)

怎样绕过ip限制?