如何使用 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 Seeundetected 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?