雀魂解锁全角色、皮肤、装扮等,基于 mitmproxy 的中间人攻击方式,支持网页版和客户端 / Steam 端。
同时支持将雀魂的牌局发到 日本麻将助手 mahjong-helper,不支持牌谱分析。
本工具完全免费、开源,如果您为此付费,说明您被骗了!
注意:解锁人物仅在本地有效,别人还是只能看到你原来的角色,发表情也是原来角色的表情。比如使用新角色发第 3 个表情,实际上其他人看到的是原来角色的第 3 个表情。
Caution
魔改千万条,安全第一条。
使用不规范,账号两行泪。
本项目仅供学习参考交流,请使用者于下载 24 小时内自行删除,不得用于商业用途,否则后果自负。
雀魂官方可能会检测并封号,如产生任何后果与作者无关。
使用本项目则表示你已知悉并同意以上条款。
| 频道 | 交流群 |
|---|---|
![]() |
![]() |
可以直接点击图片进入,也可以通过扫码进入。
再次重申:本程序完全免费使用,没有收费功能,请喝咖啡完全自愿,作者非常感谢您!
程序包含三部分:包括 mod 、 helper 和 replace ,可以说是 雀魂 mod_plus 和 mahjong-helper-majsoul-mitmproxy 的融合和升级。
程序默认配置为启用 mod、禁用 helper 和 replace 。如需自定义,请修改 config/settings.yaml 中的 plugin_enable。
- 解锁所有角色与皮肤
- 解锁所有装扮
- 解锁所有语音(报菜名)
- 解锁所有称号
- 解锁所有加载 CG
- 解锁所有表情(不推荐开启)
- 强制启用便捷提示
- 由于雀魂本身代码限制,王座无法正常启用便捷提示,因此,开启此功能后进入王座对局,左上角会变成 “玉之间”。请注意,这不是 BUG!
- 支持星标角色
- 自定义名称
- 显示玩家所在服务器
- 显示主播 / Pro 标识
- 地铁模式
- TODO……
- 将对局发送到 mahjong-helper(雀魂小助手)
- 替换游戏资源文件,仅支持网页版。
- 启动程序
- 方式 1(懒人模式):在 Releases 里下载,解压后直接运行
run.exe(Windows 限定) - 方式 2(源码运行):在
Python>=3.10环境下,打开命令行(PowerShell / 终端)# 下载源码 git clone https://github.com/Avenshy/MajsoulMax.git # 安装依赖 pip install -r requirements.txt # 安装依赖(国内清华源,如果上面那个太慢可以换这个) pip install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple # 启动程序 mitmdump -p 23410 -s addons.py
- 方式 1(懒人模式):在 Releases 里下载,解压后直接运行
- 关闭程序(
Ctrl+C),修改配置,可自行根据程序提示和自身需求修改 - 再次启动程序
- 启动游戏,分为网页版和客户端 / Steam 端。需要确保雀魂相关流量会经过本地
python代理(默认监听127.0.0.1:23410),具体示例见下文 “代理与分流” 一节。- 网页版:通常只需让浏览器通过系统代理或规则分流使用
python的代理节点,无需开启TUN/ 增强模式。 - 客户端 / Steam 端:同样通过
Clash/Surge将进程流量分流到python的代理节点,但需要在代理软件中开启TUN/ 增强模式,否则本地进程流量不会被劫持。
- 网页版:通常只需让浏览器通过系统代理或规则分流使用
- 登录游戏开始享受
MajsoulMax 默认在本地 127.0.0.1:23410 启动一个 HTTPS 代理(基于 mitmproxy)。推荐使用支持规则分流和覆写的代理软件(如 Mihomo 系的 Clash Party 或 Clash Verge / Surge),将雀魂相关流量导向该端口,并使用复合规则给 Python 进程做直连以避免回环。
在配置分流规则前,请先在系统中导入并信任 ~/.mitmproxy/ 下的 mitmproxy-ca-cert.cer 证书。这个证书是本地自动生成的,非常安全。否则 HTTPS 流量可能会因为证书校验失败而无法正常工作。
- 开启文件资源管理器(按下
Windows 键 + E) - 在上方地址栏输入
%homepath%\.mitmproxy(mitmproxy 的默认证书存储路径)然后按 Enter - 找到名为
mitmproxy-ca-cert.cer的证书文件 - 双击该证书文件
- 点选
安装证书按钮 - 若出现选项,请选
本地计算机,然后点选下一步 - 选择
将所有证书放入下列存储,然后点浏览... - 选择
受信任的根证书颁发机构,按下确定,再点选下一步与完成 - 若系统要求权限,请点选是
- 打开 Finder
- 按下
Command + Shift + G打开前往文件夹对话框,输入~/.mitmproxy然后按 Enter - 找到名为
mitmproxy-ca-cert.cer的证书文件 - 双击该证书文件,进入钥匙串访问
- 点选左边的
系统钥匙串下的系统标签,右上角搜索mitmproxy,找到导入的证书,此时是未信任状态 - 右键名为
mitmproxy的证书项,选择显示简介,在弹出的窗口中展开信任 - 对于
使用此证书时,改为始终信任 - 关闭窗口,在弹出的认证框中完成认证即可。
若你通过分离部署的形式将本项目改为了代理节点,则可以在 iOS / iPadOS 上使用,但此时仍需在对应设备上完成证书信任。
- 首先将电脑上的
mitmproxy-ca-cert.cer证书通过隔空传送或者其他方式发送到 iPhone/iPad 上,最好是隔空投送,可以自动完成导入。对于其他方式,须先保存到文件中,然后再在文件中点开该证书文件。 - 进入
设置-已下载描述文件,点击安装 - 前往
通用-关于本机-证书信任设置,打开 mitmproxy 的选项
无测试环境,可自行搜索。
Caution
本地客户端 / Steam 端等进程需要在代理软件中开启 TUN / 增强模式,才能保证进程流量经过 python 启动的代理节点;但请务必注意避免回环代理,即你要保证从 python 发出的流量不会被分流回自身。
网页版(浏览器)一般只要正确配置系统代理或域名规则即可,通常不需要开启增强模式。
以本地节点 MajsoulMax(HTTPS 127.0.0.1:23410)为例,规则中需要让 Python 进程直连,再把游戏 / 网页流量分流到该节点:
proxies:
- name: MajsoulMax
type: http
server: 127.0.0.1
port: 23410
tls: true
proxy-groups:
- name: 🀄 雀魂麻将
type: select
proxies:
- MajsoulMax
- DIRECT
rules:
# 避免回环
- AND, ((OR, ((PROCESS-NAME-REGEX, python.*?),(PROCESS-NAME, MajsoulMax.exe))), (OR, ((PROCESS-NAME,Jantama_MahjongSoul.exe),(PROCESS-NAME,雀魂麻將.exe),(DOMAIN-KEYWORD, majsoul), (DOMAIN-KEYWORD, maj-soul), (DOMAIN-KEYWORD, mahjongsoul), (DOMAIN-KEYWORD, catmjstudio)))), DIRECT
# 客户端 / Steam
- PROCESS-NAME,Jantama_MahjongSoul.exe,🀄 雀魂麻将
- PROCESS-NAME,雀魂麻將.exe,🀄 雀魂麻将
# 网页版
- DOMAIN-KEYWORD,majsoul,🀄 雀魂麻将
- DOMAIN-KEYWORD,maj-soul,🀄 雀魂麻将
- DOMAIN-KEYWORD,mahjongsoul,🀄 雀魂麻将
- DOMAIN-KEYWORD,catmjstudio,🀄 雀魂麻将在 Surge 中可写成:
[Proxy]
MajsoulMax = https, 127.0.0.1, 23410
[Proxy Group]
🀄 雀魂麻将 = select, MajsoulMax, DIRECT
[Rule]
# 避免回环代理
AND, ((PROCESS-NAME, python*), (OR, ((DOMAIN-KEYWORD, majsoul), (DOMAIN-KEYWORD, maj-soul), (DOMAIN-KEYWORD, mahjongsoul), (DOMAIN-KEYWORD, catmjstudio)))), DIRECT
# 客户端 / Steam
PROCESS-NAME,雀魂麻將,🀄 雀魂麻将
# 网页版
DOMAIN-KEYWORD,majsoul,🀄 雀魂麻将
DOMAIN-KEYWORD,maj-soul,🀄 雀魂麻将
DOMAIN-KEYWORD,mahjongsoul,🀄 雀魂麻将
DOMAIN-KEYWORD,catmjstudio,🀄 雀魂麻将
参考 官方文档,可以按照如下方法进行配置。
在 “订阅” 页面右键 全局扩展脚本,选择 “编辑文件”:
function main(config) {
config.proxies.push({
name: 'MajsoulMax',
type: 'http',
server: '127.0.0.1',
port: 23410,
tls: true,
});
config['proxy-groups'].push({
name: '🀄 雀魂麻将',
type: 'select',
proxies: ['DIRECT', 'MajsoulMax'],
icon: 'https://www.maj-soul.com/homepage/img/logotaiwan.png',
});
const bypass = [
'AND, ((OR, ((PROCESS-NAME-REGEX, python.*?),(PROCESS-NAME, MajsoulMax.exe))), (OR, ((PROCESS-NAME,Jantama_MahjongSoul.exe),(PROCESS-NAME,雀魂麻將.exe),(DOMAIN-KEYWORD, majsoul), (DOMAIN-KEYWORD, maj-soul), (DOMAIN-KEYWORD, mahjongsoul), (DOMAIN-KEYWORD, catmjstudio)))), DIRECT',
];
const clientRules = ['PROCESS-NAME,Jantama_MahjongSoul.exe,🀄 雀魂麻将', 'PROCESS-NAME,雀魂麻將.exe,🀄 雀魂麻将'];
const webRules = [
'DOMAIN-KEYWORD,majsoul,🀄 雀魂麻将',
'DOMAIN-KEYWORD,maj-soul,🀄 雀魂麻将',
'DOMAIN-KEYWORD,mahjongsoul,🀄 雀魂麻将',
'DOMAIN-KEYWORD,catmjstudio,🀄 雀魂麻将',
];
config.rules.unshift(...bypass, ...clientRules, ...webRules);
return config;
}参考 官方文档,可以按照如下方式进行配置。
在 Clash Party 左侧 覆写 页面点击 + 号,选择 新建 YAML,然后复制如下内容,点击 确认 保存,然后点击对应覆写卡片右上角的 ... 图标,选择 编辑信息 - 全局启用。
# https://mihomo.party/docs/guide/override/yaml
+proxies:
- name: MajsoulMax
type: http
server: 127.0.0.1
port: 23410
tls: true
+proxy-groups:
- name: 🀄 雀魂麻将
proxies:
- MajsoulMax
- DIRECT
type: select
+rules:
- AND, ((OR, ((PROCESS-NAME-REGEX, python.*?),(PROCESS-NAME, MajsoulMax.exe))), (OR, ((PROCESS-NAME,Jantama_MahjongSoul.exe),(PROCESS-NAME,雀魂麻將.exe),(DOMAIN-KEYWORD,majsoul),(DOMAIN-KEYWORD,maj-soul),(DOMAIN-KEYWORD,mahjongsoul),(DOMAIN-KEYWORD,catmjstudio)))), DIRECT
- PROCESS-NAME,Jantama_MahjongSoul.exe,🀄 雀魂麻将
- PROCESS-NAME,雀魂麻將.exe,🀄 雀魂麻将
- DOMAIN-KEYWORD,majsoul,🀄 雀魂麻将
- DOMAIN-KEYWORD,maj-soul,🀄 雀魂麻将
- DOMAIN-KEYWORD,mahjongsoul,🀄 雀魂麻将
- DOMAIN-KEYWORD,catmjstudio,🀄 雀魂麻将这是主程序配置文件,用于存储插件配置和liqi依赖的更新信息。
# 插件配置,true为开启,false为关闭
plugin_enable:
mod: true # mod用于解锁全部角色、皮肤、装扮等
helper: false # helper用于将对局发送至雀魂小助手,不使用小助手请勿开启
replace: false # replace用于替换雀魂的游戏内容
# liqi用于解析雀魂消息
liqi:
auto_update: true # 是否自动更新
github_token: '' # 仅供自己使用,请勿泄漏给任何人
liqi_version: 'v0.11.210.w' # 本地liqi文件版本
liqi_hash: 'bda101be45d295fb525efd3c20124fa90cb39dd6fd2eca0aeb6e1dd086b6b622' # 本地liqi文件hash这是mod的配置文件,大多数功能直接在游戏中设定即可,只有小部分无法在游戏中设定的,才在此处修改。
修改完成后需要重新启动MajsoulMax。
只有在启用mod插件后,才会生成该配置文件。
# 需要自定义的配置主要集中在这里,大多数无需修改,在游戏内设置即可更新
config:
character: 200001 # 当前看板娘
characters: {} # 各角色使用的皮肤
nickname: '' # 自定义你的名字
star_chars: [] # 星标角色
bianjietishi: false # 强制启用便捷提示,用于部分场没有宝牌指示、和牌指示等
title: 0 # 当前使用的称号
loading_image: [] # 加载CG
emoji: false # 不建议开启,用于解锁角色全部emoji,如果你本身角色没有额外表情,在对局中却发送额外表情,这种行为相当于自爆卡车
views: # 各装扮页的装扮
0: []
1: []
2: []
3: []
4: []
5: []
6: []
7: []
8: []
9: []
views_index: 0 # 正在使用的装扮页
show_server: true # 显示其他玩家所在服务器
verified: 0 # 标识设置,0为无标识,1为主播标识,2为Pro标识,显示在名字后面
anti_replace_nickname: true # 禁止将外服玩家设为默认名称,特殊时期必备
random_character: # 对局随机角色皮肤
enabled: false
pool: []
# 资源文件lqc.lqbin的配置
resource:
auto_update: true # 自动更新lqc.lqbin
lqc_lqbin_version: 'v0.11.104.w' # lqc.lqbin文件版本
# 下面是游戏的资源文件内容,包括需要获得的角色、物品等,不需要修改,除非你要自定义
mod: {}这是helper的配置文件,若未更改过小助手的地址则无需手动修改。
修改完成后需要重新启动MajsoulMax。
只有在启用helper插件后,才会生成该配置文件。
config:
api_url: https://localhost:12121/ # 小助手的地址这是replace的配置文件,用于存储需要进行替换的游戏文件地址,仅支持网页版,建议在替换前清除浏览器缓存,或在游戏页面使用 Ctrl+F5 刷新网页。
修改完成后需要重新启动MajsoulMax。
只有在启用replace插件后,才会生成该配置文件。
config:
http: []
lq: []Example
例如,我需要替换如下3个文件,用于替换柚的足见独白动态皮肤:
https://game.maj-soul.com/1/v0.11.155.w/lang/base/extendRes/charactor/you_BL/spine/spine.skel.txthttps://game.maj-soul.com/1/v0.11.155.w/lang/base/extendRes/charactor/you_BL/spine/spine.atlas.txthttps://game.maj-soul.com/1/v0.11.155.w/lang/base/extendRes/charactor/you_BL/spine/you_bl.png
可以直接在配置文件中填入这三个文件名:
config:
http:
- /spine.skel.txt
- /spine.atlas.txt
- /you_bl.png
lq: []并将这三个用于替换的文件,放入 MajsoulMax/replace 文件夹下即可。
但在这里会遇到一个问题,如果需要同时替换其他动态皮肤,这些动态皮肤同样也会使用 spine.skel.txt 和 spine.atlas.txt 文件,该如何避免冲突呢?
另外,我也希望在玩其他语言服务器时,同样也能将皮肤给替换掉。拿第一个文件 spine.skel.txt 来说,我们观察到不同服务器的地址虽然不同,但仍然有相同之处:
- CN:
https://game.maj-soul.com/1/v0.11.155.w/lang/base/extendRes/charactor/you_BL/spine/spine.skel.txt - EN:
https://mahjongsoul.game.yo-star.com/v0.11.155.w/en/extendRes/charactor/you_BL/spine/spine.skel.txt - JP:
https://game.mahjongsoul.com/v0.11.155.w/jp/extendRes/charactor/you_BL/spine/spine.skel.txt
根据这些地址可以看出,末尾的 charactor/you_BL/spine/spine.skel.txt 这一段是相同的,因此在配置文件中可以据此进行填入:
config:
http:
- /charactor/you_BL/spine/spine.skel.txt
- /charactor/you_BL/spine/spine.atlas.txt
- /charactor/you_BL/spine/you_bl.png
lq: []而文件则需要根据配置文件进行放置,此时文件树如下:
MajsoulMax
├─ config
├─ plugin
├─ proto
├─ ...
└─ replace
└─ charactor
└─ you_BL
└─ spine
├─ spine.skel.txt
├─ spine.atlas.txt
└─ you_bl.png
最终效果如图所示:
-
为什么要自动更新 liqi 和 lqc.lqbin?更新失败有什么影响?
- liqi:
- 共有 3 个文件,包括
liqi.json和根据其生成的liqi.proto和liqi.pb2.py,用于解析雀魂 protobuf 消息 - 如果更新失败,会导致部分消息无法解析(如更新后新活动的消息)
- 共有 3 个文件,包括
- lqc.lqbin:
- 用于获取全部角色、装扮、物品等游戏资源
- 如果更新失败,会导致无法获取部分资源(如更新后的新角色、物品等)
- 一般情况下,只有在游戏更新后才需要更新这些文件。
- 如果自动更新失败,可以在 AutoLiqi > Releases 下载,并手动替换
./proto文件夹下的同名文件
- liqi:
-
如何同时启用代理?
- 推荐使用支持规则和覆写的代理软件(如
Clash/Surge/Clash Verge),参考上文 “代理与分流” 添加本地节点,再把雀魂规则指向该节点。 - 如果还需要机场 / VPN,可以将
MajsoulMax节点放在游戏规则前,再在其他规则中继续使用原有节点;也可以写成单独覆写,需要玩雀魂时再启用。
- 推荐使用支持规则和覆写的代理软件(如
-
还有其它问题?
- 提出你的 Issue!
- 在上方加入我们的 Telegram 群



