Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以检测到页面刮取?_Java_Html_Web Scraping - Fatal编程技术网

Java 是否可以检测到页面刮取?

Java 是否可以检测到页面刮取?,java,html,web-scraping,Java,Html,Web Scraping,所以我刚刚创建了一个应用程序,为我做页面抓取,并运行了它。它工作得很好。我想知道是否有人能够发现代码被刮页,他们是否为此编写了代码 我用java编写了代码,它几乎只是检查一行html代码 在我向这个程序添加更多代码之前,我想我会对此有所了解。我的意思是它很有用,但它几乎像一个黑客 似乎最坏的情况下,由于这个网页刮板不是太坏,因为我可以使用另一个设备后,IP将是不同的。而且一个月后可能也没关系。该网站目前似乎获得了相当多的网络流量。编辑页面的人现在可能已经睡着了,而且在这一点上还没有完成任何工作,

所以我刚刚创建了一个应用程序,为我做页面抓取,并运行了它。它工作得很好。我想知道是否有人能够发现代码被刮页,他们是否为此编写了代码

我用java编写了代码,它几乎只是检查一行html代码

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

似乎最坏的情况下,由于这个网页刮板不是太坏,因为我可以使用另一个设备后,IP将是不同的。而且一个月后可能也没关系。该网站目前似乎获得了相当多的网络流量。编辑页面的人现在可能已经睡着了,而且在这一点上还没有完成任何工作,所以这可能会被忽略

谢谢你这么快的回复。我想这可能没有引起注意。我所做的只是复制一个标题,所以只需要文本。我想这可能类似于浏览器复制粘贴的工作方式。这个页面今天早上刚刚被编辑过,包括我试图获取的文本。如果他们确实注意到了什么,他们还没有宣布,所以一切都很好。

这是一个黑客行为。:)

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


如果可以的话,您应该尽量遵守robots.txt文件,并限制自己的评分,以示礼貌。

假设您以正常方式编写页面刮板,即它获取整个页面,然后进行模式识别,从页面中提取您想要的内容,有人可能只知道该页面是由机器人而不是普通浏览器获取的。他们所有的日志都会显示整个页面被抓取;一旦它进入RAM,他们就无法告诉你如何处理它。

对于为页面提供服务的服务器来说,将页面下载到浏览器或下载页面并进行屏幕刮除没有区别。这两个操作都只需要一个HTTP请求,无论您如何处理最终生成的HTML,都与服务器无关

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


服务器是否尝试检测到这些东西取决于服务器,而大多数服务器都不这么做。

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


然后我又得看我的日志了。本周Slashdot特别有趣,所以我可能不会注意到。

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

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

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

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

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

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


快乐的黑客

如果你的刮刀像人一样工作,那么它几乎不可能被检测为刮刀。但是如果你的铲运机像机器人一样工作,那么它就不难被发现

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

  • 查看浏览器在HTTP头中发送的内容并模拟它们

  • 查看浏览器在访问页面时请求的内容,并使用刮板访问相同的内容

  • 以正常用户的速度对刮板进行计时

  • 以随机时间间隔而不是固定时间间隔发送请求

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


  • 我想把我的两分钱给其他可能正在读这篇文章的人。在过去的几年里,网络抓取越来越受到法院系统的反对。我引用了很多

    你当然应该遵守robots.txt,但也要查看T&C的网站,以确保你没有违反规定。人们肯定有办法确定你是在抓取网页,这样做可能会产生潜在的后果。如果网站的条款和条件不允许进行网页抓取,那么就尽情享受吧,但一定要保持理智。不要用一个失控的机器人破坏一个Web服务器,控制自己,确保你不会影响服务器