c# - C# 以任何方式减慢 HtmlWeb.Load() 加载或绕过验证码的速度吗?
问题描述
我正在尝试抓取一些网页,但因为 HtmlWeb.Load() 非常快(我相信)它阻止了我并要求我做一个验证码。有时我可以加载它,有时我不能。
我想知道是否有任何方法可以减慢速度(也许 htmlweb 有一些内置的方法/属性可以做到这一点?或者也许有一种方法可以限制我的应用程序的资源,因此它故意运行缓慢?)。如果这不可能,是否有一种简单的方法可以绕过验证码?任何提示/帮助将不胜感激,谢谢。
<p>
As you were browsing, something about your browser made us think you might be a bot. There are a few reasons this might happen, including:
</p>
<ul>
<li>You're a power user moving through this website with super-human speed</li>
<li>You've disabled JavaScript and/or cookies in your web browser</li>
<li>A third-party browser plugin is preventing JavaScript from running.</li>
</ul>
解决方案
您认为这是因为您加载单个页面的速度太快了,但这根本不是他们告诉您的。您在页面之间切换的速度太快了,无法成为人类。和/或者,正如我怀疑您的应用程序可能正在做的那样,您没有在程序中加载 JavaScript。和/或您没有处理 cookie。
这三件事中的任何一个或全部都可能是机器人活动的迹象。顺便说一句,你是哪个。所以他们抛出一个验证码,因为他们不希望机器人试图爬取他们的网站。你肯定不会轻易绕过验证码,所以最好的办法是解决他们在消息中列出的实际问题。
- 减慢页面加载之间的时间,使其更适合人类浏览。但是,如果您以非人类的方式浏览他们的整个网站,您可能仍然会被卡住。
- 处理他们尝试设置的任何 cookie,以便您看起来像普通用户。从同一 IP 对站点的几次连续无 cookie 访问可能不会引发标志,但几十到数百次会。
- 如果这些不起作用,也许他们真的坚持在他们的网站上加载 JavaScript 元素,你必须找到一种方法让你的应用程序运行 JavaScript 片段,这样它就不会看起来像你机器人。
但总而言之,你是一个机器人,他们的系统正在按预期工作。
推荐阅读
- javascript - 使用带有 MongoDB 查询结果的 for 循环是连续不同的值
- c - 由于某种原因,在 C 中转换碱基的程序不起作用
- java - 如何(反)序列化并将获得的数据传输到 ArrayList?
- python - 由于数据类型 int 和 bigint 不兼容,读取 parquet 文件时合并模式失败
- r - R中的一个数据框的堆叠列表
- django - Django 有效地获取 ForeignKey 模型的字段?
- php - Html按钮没有点击
- android-security - 收到来自 Google 的邮件“您的应用容易受到 Intent Redirection 的攻击”,但找不到漏洞
- sockets - HAProxy 无法绑定套接字 80 或 443 - Ubuntu
- azure - 自动建议中的多个源字段与一个唯一源字段