商业网站(ASP.NET MVC)的内容经常被竞争对手抓取。这些人是程序员,他们使用复杂的方法来爬行网站,因此不可能通过IP识别他们。不幸的是,不能选择用图像来替换值,因为站点仍然可以被屏幕阅读器(JAWS)读取。
我个人的想法是使用robots.txt:禁止爬虫访问页面上的一个公共网址(这可以伪装成一个正常的项目详细信息链接,但对普通用户隐藏有效网址:http://example.com?itemId=1234禁止:128以下的http://example.com?itemId=123 )。如果IP所有者输入了禁止链接,则会显示验证码验证。普通用户永远不会关注这样的链接,因为它是不可见的,谷歌不需要抓取它,因为它是假的。这样做的问题是,屏幕阅读器仍然会读取链接,我认为这并不是很有效,不值得实现。
发布于 2011-07-06 20:39:51
你的想法可能适用于一些基本的爬虫,但很容易解决。他们只需要使用代理,并在来自新IP的每个链路上执行get。
如果你允许匿名访问你的网站,那么你永远不能完全保护你的数据。即使你花了大量的时间和精力来阻止爬虫,他们也可以让一个人浏览并捕获像fiddler这样的内容。防止你的数据被你的竞争对手看到的最好的方法是不要把它放在你的网站的公共部分。
强制用户登录可能会有所帮助,至少这样你就可以找出谁在爬行你的网站,并禁止他们。
发布于 2011-07-06 21:00:18
如上所述,对有决心的用户隐藏可公开访问的数据是不可能的,但是,由于这些是自动爬虫,您可以通过定期更改页面布局来使它们的工作变得更加困难。
可能可以使用不同的母版页来生成相同(或相似)的布局,并且您可以随机地交换母版页-这将使自动爬虫的编写变得更加困难。
发布于 2011-07-06 20:50:10
我也即将进入保护我的内容不受爬虫攻击的阶段。
我正在考虑限制匿名用户可以看到的网站,并要求他们注册一个完整的功能。
示例:
public ActionResult Index()
{
if(Page.User.Identity.IsAuthorized)
return RedirectToAction("IndexAll");
// show only some poor content
}
[Authorize(Roles="Users")]
public ActionResult IndexAll()
{
// Show everything
}既然你现在了解用户,你就可以惩罚任何爬虫。
https://stackoverflow.com/questions/6596373
复制相似问题