文章摘要
这篇文章介绍了一种无需JavaScript即可阻止恶意爬虫的简单方法:在网站设置一个被禁止爬取的路径(如/heck-off/),并在robots.txt中禁止爬取该路径。对于无cookie的访问请求,服务器会返回一个包含隐藏链接和自动刷新元标签的页面。良好爬虫会遵守robots.txt避开该链接,而恶意爬虫可能会跟随链接从而被标记拦截。通过设置特定cookie来区分和验证请求来源。
文章总结
标题:无需JavaScript即可屏蔽LLM爬虫的方法
文章介绍了一种简单有效的屏蔽爬虫技术,该方法无需依赖JavaScript或访客验证,且服务器计算成本低廉。
核心步骤如下:
在网站设置一个"陷阱路径"(如示例中的
/heck-off/),并在robots.txt中禁止爬取该路径。对于无cookie的访问请求,服务器直接返回包含以下内容的页面:
- 隐藏的陷阱链接(带nofollow/noindex标签)
- 自动刷新跳转到验证页面的meta标签
- 设计故意将meta标签放在错误位置,以测试爬虫的解析能力
设置三种处理机制:
- 访问陷阱路径时设置
slop=1cookie - 访问验证页面时设置
validated=1cookie并跳转回原页面 - 其他请求时检查cookie,拦截带有
slop标记的请求
- 访问陷阱路径时设置
注意事项:
- 需要设置
Cache-Control头防止浏览器缓存导致重定向循环 - 可在网站页眉页脚添加陷阱链接增强效果
- 该方法虽非完美,但实际效果良好且不会产生误判
- 需要设置
该方法利用了正规爬虫会遵守robots.txt协议的特性,而劣质爬虫往往会忽略协议的特点,通过cookie标记来识别并拦截不良爬虫。
注:原文中的具体代码示例和脚注链接等细节内容已酌情简化。
评论总结
以下是评论内容的总结:
- 技术实现问题
有用户赞赏网站在旧浏览器中的兼容性,但指出RSS订阅被屏蔽的问题(评论1) 关键引用:"I thought this was cool because it worked even in my old browser" / "我的旧浏览器也能用,这很酷" "But then my feed reader got blocked by the system" / "但我的RSS阅读器被系统屏蔽了"
有用户指出该技术可能误伤正常用户代理(评论2、4) 关键引用:"an agent acting on behalf of a user wouldn't follow robots.txt" / "代表用户的代理不会遵守robots.txt" "I wish blockers would distinguish between crawlers that index, and agentic crawlers" / "希望拦截器能区分索引爬虫和用户代理爬虫"
- 潜在滥用风险
- 多位用户担心该技术可能被恶意利用(评论3、8) 关键引用:"Seems pretty easy to cause problems for other people with this" / "这很容易给别人制造麻烦" "You could put this in an img tag on a forum or similar and cause mischief" / "可以把链接放在论坛图片标签里恶作剧" "This is sort of, but not exactly, a Trap Street" / "这有点像但不完全是陷阱街道"
- 学术诚信担忧
- 有用户表达对LLM用于论文评审的担忧(评论5) 关键引用:"I don't want to submit a paper to journals only for them to use ChatGPT to review it" / "我不想投稿给用ChatGPT审稿的期刊" "it has happened before" / "这种情况以前发生过"
- 技术细节讨论
用户讨论JS禁用与Cookie拦截的关系(评论6) 关键引用:"what the venn diagram of end users who disable Javascript and also block cookies" / "禁用JS和拦截Cookie的用户重叠情况" "the page just infinitely reloads in such cases" / "这种情况下页面会无限重载"
有用户提出区分传统爬虫与LLM爬虫的技术问题(评论7) 关键引用:"how llm crawlers are different than classical crawlers" / "LLM爬虫与传统爬虫有何不同"