我有一个大型音乐网站,拥有大型艺术家数据库。我一直注意到其他音乐网站正在抓取我们网站的数据(我在这里和那里输入虚拟的艺术家名称,然后用google搜索它们)。
如何防止屏幕刮擦?可能吗
我有一个大型音乐网站,拥有大型艺术家数据库。我一直注意到其他音乐网站正在抓取我们网站的数据(我在这里和那里输入虚拟的艺术家名称,然后用google搜索它们)。
如何防止屏幕刮擦?可能吗
如果您想查看一个很好的例子,请访问http://www.bkstr.com/。他们使用j / s算法设置cookie,然后重新加载页面,以便页面可以使用cookie验证请求是否正在浏览器中运行。可以通过抓取构建的桌面应用肯定可以通过这种方式获得,但是它将停止大多数cURL类型的抓取。
将您的内容放在验证码后面意味着机器人会发现很难访问您的内容。但是,人类会感到不便,因此可能是不希望的。
我同意上面的大多数帖子,并且我想补充一点,您的网站对搜索引擎的友好程度越高,它的可抓取性就越大。您可以尝试做一些非常棘手的事情,这些事情会使抓取工具变得更困难,但这也可能会影响您的搜索能力...当然,这取决于您希望网站在搜索引擎上的排名。
多数人已经说过了,但是您是否考虑过CloudFlare保护?我的意思是:
其他公司也可能这样做,CloudFlare是我所知道的唯一一家。
我很确定这会使他们的工作复杂化。当我由于速率限制而尝试删除受CloudFlare保护的站点的数据时,我也被IP自动禁止了4个月(我使用了简单的AJAX请求循环)。
快速的解决方法是设置一个诱杀/机器人陷阱。
制作一个页面,如果该页面打开了一定的时间甚至根本没有打开,它会收集某些信息,例如IP和其他信息(您也可以考虑不规则或模式,但根本不必打开此页面)。
在您的页面中为此链接创建一个链接,该链接已被CSS display:none;隐藏;或左:-9999px;正值:绝对值;尝试将其放置在不太可能被忽略的位置,例如您的内容所属的位置,而不是页脚,因为有时漫游器可以选择忽略页面的某些部分。
在您的robots.txt文件中,为您不希望友好的漫游器(喜欢它们的笑脸!)的页面设置一大堆禁止规则,以收集信息并将其设置为其中之一。
现在,如果出现友好的漫游器,它将忽略该页面。是的,但这还不够好。在这些页面中添加更多,或以某种方式重新路由页面以接受不同的名称。然后在robots.txt文件中的这些陷阱页面以及您要忽略的页面旁边放置更多禁止规则。
收集这些漫游器或进入这些页面的任何人的IP,不要禁止它们,而是可以在您的内容中显示乱码,例如随机数,版权声明,特定的文本字符串,显示可怕的图片,基本上可以阻止您的行为好内容。您也可以设置指向页面的链接,该链接将永远需要加载。在php中,您可以使用sleep()函数。如果爬虫具有某种检测功能,可以绕过那些加载时间太长的页面,因为某些写得很好的漫游器被设置为一次处理X数量的链接,这将对爬虫进行反击。
如果您输入了特定的文本字符串/句子,为什么不转到自己喜欢的搜索引擎并进行搜索,它可能会向您显示内容的最终位置。
无论如何,如果您在战术和创造性上进行思考,这可能是一个很好的起点。最好的办法是学习机器人的工作方式。
我还考虑过欺骗某些ID或显示页面元素上的属性的方式:
<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle">
每当某些漫游器可能设置为在页面或目标元素中寻找特定模式时,它的形式都会发生变化。
<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass">
id="p-12802" > id="p-00392"
您无法停止正常的屏幕抓取。不论好坏,这都是网络的本质。
您可以做到,除非有人以注册用户身份登录,否则任何人都不能访问某些东西(包括音乐文件)。在Apache中做起来并不难。我认为在IIS中也不会太困难。
不幸的是,最好的选择是相当手动的:查找您认为表明已被抓取的流量模式,并禁止其IP地址。
由于您是在谈论公共站点,因此使站点搜索引擎更友好也将使站点易于抓取。如果搜索引擎可以抓取并抓取您的网站,那么恶意抓取工具也可以。这是一条细线。
这不是您可能想要的答案,但是为什么隐藏您要公开的内容?
与其将机器人列入黑名单,不如将其列入白名单。如果您不想终止搜索引擎的搜索结果,可以将其用户代理字符串列入白名单,这些字符串通常广为宣传。较不道德的机器人倾向于伪造流行的Web浏览器的用户代理字符串。排名靠前的几个搜索引擎应该会吸引超过95%的点击量。
使用其他发布者建议的技术,识别机器人本身应该非常简单。
当然可以。为了获得100%的成功,请使您的网站离线。
实际上,您可以做一些使刮刮变得困难的事情。Google会进行浏览器检查,以确保您不是抓取搜索结果的机器人(尽管像大多数其他东西一样,这可能是伪造的)。
您可以执行以下操作,从首次连接到站点到随后的点击之间都需要几秒钟的时间。我不确定理想时间是什么时间或确切的时间如何做,但这是另一个想法。
我敢肯定还有其他一些人,他们有更多的经验,但是我希望这些想法至少有所帮助。
可能对初学者刮板不利的事情:
总的来说会有所帮助的事情:
有帮助但会使您的用户讨厌您的事情:
从技术角度来看:只要对您一次查询太多的Google行为建模即可。那应该停止很多。
从法律角度来看:听起来您正在发布的数据不是专有数据。意味着您正在发布名称和统计信息以及其他无法获得版权的信息。
在这种情况下,抓取程序不会通过重新分配有关艺术家姓名等的信息来侵犯版权。但是,当它们将您的网站加载到内存中时,它们可能会侵犯版权,因为您的网站包含可版权保护的元素(例如布局等)。
我建议阅读有关Facebook v。Power.com的文章,并了解Facebook用于阻止屏幕抓取的参数。您可以采取多种合法方法来阻止他人抓取您的网站。他们可能具有深远的影响力和想象力。有时法院会接受这些论点。有时他们没有。
但是,假设您要发布不具有版权的公共领域信息,例如名称和基本统计信息,那么……您应该以言论自由和开放数据的名义让它公开。那就是网络的全部意义。
好的,正如所有帖子所述,如果您想使其对搜索引擎友好,那么机器人肯定可以抓取。
但是您仍然可以做一些事情,它可能会对60-70%的抓取机器人产生影响。
制作如下所示的检查脚本。
如果特定IP地址的访问速度非常快,则在几次访问(5-10)之后,将其IP地址+浏览器信息放入文件或数据库中。
(这将是一个后台进程,并且始终运行或在几分钟后安排好时间。)制作另一个脚本,该脚本将继续检查那些可疑IP地址。
情况1。如果用户代理是Google,Bing和Yahoo这样的已知搜索引擎(您可以通过谷歌搜索找到有关用户代理的更多信息)。然后,您必须看到http://www.iplists.com/。此列表并尝试匹配模式。如果它看起来像是伪造的用户代理,则在下次访问时要求填写验证码。(您需要对机器人IP地址进行更多研究。我知道这是可以实现的,还可以尝试IP地址的Whois。这可能会有所帮助。)
情况2:搜索机器人没有用户代理:只需在下次访问时填写验证码即可。
我想你已经成立了robots.txt
。
正如其他人提到的那样,抓取工具可以伪造其活动的几乎所有方面,并且很难识别来自坏人的请求。
我会考虑:
/jail.html
。robots.txt
(因此,尊敬的蜘蛛将永远不会访问)。display: none
)将其隐藏。/jail.html
。这可能有助于您快速识别来自刮板的请求,而这些请求显然无视您的robots.txt
。
你可能也想使你的/jail.html
整个整个网站具有相同的,准确的标记为正常的网页,而是用假数据(/jail/album/63ajdka
,/jail/track/3aads8
等)。这样,只有当您有机会完全阻止它们时,不良的刮板才会收到“异常输入”的警报。
实际上,您无法采取任何措施完全防止这种情况发生。抓取者可以伪造其用户代理,使用多个IP地址等,并以普通用户的身份出现。您唯一可以做的就是在页面加载时使文本不可用-使用图像,Flash或使用JavaScript进行加载。但是,前两个是个坏主意,如果您的某些常规用户未启用JavaScript,则最后一个将是可访问性问题。
如果他们绝对抨击您的网站并浏览所有页面,则可以进行某种速率限制。
虽然有一些希望。抓取工具依赖于您网站数据的格式一致。如果您可以以某种方式将其随机化,则可能会破坏其刮板。诸如在每次加载时更改页面元素的ID或类名之类的事情,等等。但这需要做很多工作,我不确定是否值得。即使那样,他们也可能会以足够的奉献精神绕过它。
抱歉,做到这一点真的很难...
我建议您礼貌地请他们不要使用您的内容(如果您的内容受版权保护)。
如果是这样,并且他们没有拒绝,那么您可以采取进一步的行动,并给他们发送停止和停止的信。
通常,您为防止抓取而采取的任何措施都可能最终带来负面影响,例如可访问性,漫游器/蜘蛛等。
提供XML API来访问您的数据;以易于使用的方式。如果人们想要您的数据,他们会得到的,您不妨全力以赴。
通过这种方式,您可以有效地提供功能的子集,从而至少确保抓取器不会占用HTTP请求和大量带宽。
然后,您要做的就是说服希望您的数据使用API的人员。;)
生成HTML,CSS和JavaScript。写生成器比解析器容易,因此您可以不同地生成每个服务页面。然后,您将无法再使用缓存或静态内容。