
前往我的博客获得更好的 markdown 浏览体验以及更为长期的更新支持:
https://blog.fallenbreath.me/zh-CN/2025/minecraft-service-proxy/
由于众所周知的网络环境,国内连接 Mojang 的官方认证服务时,总容易遇到抽风情况,包括但不限于正版登录时出现“认证服务器宕机”之类的报错。万一遇到 Mojang 使用的微软云被区域性 DNS 污染,那影响范围就更大了

您可能是正版软件的受害者
这里有一些常见的“连不上 Mojang 的官方认证服务”的报错的对应原因可供参考
客户端请求 session 服务失败
翻译键:
可能的中文文案:
身份验证目前正在停机维护。
暂时无法连接到认证服务器,请稍后再试。
暂时无法连接到身份验证服务器,请稍后再试。
可能的英文文案:
The authentication servers are currently down for maintenance.
The authentication servers are currently not reachable. Please try again.
服务端请求 session 服务失败
翻译键:
可能的中文文案:
认证服务器处于宕机状态中。请稍后再试,抱歉!
身份验证服务器目前处于宕机状态。请稍后再试,抱歉!
可能的英文文案:
Authentication servers are down. Please try again later, sorry!
目前常见的,用于解决 Mojang 认证服务器无法访问的方案,有如下几种
借助魔法来访问 Mojang 认证服务器
优势:专业的事情交给专业的工具做,跑起来效果好
缺点:获取 / 搭设魔法存在门槛;服务端不一定支持
使用修改 DNS / host 文件 的方式来加速
优点:无需额外资源设备;操作较为方便;对任意 MC 客户端 / 服务端均生效
缺点:仅能有效解决 DNS 污染问题,无法较好解决网络连接质量不佳的问题;硬编码的 DNS 解析向可能具有时效性
搭设 Mojang 认证服务器的 http 转发服务器,并让 MC 使用这一转发服务器
优点:类似魔法,搭起来效果很好
缺点:搭设转发存在门槛;低版本 MC / 特殊的服务端不一定支持;需信任转发服务器
对于第一种方案,原版 mc 的客户端可以用参数指定 authlib 走 socks,但服务端不支持;至于 velocity bungeecord 这俩代理端,之前我搞过两个 fork,给他们增加了相关魔法能力,若有需要可以参考下:https://github.com/TISUnion/Velocity、https://github.com/Fallen-Breath/BungeeCord
对于第二种方案,可以参考 https://www.bilibili.com/read/cv12264962、 https://www.bilibili.com/read/cv15851058/ 这两篇专栏
对于第三种方案,我以前水过一个相关的动态 https://t.bilibili.com/847528026828701769。同时,这也是下文会提到的方案
麻将服务器列表
先看看有哪些 Mojang 服务是需要转发的
从 1.14 开始统计,原版 MC 里,会使用 authlib 访问如下几个 Mojang 提供的服务
auth,https://authserver.mojang.com,可使用 -Dminecraft.api.auth.host 配置。用于正版登录相关。高版本已不再使用,且此地址也目前也无法访问。不过低版本仍需要把此配置也带上,才能让转发配置生效
account,https://api.mojang.com,可使用 -Dminecraft.api.account.host 配置。用来查询玩家信息等
session,https://sessionserver.mojang.com,可使用 -Dminecraft.api.session.host 配置。正版验证入服必备
services,https://api.minecraftservices.com,可使用 -Dminecraft.api.services.host 配置。聊天举报等东西
下表涵括了上面这些服务随着 MC 版本更新的一些变化

这些服务,相对来说最主要的就是 session 服务了。不过既然搞都搞了,那不如全搞上
为了造福社区,我搭了一套麻将服务的 http 转发服务器,转发了 auth account session services 这四个 Minecraft 会用的 Mojang 服务,分别对应着下面这几个地址
https://auth.msp.fallenbreath.me
https://account.msp.fallenbreath.me
https://session.msp.fallenbreath.me
https://services.msp.fallenbreath.me 若有需要,尽管拿去用
公益服务,尽力而为。合理使用,切勿滥用
食用方式:仅需在启动 MC 的命令行参数里,在 -jar 参数前,加入以下参数即可。无需修改游戏
Minecraft 服务端 / 客户端:
多行版本
-Dminecraft.api.auth.host=https://auth.msp.fallenbreath.me
-Dminecraft.api.account.host=https://account.msp.fallenbreath.me
-Dminecraft.api.session.host=https://session.msp.fallenbreath.me
-Dminecraft.api.services.host=https://services.msp.fallenbreath.me 一行版本(空格分隔)
-Dminecraft.api.auth.host=https://auth.msp.fallenbreath.me -Dminecraft.api.account.host=https://account.msp.fallenbreath.me -Dminecraft.api.session.host=https://session.msp.fallenbreath.me -Dminecraft.api.services.host=https://services.msp.fallenbreath.me 适用于 mc1.16+,也大概率适用于 paper 等非原版端
如果是 1.14 / 1.15 的客户端,把这个 mod 打上应该也能用 https://github.com/Fallen-Breath/AuthlibEnvBackport
Velocity 服务端:
-Dmojang.sessionserver=https://session.msp.fallenbreath.me/session/minecraft/hasJoined
Bungeecord 服务端:
截止今日(2025.8.20,commit 68f4f6bd408fb263841d91907ab819c854c2cf6b),Bungeecord 访问 Mojang 认证服务器时,使用的地址仍是硬编码在代码里的,因此该方案暂时无法兼容

若真想用,得自己改 Bungeecord 代码
如何给 Java 添加参数的操作方式?
这取决于 MC 是怎么启动的了。本文仅简单抛砖引玉一下
如果是开 Minecraft 服务端的话,直接改一下 java 的启动命令即可。只需要在 -jar 前插入要添加的参数,例如:
java -Daaa=bbbb -Dxxxx=yyyy -Xmx2G -jar server.jar
# ^^^^^^^^^^^^^^^^^^^^^^ 这是一行用于指示关键代码段要放在哪里的注释 想必能开 MC 服务器的腐竹们定能找到服务端启动命令在哪+要咋改的
客户端的话,需自行根据所使用的启动器,寻找诸如“JVM 参数”、“Java 参数”什么的配置项,比如:

MMC

HMCL

PCL
作为一个转发服务器,是完全有能力截获并篡改转发并请求明文内容的。若你不信任此服务器,请不要使用这一转发服务器
当然,对我而言,我定然是不会干这些坏事的。转发服务器上处理的各种转发请求,也不会持久化于于服务器的日志/文件里,确保数据安全不泄密
至于这套转发服务是怎么实现+部署起来的,目前相关代码还比较乱,还不适合开源发出来。不过,这也就是个 http 转发而已,并没有太多特别的。下次一定!(饼 +1)