某款知名二次元游戏私服搭建过程过程--Grasscutter
一、项目介绍
1. Grasscutter介绍:
众所周知,原神在进入2.6版本后,因为一些不可抗力因素陷入了延迟更新,全球玩家完成版本任务之后就陷入了长久的长草项目,在这种情况写,一款名为Grasscutter的除草项目上线,此项目在不需要修改客户端数据的情况下,通过通信拦截(中间人攻击MITM)的方式仿照官方服务建立第三方私服接管其数据,本文章尽可能的为大家提供和介绍此项目的构建搭建方式。值得注意的是:本文章参考已有资料进行构建,用途仅限于学习相关技术,不允许私自搭建多人私服,更不允许通过此开源技术以任何借口的方式盈利,本文章仅仅整理和发表自己经验,不对其中的软件,系统,文件做任何的责任保证,知识无价,请遵守当地相关法律法规,遵守开源精神道德。
2. MITM介绍
MITM 即中间人攻击(Man-in-the-middle attack)。用于中间人攻击的代理首先会向正常的代理一样转发请求,保障服务端与客户端的通信,其次,会适时的查看、记录其截获的数据,或篡改数据,引发服务端或客户端特定的行为。
二、通用准备工作
安装基础环境
项目要求环境必须有且不低于JDK17
,MongoDB 4.0+
,Python3.10
,服务端相关程序的安装请参考下面具体的安装过程
如果选择自编译的话,客户端环境必须保证有JDK17
,Java
安装教程不在赘述,使用本站提供的软件下一步下一步即可
如果github
的文件下载不下来,文末有国内加速下载地址
编译服务端文件
获取服务端源代码,如果电脑存在git
,那么直接执行下面的命令即可获取到响应的分支,否则就需要直接访问https
链接手动下载,我使用DEV
开发分支,开发分支可能BUG
较多,但是可以体验到最新更新,关于未安装git
的下载方法请参考下方图片
# 稳定分支
git clone https://github.com/Grasscutters/Grasscutter
# 开发分支
git clone -b development https://github.com/Grasscutters/Grasscutter
在获取到源码之后,我们进入到源码目录,使用链接下载的会是一个压缩包,那我们将其解压后打开
进入到目录之后我们在空的地方,右击菜单,在终端中打开。win10
用户需要按住键盘Shift
按键右击,选择再此使用命令提示行
编译:在写这篇文章的时候,博主在家用电脑和服务器上均编译失败,提示JavaDoc
错误,此时时间是2022年5月20日
,此源码可能有编译BUG,所以你如果也遇到这个问题,可以使用我以前编译好的Dev1.1.2
版本,或者加入相关TG群留意~~~
# Windows
.\gradlew.bat
.\gradlew jar
# Linux
cd Grasscutter
chmod +x gradlew
./gradlew jar
补全文件:编译结束之后,当前文件夹中会多一个以Jar
结尾的包,此包就是服务端,为了方便,我们单独新建一个文件夹 Grasscutter
,以下补全操作均在我们新建的文件夹当中。再次打开上面提供的仓库链接,选择dev-world-script
分支,下载资源包。
下载之后解压,将里面的Keys
, Data
, Keystore.p12
文件和文件夹复制到我们新建的文件夹 Grasscutter
中
获取resource
资源,没有git
就直接访问https
链接下载
# 有git就直接在创建的文件夹下执行
git clone https://github.com/Koko-boya/Grasscutter_Resources.git resources
# 没有git的访问
https://github.com/Koko-boya/Grasscutter_Resources.git
下载之后解压重命名为resource
(全小写)放在我们新建的文件夹 Grasscutter
当中
至此,服务端程序准备结束,你的目录结构应该为:
Grasscutter
├── data
├── keys
├── keystore.p12
├── grasscutter.jar
└── resources
├── BinOutput
├── proto
├── ExcelBinOutput
├── Readable
├── Subtitle
└── TextMap
如果以上的文件下载失败,文末有我提供的完整文件
三、系统搭建过程
MongoDB
数据库
前往MongoDB官网,在右侧下载 5.X版本的MongoDB
,推荐使用msi
方式安装
JDK 17
- 如果你是用我提供的
Order JDK 17
,那么就不需要任何配置 如果你使用
OpenJDK 17
,那么:- 前往 Java 官网,下载 zip 文件,解压到一个平时不会动的位置(比如
C:\Program Files\Java
) - 右键
计算机
->属性
->高级系统设置
->高级
->环境变量
- 点击
系统变量
中的新建
,建立一个名为JAVA_HOME
的变量,并设置为解压的路径,比如C:\Program Files\Java\jdk-17.0.2
- 在
系统变量
中找到Path
,点击编辑
,在弹出的窗口中添加$JAVA_HOME\bin
` win徽标+R
输入cmd
进入DOS
窗口,输入java -version
回车后,输出类似openjdk version "17.0.3" 2022-04-19
的内容则表示安装成功
- 前往 Java 官网,下载 zip 文件,解压到一个平时不会动的位置(比如
mitmproxy
代理
python 3
前往 Python 官网,在 Stable Releases 中下载 Windows Installer (64-bit)
下载打开后下一步下一步
在进行安装时,请一定确保 Add Python 3.x.x to PATH
复选框已经勾选
安装完成后,打开cmd
窗口输入python -v
有输出类似 Python 3.10.4
的内容则表示安装成功
mitmproxy 本体
前往 mitmproxy 官网,下载 Windows Installer 并安装
运行服务器
打开我们刚才创建的 Grasscutter
文件夹, 将上方地址栏中的内容改为 cmd
,回车即可在当前目录打开命令提示符
在确保 MongoDB
在正常运行的情况下,输入 run.bat
即可启动服务端
然后运行 proxy.bat
,启动 mitmproxy
代理
如果输入提示如下图所示的问题,那么就需要下载我提供的bat
脚本文件放入其中,此文件的下载方式文末有!
没有问题的同学们,运行之后的样子如下图所示:
注意哈:右边22102端口显示的是服务器核心启动成功,如果你们是英语版的,只要看右边不出现红色的ERROR
,然后输出一句带有22102
端口英语就行。然后左边是代理的启动框,这个你们在使用原版的时候,那个http
默认端口是54321
吧好像
需要注意的是,如果你搭建的云服务器上,那么请注意443端口是否被占用,如果被占用则需要在config.json
文件当中修改,修改之后也必须在proxy.bat
文件当中修改为一样的,此端口设置失败将导致4206
错误,或者直接连接不上!
部署在云服务器上,拥有公网ip,想和小伙伴们一起玩的话看这一步,如果你是本地的话请略过,我们需要修改config.json
文件当中的配置,如果你没有这个文件,请运行一次run.bat
,自动生成!
将文件当中两个accessADDress
选项后面的ip换成你自己服务器的公网ip即可,值得注意的是,第一个更换项下面就是上面那一步中,如果443冲突,则需要修改的地方,此文件也可以配置启动游戏后的一些欢迎语等,具体操作请看配置文件详解
部分
同时需要主意:云服务器上系统不仅要放出8080 54321 443 22102(UDP)端口,还需要在云服务器提供厂商的安全组同步放行,如果你不会,则放行全部
TCP,UDP
端口即可但是此操作有风险,切记~~
常见问题以及配置文件解读
更为详细的配置文件解读以及我放在了另一篇文章里,TMD整理吐血了~~~~
四、客户端登录
1. windows下
两种代理方式,Fiddler与系统自带,区别在于系统自带为全局代理,简单方便,但是代理启动期间,其他网页无法访问.Fiddler方式需要配置,较为麻烦,但是一次配置之后,接下来就不需要再动了
系统代理
win11系统用户右击任务栏右边网络图标,打开网络和Internet设置
进入到网络配置,选择下方的代理
按钮,配置方式如下图,本地服务器输入127.0.0.1
,端口号为proxy.bat
运行后显示的http
端口,服务器就填写公网ip即可
开启代理后,打开任意浏览器,输入mitm.it
下载证书,如果显示的一串黑色英语字符就是错误的,如下图:,正确为:
选择你对应的系统,点击绿色长条按钮下载证书,之后安装,安装证书步骤为
- 安装时点击下一步直到
证书存储
页面。将所有的证书都放入下列存储
浏览并选择受信任的根证书颁发机构
- 其余步骤直接默认点击
下一步
即可
2. IOS与安卓下
五、文章内软件资料下载方法
[scode type="blue"]解压密码: 7yog.cn[/scode]
- 通用下载方式
度盘下载,提取码7777 - 关注我的公众号,号码内回复【除草机】即可获取所需工具,扫描下方二维码即可!
六、参考资料
站在巨人的肩膀上吸收知识,感谢各位前辈的资料文献,如果不详细,欢迎补充
2022年07月09日 22:33
感谢分享