我有一个相当大的音乐网站,有一个很大的艺术家数据库。我一直注意到其他音乐网站在窃取我们网站的数据(我在这里和那里输入假艺人的名字,然后进行谷歌搜索)。

如何防止屏幕刮擦?这可能吗?


当前回答

我假定您已经设置了robots.txt。

正如其他人所提到的,刮刮器可以伪造其活动的几乎每个方面,并且可能很难识别来自坏人的请求。

我会考虑:

建立一个页面/jail.html。 禁止访问robots.txt中的页面(因此尊敬的蜘蛛永远不会访问)。 在你的一个页面上放置一个链接,用CSS隐藏它(display: none)。 记录访问者的IP地址到/jail.html。

这可以帮助您快速识别来自scraper的请求,这些请求公然无视您的robots.txt。

你可能还想让你的/jail.html成为一个完整的网站,它拥有与正常页面相同的标记,但是使用假数据(/jail/album/63ajdka, /jail/track/3aads8等)。这样,在你有机会完全阻止它们之前,糟糕的抓取程序不会被提醒“异常输入”。

其他回答

当然,这是可能的。为了100%的成功,让你的网站离线。

在现实中,你可以做一些事情,让抓取变得更加困难。谷歌进行浏览器检查,以确保您不是一个抓取搜索结果的机器人(尽管这和大多数其他事情一样,可以被欺骗)。

你可以做一些事情,比如在第一次连接到你的网站和随后的点击之间需要几秒钟。我不确定理想的时间是什么,也不知道具体怎么做,但这是另一个想法。

我相信还有其他一些人有更多的经验,但我希望这些想法至少有一定的帮助。

你真的没有什么办法可以完全防止这种情况。刮刮者可以伪造他们的用户代理,使用多个IP地址等,并以正常用户的身份出现。你唯一能做的就是让文本在页面加载时不可用——用图像、flash或JavaScript加载。然而,前两个都是糟糕的想法,如果JavaScript没有为一些常规用户启用,最后一个将是可访问性问题。

如果他们对你的网站进行了猛烈的攻击,并且浏览了你所有的页面,你可以做一些速率限制。

不过还是有希望的。刮刮器依赖于您的网站的数据是一致的格式。如果你能随机分配,它可能会打碎他们的刮刀。比如在每次加载时更改页面元素的ID或类名等。但这需要做很多工作,我不确定是否值得。即便如此,只要有足够的投入,他们可能就能解决这个问题。

与其将机器人列入黑名单,不如将它们列入白名单。如果你不想让你的搜索结果失去前几个引擎,你可以把他们的用户代理字符串列入白名单,这通常是广为人知的。不那么道德的机器人倾向于伪造流行网络浏览器的用户代理字符串。排名靠前的几个搜索引擎应该会为你带来95%以上的流量。

识别机器人本身应该是相当简单的,使用其他帖子建议的技术。

不幸的是,您最好的选择是手动的:寻找您认为指示抓取和禁止其IP地址的流量模式。

既然你谈论的是一个公共网站,那么让网站对搜索引擎友好也会让网站对抓取友好。如果一个搜索引擎可以抓取和刮除你的网站,那么恶意刮除者也可以。这是一条微妙的界线。

将你的内容放在验证码后面意味着机器人将很难访问你的内容。然而,人类会不方便,所以这可能是不可取的。