可以检测页面抓取吗?

时间:2011-08-04 05:09:21

标签: java html web-scraping

所以我刚创建了一个为我进行页面抓取的应用程序,然后运行它。它工作正常。我想知道是否有人能够弄清楚代码是否被页面抓取,无论他们是否为此目的编写代码?

我在java中编写代码,它只是检查一行html代码。

在我将更多代码添加到此程序之前,我想我会对此有所了解。我的意思是它很有用,而且它几乎就像一个黑客。

看起来像最糟糕的情况,因为这个页面刮板不是太糟糕,因为我可以稍后使用另一个设备,IP将是不同的。也可能在一个月内无关紧要。该网站目前似乎正在获得相当多的网络流量。编辑页面的人现在可能已经睡着了,此时它确实没有完成任何事情,所以这可能会被忽视。

感谢您的快速回复。我想它可能已被忽视了。我所做的只是复制一个标题,所以只是文字。我想这可能类似于浏览器复制粘贴的工作原理。该页面刚刚在今天早上编辑,包括我试图获得的文字。如果他们确实注意到了什么,他们还没有宣布,所以一切都很好。

7 个答案:

答案 0 :(得分:6)

这是一个黑客。 :)

无法以编程方式确定是否正在抓取页面。但是,如果您的刮刀变得流行或者您使用它太重,那么很有可能在统计上检测刮削。如果您看到一个IP每天在同一时间抓取相同的页面,您可以做出有根据的猜测。如果您在另一个计时器上看到请求,则相同。

如果可以的话,你应该尝试遵守robots.txt文件,并且自己限制率,以保持礼貌。

答案 1 :(得分:5)

作为一名系统管理员,我可能会注意到,但仅限于客户端的行为。如果客户有一个奇怪的用户代理,我会怀疑。如果客户浏览网站的速度过快或间隔时间非常短,我会怀疑。如果从未请求某些支持文件(favicon.ico,CSS和JS文件中的各种链接),我会怀疑。如果客户端访问奇数(不可直接访问)的页面,我会怀疑。

然后,我必须实际在我的日志中查找。本周Slashdot特别有趣,所以我可能不会注意到。

答案 2 :(得分:1)

这取决于您如何实现这一点以及检测工具的智能程度。

首先要注意User-Agent。如果你没有明确地设置它,它将类似于“Java-1.6”。浏览器发送其“唯一”用户代理,因此您可以模仿浏览器行为并发送MSIE或FireFox的User-Agent(例如)。

其次,检查其他HTTP标头。可能有些浏览器会发送他们的特定标头。举一个例子并按照它,即尝试将标题添加到您的请求中(即使您不需要它们)。

人类用户的行为相对较慢。机器人可以非常快速地动作,即检索页面然后“点击”链接,即执行另一个HTTP GET。在这些操作之间放置随机睡眠。

浏览器不仅检索主HTML。然后它下载图像和其他东西。如果你真的不想被发现,你必须解析HTML并下载这些东西,即实际上是“浏览器”。

最后一点。显然不是你的情况,但几乎不可能实现通过Capcha的机器人。这是检测机器人的另一种方法。

快乐的黑客攻击!

答案 3 :(得分:1)

如果你的刮刀像人一样,那么它几乎没有机会被检测为刮刀。但如果你的刮刀就像一个机器人那么它就不难被发现了。

要像人一样行动,你需要:

  1. 查看浏览器在HTTP标头中发送的内容并进行模拟。

  2. 查看浏览器访问页面时请求的内容并使用刮刀访问该页面

  3. 让刮刀以普通用户的速度访问

  4. 以随机时间间隔而非固定时间间隔发送请求

  5. 如果可能,请从动态IP而不是静态IP发出请求

答案 4 :(得分:0)

假设您以正常方式编写了页面抓取工具,即,它获取整个页面,然后进行模式识别以从页面中提取您想要的内容,所有人都可以告诉该页面是由页面提取的机器人而不是普通的浏览器。他们所有的日志都会显示整个页面被取出;一旦它在你的RAM中,它们就无法分辨你用它做什么。

答案 5 :(得分:0)

对于服务该页面的服务器,无论是将页面下载到浏览器还是下载页面,屏幕都会将其删除。这两个操作只需要一个HTTP请求,无论您对生成的HTML做什么,都不是服务器的业务。

话虽如此,一个复杂的服务器可能可以想象地检测到看起来不像普通浏览器的活动。例如,浏览器应该请求从页面链接到的任何其他资源,这在屏幕抓取时通常不会发生。或者来自特定地址的异常请求。或者只是HTTP User-Agent标题。

服务器是否尝试检测这些内容取决于服务器,大多数都没有。

答案 6 :(得分:-2)

我想把我的两分钱给可能正在读这篇文章的其他人。在过去的几年中,网络抓取越来越受到法院系统的不满。我引用了很多examples in a blog post I recently wrote.

你绝对应该遵守robots.txt,但也要查看T& C的网站,以确保你没有违规。肯定有一些方法可以让人们发现你是网络抓取的,这样做可能会产生潜在的后果。如果网站的条款和条件不允许网页抓取,那么请玩得开心,但要确保仍然是有意义的。不要破坏带有失控机器人的网络服务器,限制自己以确保不会影响服务器!

为了完全披露,我是Distil Networks的联合创始人,我们帮助公司识别和停止网络抓取工具和机器人。