我有一个相当大的音乐网站,有一个很大的艺术家数据库。我一直注意到其他音乐网站在窃取我们网站的数据(我在这里和那里输入假艺人的名字,然后进行谷歌搜索)。
如何防止屏幕刮擦?这可能吗?
我有一个相当大的音乐网站,有一个很大的艺术家数据库。我一直注意到其他音乐网站在窃取我们网站的数据(我在这里和那里输入假艺人的名字,然后进行谷歌搜索)。
如何防止屏幕刮擦?这可能吗?
当前回答
好吧,正如所有帖子所说,如果你想让它对搜索引擎友好,那么机器人肯定会刮。
但你仍然可以做一些事情,它可能适用于60% - 70%的抓取机器人。
制作如下所示的检查器脚本。
如果一个特定的IP地址访问非常快,那么在几次访问(5-10次)后,将其IP地址+浏览器信息保存在文件或数据库中。
下一步
(这将是一个后台进程,并一直运行或在几分钟后调度。)制作另一个脚本,继续检查那些可疑的IP地址。
案例1。如果用户代理是一个已知的搜索引擎,如谷歌,Bing, Yahoo(你可以通过Google找到更多关于用户代理的信息)。那么你一定会看到http://www.iplists.com/。这个列表,并尝试匹配模式。如果它看起来像一个假的用户代理,那么要求在下次访问时填写验证码。(你需要多研究一下机器人的IP地址。我知道这是可以实现的,也尝试了IP地址的whois。这是有帮助的。)
例2。没有搜索机器人的用户代理:只需在下次访问时要求填写验证码。
其他回答
从技术角度来看: 只需模拟谷歌在一次使用太多查询时的情况。这应该能让很多人停止。
从法律角度看: 听起来你发布的数据并不是私有的。这意味着你发布的名字、数据和其他信息是不受版权保护的。
如果是这种情况,刮刮器通过重新分发您的艺术家姓名等信息并没有侵犯版权。然而,当他们将你的网站加载到内存中时,他们可能侵犯了版权,因为你的网站包含了可版权的元素(如布局等)。
我建议你阅读Facebook诉Power.com的文章,看看Facebook如何阻止屏幕抓取。有很多合法的方法可以阻止别人窃取你的网站。他们可以影响深远,富有想象力。有时法院会相信这些论点。有时他们不会。
但是,假设你发布的是不受版权保护的公共领域信息,比如名字和基本数据……你应该以言论自由和开放数据的名义让它随风而逝。这就是网络的意义所在。
快速解决这个问题的方法是设置一个陷阱。
Make a page that if it's opened a certain amount of times or even opened at all, will collect certain information like the IP and whatnot (you can also consider irregularities or patterns but this page shouldn't have to be opened at all). Make a link to this in your page that is hidden with CSS display:none; or left:-9999px; positon:absolute; try to place it in places that are less unlikely to be ignored like where your content falls under and not your footer as sometimes bots can choose to forget about certain parts of a page. In your robots.txt file set a whole bunch of disallow rules to pages you don't want friendly bots (LOL, like they have happy faces!) to gather information on and set this page as one of them. Now, If a friendly bot comes through it should ignore that page. Right but that still isn't good enough. Make a couple more of these pages or somehow re-route a page to accept differnt names. and then place more disallow rules to these trap pages in your robots.txt file alongside pages you want ignored. Collect the IP of these bots or anyone that enters into these pages, don't ban them but make a function to display noodled text in your content like random numbers, copyright notices, specific text strings, display scary pictures, basically anything to hinder your good content. You can also set links that point to a page which will take forever to load ie. in php you can use the sleep() function. This will fight the crawler back if it has some sort of detection to bypass pages that take way too long to load as some well written bots are set to process X amount of links at a time. If you have made specific text strings/sentences why not go to your favorite search engine and search for them, it might show you where your content is ending up.
无论如何,如果你从战术和创造性的角度思考,这可能是一个很好的起点。最好的办法就是学习机器人是如何工作的。
我还会考虑打乱一些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"
提供一个XML API来访问您的数据;以一种易于使用的方式。如果人们想要你的数据,他们就会得到,你不妨全力以赴。
通过这种方式,您可以以有效的方式提供功能子集,至少确保刮刮器不会消耗HTTP请求和大量带宽。
然后,您所要做的就是说服想要您的数据的人使用API。;)
不幸的是,您最好的选择是手动的:寻找您认为指示抓取和禁止其IP地址的流量模式。
既然你谈论的是一个公共网站,那么让网站对搜索引擎友好也会让网站对抓取友好。如果一个搜索引擎可以抓取和刮除你的网站,那么恶意刮除者也可以。这是一条微妙的界线。
你真的没有什么办法可以完全防止这种情况。刮刮者可以伪造他们的用户代理,使用多个IP地址等,并以正常用户的身份出现。你唯一能做的就是让文本在页面加载时不可用——用图像、flash或JavaScript加载。然而,前两个都是糟糕的想法,如果JavaScript没有为一些常规用户启用,最后一个将是可访问性问题。
如果他们对你的网站进行了猛烈的攻击,并且浏览了你所有的页面,你可以做一些速率限制。
不过还是有希望的。刮刮器依赖于您的网站的数据是一致的格式。如果你能随机分配,它可能会打碎他们的刮刀。比如在每次加载时更改页面元素的ID或类名等。但这需要做很多工作,我不确定是否值得。即便如此,只要有足够的投入,他们可能就能解决这个问题。