保护网站内容免受抓取工具的侵害

时间:2011-07-06 12:29:54

标签: asp.net-mvc security web-crawler

竞争对手定期抓取商业网站(ASP.NET MVC)的内容。这些人是程序员,他们使用复杂的方法来抓取网站,因此无法通过IP识别它们。 不幸的是,用图像替换值不是一种选择,因为屏幕阅读器(JAWS)仍然可以保持网站的可读性。

我个人的想法是使用robots.txt:禁止抓取工具访问网页上的一个公共网址(这可能伪装成普通的项目详细信息链接,但对普通用户隐藏有效网址:http://example.com?itemId=1234禁止:{ {3}}在128)之下。如果IP所有者进入禁止链接,则显示CAPTCHA验证。 普通用户永远不会关注这样的链接,因为它不可见,谷歌不必抓取它,因为它是虚假的。这个问题是屏幕阅读器仍然读取链接,我认为这不值得实施。

3 个答案:

答案 0 :(得分:2)

你的想法可能适用于一些基本的爬虫,但是很容易解决。他们只需要使用代理并从新IP获取每个链接。

如果您允许匿名访问您的网站,那么您永远无法完全保护您的数据。即使你设法阻止抓取工具有很多时间和精力,他们也可以让人来浏览和捕获像fiddler这样的内容。防止竞争对手看到您的数据的最佳方法是不将其置于您网站的公共部分。

强制用户登录可能会有所帮助,至少那时您可以选择抓取您网站的人并禁止他们。

答案 1 :(得分:0)

我即将进入保护我的内容免受抓取工具的阶段。

我正在考虑限制匿名用户可以看到的网站,并要求他们注册完整的功能。

示例:

public ActionResult Index()
{
    if(Page.User.Identity.IsAuthorized)
        return RedirectToAction("IndexAll");

    // show only some poor content
}

[Authorize(Roles="Users")]
public ActionResult IndexAll()
{
    // Show everything
}

由于您现在了解用户,因此可以惩罚任何抓取工具。

答案 2 :(得分:0)

如上所述,它不可能隐藏来自确定用户的可公开访问的数据,但是,由于这些是自动抓取工具,您可以通过定期更改页面布局来使他们的生活更加艰难。

可能使用不同的母版页来生成相同(或类似)的布局,并且您可以随机交换母版页 - 这会使编写自动爬虫更加困难。 / p>