爬虫大全:MJ12bot 商业搜索引擎Majestic Site Explorer爬虫
编辑文章
简介
MJ12bot 是 Majestic 用于 构建互联网链接关系图谱(Web Graph) 的官方网络爬虫。它是一个分布式、社区驱动的专用爬虫,核心任务并非抓取全文内容,而是精准映射网站间的链接结构,以此为其商业搜索引擎Majestic Site Explorer(业界主要的反向链接分析工具之一)提供数据基础。其抓取结果不直接服务于消费者搜索,而是转化为可查询的链接索引,供SEO专业人员和分析师使用。
用户代理
- 标准 User-Agent 字符串:
Mozilla/5.0 (compatible; MJ12bot/v2.0.4; http://mj12bot.com/) - 字符串核心含义:
MJ12bot/v2.0.4: 明确标识爬虫名称及当前版本。v2.x 版本是当前主力版本,较早的 v1.4.x 系列已逐步被淘汰。compatible: 声明与通用浏览器(Mozilla)的兼容性。http://mj12bot.com/: 官方说明页面地址,用于身份溯源。
IP范围
- IP段范围: 无固定、连续、可公布的IP段。MJ12bot采用全球分布式网络进行爬取,其IP地址来源广泛且动态变化,覆盖多个数据中心和潜在的志愿者宽带节点。
- 反向验证方法: 由于无法通过IP段进行可信验证,Majestic提供了唯一的身份标识方案。您可以联系其团队,为您的域名配置一个专属的
CRAWLER-IDENT请求头或定制化的User-Agent字符串。- 验证成功标准: 来自MJ12bot的请求将在HTTP头部携带您预先约定的、唯一的
CRAWLER-IDENT字段值。只有通过比对此自定义标识,才能在生产环境中精确确认爬虫身份。 - 操作建议: 摒弃传统的IP验证逻辑。在日志分析或防火墙规则中,应优先依赖其公开的User-Agent字符串进行初步筛选,并通过检查是否存在预置的
CRAWLER-IDENT来进行最终、权威的身份验证。
- 验证成功标准: 来自MJ12bot的请求将在HTTP头部携带您预先约定的、唯一的
交互策略
不屏蔽
- 您的业务依赖或销售反向链接数据分析服务(例如,使用Majestic数据)。
- 您希望网站在Majestic的索引中保持最新、完整的链接图谱,以获取准确的竞争对手分析或自身外链档案。
- 您运营的是公开的、希望被广泛索引的资讯、媒体或商业网站,且服务器资源充足。
可屏蔽
- 您运营的是资源极度受限的服务器(如小型VPS),且爬虫流量已对关键业务造成可度量的性能冲击。
- 网站包含大量非公开内容、API接口或管理后台,这些内容不应被任何第三方索引。
- 您对数据隐私有极高要求,不希望任何形式的链接关系被第三方商业数据库收录。
最佳实践
robots.txt
- 基础指令有效: MJ12bot完全遵循标准
robots.txt协议。使用User-agent: MJ12bot和Disallow:指令可有效控制其访问。 - 利用扩展指令进行精细管理:
- 使用
Crawl-Delay: [整数]指令精确控制请求间隔。注意:该爬虫支持的最大延迟为20秒,若设置值超过此限会被自动规整。 - 支持
Allow指令覆盖更宽泛的Disallow规则(基于更长的路径匹配原则)。 - 支持使用
*和$等通配符进行模式匹配(兼容雅虎标准)。
- 使用
- 关键警告: 如果您为MJ12bot创建了独立的指令区块,它将完全忽略针对
*(所有爬虫) 的通用区块设置。因此,您必须将Crawl-Delay等关键指令在MJ12bot区块中显式地重新声明。 - 确保可访问性: 必须确保
robots.txt文件本身可被直接访问(返回HTTP 200状态码),且避免在抓取该文件时发生跨域重定向。若返回403(禁止访问)等错误,爬虫会将其解读为“全面禁止抓取”。
SEO优化
- 关注链接结构而非内容密度: 由于MJ12bot的核心目标是绘制链接图,因此确保网站内部链接结构清晰、可遍历比优化单个页面的内容密度更重要。
- 区分
nofollow与disallow: 明确认知rel="nofollow"仅用于指示不传递权重,而不会阻止MJ12bot抓取目标页面。若需完全禁止抓取,必须在robots.txt或使用元标签进行禁止。 - 无需主动提交Sitemap: Majestic未提供类似Google Search Console的站长工具平台,因此无需、也无法通过官方渠道主动提交Sitemap。其发现路径完全依赖链接遍历。
问题排查
- 高频问题:“robots.txt禁令为何失效?”
- 首要检查项: 确认您查看的是生产服务器的实时日志和
robots.txt文件,而非开发或测试环境。这是最常见的误报原因。 - 检查日志混淆: 如果单台服务器托管多个域名,请确保访问日志能清晰区分不同域名(例如使用
%v虚拟主机日志格式),以免误判。 - 验证文件路径: 确保MJ12bot抓取
robots.txt时未遭遇跨域重定向。爬虫仅遵循同域内的重定向。
- 首要检查项: 确认您查看的是生产服务器的实时日志和
- 抓取了“不存在”的页面(404/301): 这是预期行为。爬虫拥有持久的“记忆”,会持续追踪已被索引的URL,以区分临时性错误(如服务器短暂宕机)和永久性变更。只要互联网上仍有链接指向这些旧URL,爬虫就可能重新访问它们。
- 遭遇疑似恶意爬取:
- 首先在日志中精确核对User-Agent字符串,排除仿冒。
- 确认您的
robots.txt文件是否因配置错误(如返回500错误)而未被成功读取。爬虫在无法读取该文件时,会默认允许抓取。 - 若确认是MJ12bot违规,应准备好包含具体网站URL和违规请求日志的证据,通过官方邮箱
bot@majestic12.co.uk进行报告。