网站可以通过哪些方式阻止网络爬虫?您如何确定您的服务器是否正在被机器人访问?
6 回答
- 验证码
- 不到一秒提交的表格
- 隐藏(通过 css)字段获取表单提交期间提交的值
- 频繁的页面访问
简单的机器人不能从 Flash、图像或声音中删除文本。
不幸的是,您的问题类似于人们询问您如何阻止垃圾邮件。没有固定的答案,它不会阻止持续存在的某人/机器人。
但是,这里有一些可以实现的方法:
- 检查用户代理(虽然这可能是欺骗的)
- 使用 robots.txt(适当的机器人会 - 希望尊重这一点)
- 检测访问大量页面的 IP 地址过于一致(每“x”秒)。
- 手动,或在您的系统中创建标志以检查谁都在您的网站上,并阻止刮板采取的某些路线。
- 不要在您的网站上使用标准模板,并创建通用 css 类 - 并且不要在代码中添加 HTML 注释。
您可以使用 robots.txt 阻止注意到它的机器人(但仍然允许通过其他已知实例,例如 google 等) - 但这不会阻止那些忽略它的机器人。您可能能够从您的网络服务器日志中获取用户代理,或者您可以更新您的代码以将其记录在某处。如果您想要阻止特定用户代理访问您的网站,只需返回空/默认屏幕和/或特定服务器代码。
像“不良行为”这样的东西可能会有所帮助:http ://www.bad-behavior.ioerror.us/
从他们的网站:
Bad Behavior 旨在集成到您的基于 PHP 的网站中,尽可能早地运行以在垃圾邮件机器人有机会用垃圾破坏您的网站或什至从您的页面中抓取电子邮件地址和表单之前将其丢弃填写。
不良行为不仅可以阻止对您网站的实际破坏,还可以阻止许多电子邮件地址收集器,从而减少电子邮件垃圾邮件,以及许多自动网站破解工具,有助于提高您网站的安全性。
我认为没有一种方法可以完全满足您的需求,因为在网站爬虫/抓取工具中,您可以在请求页面时编辑所有标题,例如 User-Agent,并且您将无法识别是否存在来自 Mozilla Firefox 的用户或只是一个爬虫/爬虫...
Scraper 在某种程度上依赖于从页面加载到页面加载的标记的一致性。如果您想让他们的生活变得困难,请想出一种方法来提供从请求到请求的更改标记。