爬虫大全:MJ12bot 商业搜索引擎Majestic Site Explorer爬虫

编辑文章

简介

MJ12botMajestic 用于 构建互联网链接关系图谱(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 来进行最终、权威的身份验证。

交互策略

不屏蔽

  • 您的业务依赖或销售反向链接数据分析服务(例如,使用Majestic数据)。
  • 您希望网站在Majestic的索引中保持最新、完整的链接图谱,以获取准确的竞争对手分析或自身外链档案。
  • 您运营的是公开的、希望被广泛索引的资讯、媒体或商业网站,且服务器资源充足。

可屏蔽

  • 您运营的是资源极度受限的服务器(如小型VPS),且爬虫流量已对关键业务造成可度量的性能冲击。
  • 网站包含大量非公开内容、API接口或管理后台,这些内容不应被任何第三方索引。
  • 您对数据隐私有极高要求,不希望任何形式的链接关系被第三方商业数据库收录。

最佳实践

robots.txt

  • 基础指令有效: MJ12bot完全遵循标准 robots.txt 协议。使用 User-agent: MJ12botDisallow: 指令可有效控制其访问。
  • 利用扩展指令进行精细管理:
    • 使用 Crawl-Delay: [整数] 指令精确控制请求间隔。注意:该爬虫支持的最大延迟为20秒,若设置值超过此限会被自动规整。
    • 支持 Allow 指令覆盖更宽泛的 Disallow 规则(基于更长的路径匹配原则)。
    • 支持使用 *$ 等通配符进行模式匹配(兼容雅虎标准)。
  • 关键警告: 如果您为MJ12bot创建了独立的指令区块,它将完全忽略针对 * (所有爬虫) 的通用区块设置。因此,您必须将 Crawl-Delay 等关键指令在MJ12bot区块中显式地重新声明
  • 确保可访问性: 必须确保 robots.txt 文件本身可被直接访问(返回HTTP 200状态码),且避免在抓取该文件时发生跨域重定向。若返回403(禁止访问)等错误,爬虫会将其解读为“全面禁止抓取”。

SEO优化

  • 关注链接结构而非内容密度: 由于MJ12bot的核心目标是绘制链接图,因此确保网站内部链接结构清晰、可遍历比优化单个页面的内容密度更重要。
  • 区分 nofollowdisallow: 明确认知 rel="nofollow" 仅用于指示不传递权重,而不会阻止MJ12bot抓取目标页面。若需完全禁止抓取,必须在 robots.txt 或使用元标签进行禁止。
  • 无需主动提交Sitemap: Majestic未提供类似Google Search Console的站长工具平台,因此无需、也无法通过官方渠道主动提交Sitemap。其发现路径完全依赖链接遍历。

问题排查

  • 高频问题:“robots.txt禁令为何失效?”
    • 首要检查项: 确认您查看的是生产服务器的实时日志和 robots.txt 文件,而非开发或测试环境。这是最常见的误报原因。
    • 检查日志混淆: 如果单台服务器托管多个域名,请确保访问日志能清晰区分不同域名(例如使用 %v 虚拟主机日志格式),以免误判。
    • 验证文件路径: 确保MJ12bot抓取 robots.txt 时未遭遇跨域重定向。爬虫仅遵循同域内的重定向。
  • 抓取了“不存在”的页面(404/301): 这是预期行为。爬虫拥有持久的“记忆”,会持续追踪已被索引的URL,以区分临时性错误(如服务器短暂宕机)和永久性变更。只要互联网上仍有链接指向这些旧URL,爬虫就可能重新访问它们。
  • 遭遇疑似恶意爬取:
    1. 首先在日志中精确核对User-Agent字符串,排除仿冒
    2. 确认您的 robots.txt 文件是否因配置错误(如返回500错误)而未被成功读取。爬虫在无法读取该文件时,会默认允许抓取。
    3. 若确认是MJ12bot违规,应准备好包含具体网站URL和违规请求日志的证据,通过官方邮箱 bot@majestic12.co.uk 进行报告。