Grasscutter是一款二次元游戏的服务端,仅方便想要游玩本地游戏的玩家。
本教程提供一个简单的方法,便于没有编程基础的人也能免费游玩。
准备工作
先简单了解一下什么是grasscutter,也就是割草机。
简述一下,它的工作原理是:
实际上就是抓包拦截了官方游戏的网络请求,然后分析请求和返回值,然后模拟这些请求返回写了一个服务端,通过代理工具转发并接受本地客户端所发送的请求,以实现本地游玩。
你需要准备的东西有:
- 服务端:Grasscutter
- 客户端:对应版本的完整原神客户端
- 一个第三方原神启动器。(如GrassCutter-Tool,GrassClipper,等等)
环境需求
- Java SE – 17 (注: 如果想仅运行服务端, 只下载 jre 即可)
- MongoDB (推荐 4.0+,下载安装即可)
- 代理程序: mitmproxy ( mitmdump;Fiddler Classic 等,一些第三方启动器会内置代理工具。本教程只介绍Fiddler Classic的使用方法)
1.在Window上部署
一.自行构建编译
Grasscutter 使用 Gradle 来处理依赖及编译。
前置依赖:
克隆仓库并编译。
git clone https://github.com/Grasscutters/Grasscutter.git
cd Grasscutter
.\gradlew.bat # 建立开发环境
.\gradlew jar # 编译
完成编译后会出现一些文件,包括一个grasscutter.jar,可以直接双击展开文件目录。
配合一个bat脚本方便打开。
java -jar grasscutter.jar
二.下载已经编译好的grasscutter.jar
第一次运行服务端
在启动服务端之前,还需要下载一个Resources文件,是包含”BinOutput” 和“ ExcelBinOutput“的GC资源文件。可以使用YuukiPS大佬提供的GC资源。
输入以下代码,启动服务端
java -jar .\grasscutter-<version>.jar.jar
<version>填写对应版本号。如:grasscutter-1.4.7.jar
服务端成功运行,如图
如果一切顺利,服务端的安装启动已经完成。
2.客户端使用
安装补丁
在使用服务端之前,客户端需要打补丁,即添加RSA文件到游戏根目录。
一般来说就是下载这个补丁,放在游戏目录,更名为version.dll即可。
如果还是无法进入,那么请把PublicKey.txt文件也放入游戏根目录。
PublicKey.txt:
https://github.com/34736384/RSAPatch<RSAKeyValue><Modulus>xbbx2m1feHyrQ7jP+8mtDF/pyYLrJWKWAdEv3wZrOtjOZzeLGPzsmkcgncgoRhX4dT+1itSMR9j9m0/OwsH2UoF6U32LxCOQWQD1AMgIZjAkJeJvFTrtn8fMQ1701CkbaLTVIjRMlTw8kNXvNA/A9UatoiDmi4TFG6mrxTKZpIcTInvPEpkK2A7Qsp1E4skFK8jmysy7uRhMaYHtPTsBvxP0zn3lhKB3W+HTqpneewXWHjCDfL7Nbby91jbz5EKPZXWLuhXIvR1Cu4tiruorwXJxmXaP1HQZonytECNU/UOzP6GNLdq0eFDE4b04Wjp396551G99YiFP2nqHVJ5OMQ==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>
在MHY更换RSA密钥之前,都是能够正常使用的。
直接使用第三方的启动器
下载第三方原神启动器。(GrassCutter-Tool,GrassClipper,Cultivation)任选其一
目前都使用过,能稳定运行。
使用Cultivation(推荐)
根据官方教程,选择jar和游戏客户端即可。
可以使用中文语言,然后根据提示设定路径,还可以一键下载服务端,对小白友好,而且十分稳定。
GrassCutter-Tool
按照官方提供的教程填入启动项管理的路径,安装证书,点击启动即可。
不过亲测,有时候会出现错误码无法进入游戏或者无法连接到服务端,不知道如何解决。
GrassClipper
接受浏览器接管,填入127.0.0.1,端口留空(默认是443端口),启动私人服务器即可
使用代理软件连接
比如:Fiddler Classic JScript
运行Fiddler Classic,打开“工具”->“选项”->“HTTPS”,勾选“解密HTTPS流量”选项,并在“连接”中将默认端口(Tools -> Options -> Connections)更改为除8888之外的其他端口,比如8181。
然后,在FiddlerScript选项卡中加载该脚本(复制并粘贴),并单击“保存脚本”按钮。
脚本:
import System;
import System.Windows.Forms;
import Fiddler;
import System.Text.RegularExpressions;
class Handlers
{
static function OnBeforeRequest(oS: Session) {
if (oS.host.Equals("overseauspider.yuanshen.com:8888")) {
oS.oRequest.FailSession(404, "Not Found", "Not Found");
}
else if(oS.host.EndsWith(".yuanshen.com") || oS.host.EndsWith(".hoyoverse.com") || oS.host.EndsWith(".mihoyo.com")) {
oS.host = "localhost"; // This can also be replaced with another IP address.
}
}
};
打开游戏后会出现弹窗,说明代理流量成功,全部点击“yes”同意证书即可。
关于IOS
有趣的是,我尝试了使用IOS客户端测试登录自建的Grasscutter服务端,但意料之外出现了报错。
而且再找了许多网上的教程,都不能正常的运行,再折腾下去也是浪费时间,所以想要折腾IOS的建议果断放弃吧。
就目前来说,以上这几种方式都能够代理并进入游戏。
版本更新也只需要更新服务端和客户端即可,方法是不变的。