问题描述
我试图抓取一些网页,但因为 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 片段,使其看起来不像您是机器人。
但总而言之,你是一个机器人,他们的系统按预期工作。