0.前言
本文仅仅为介绍一个什么都不懂的萌新如何成功连接上一个Grasscutter服务器的教程,至于Grasscutter服务器地址或搭建教程,不在本文讨论范围。
1. 配置原神客户端
目前,Grasscutter对ios比较友好,国服客户端就可以。pc则需要切换到国际服务器,安卓比较困难,需要root什么的。故不编写安卓教程,有需求的同学可以自行研究。
以下是pc教程,ios用户可以直接跳到第2步
1.1 安装原神PLUS启动器
打开 github.com/DawnFz/Genshin.Launcher.Plus
根据readme.md的指引下载启动器
1.2 下载pkg转换文件
前往Plugins/Genshin.Launcher.Plus.SE.Plugin - Snap Genshin 资源中心,下载 GlobalFile.pkg
下载完成后将 GlobalFile.pkg
移到启动器目录下,注意需要与启动器exe
放在同级目录,如下图
1.3 执行客户端转换
1.4 检验本阶段成果
确保启动器显示为 国际服务器
,点击开始游戏
出现 hoyoverse
Logo则代表切换国际服成功
2. mitm(中间人劫持)配置
2.1 下载并启动mitm
前往 mitmproxy官网下载
安装完成后,启动mitmproxy,可以看到如下界面
在windows设置里,修改代理为127.0.0.1:8080
浏览器打开mitm.it,显示如下网页表示代理成功
如果显示如下网页,则表示上述步骤中可能有哪里出了错
2.2 安装根证书
打开mitm.it 根据网页指引,下载对应的根证书,用于解密https流量
比如我是windows pc,就下载对应的p12根证书
双击下载好的证书,存储位置选择本地计算机
密码这一步可以直接跳过,
存储这一步需要留意,需要选择受信任的根证书颁发机构,这样才能解密所有https流量。
验证成果:
随便找一个https网站,比如叔叔的bilibili
如果颁发者是mitmproxy,代表根证书已经安装成功了
2.3 启动mitm劫持
开始本步骤之前,记得先关闭之前启动的所有mitm窗口,不然会提示8080端口被占用
在任意目录创建 proxy.py
和 proxy_config.py
proxy_config.py内容:
其中第5行的 example.com
需要替换为你的Grasscutter服务器域名
import os
# This can also be replaced with another IP address.
USE_SSL = True
REMOTE_HOST = "example.com"
REMOTE_PORT = 443
if os.getenv('MITM_REMOTE_HOST') != None:
REMOTE_HOST = os.getenv('MITM_REMOTE_HOST')
if os.getenv('MITM_REMOTE_PORT') != None:
REMOTE_PORT = int(os.getenv('MITM_REMOTE_PORT'))
if os.getenv('MITM_USE_SSL') != None:
USE_SSL = bool(os.getenv('MITM_USE_SSL'))
print('MITM Remote Host: ' + REMOTE_HOST)
print('MITM Remote Port: ' + str(REMOTE_PORT))
print('MITM Use SSL ' + str(USE_SSL))
proxy.py内容:
其中 filter_rules
定义了需要劫持的原神游戏服务器域名,使用正则表达式匹配,将其劫持到我们上面的Grasscutter服务器
import re
from mitmproxy import http
from proxy_config import USE_SSL
from proxy_config import REMOTE_HOST
from proxy_config import REMOTE_PORT
class MlgmXyysd_Genshin_Impact_Proxy:
filter_rules = [
r"(.*?).mihoyo.com",
r"(.*?).hoyoverse.com",
r"^(?!autopatch)(.*?).yuanshen.com"
]
def request(self, flow: http.HTTPFlow) -> None:
# if flow.request.host in self.LIST_DOMAINS:
for rule in self.filter_rules:
if re.search(rule, flow.request.host):
if USE_SSL:
flow.request.scheme = "https"
else:
flow.request.scheme = "http"
flow.request.host = REMOTE_HOST
flow.request.port = REMOTE_PORT
addons = [
MlgmXyysd_Genshin_Impact_Proxy()
]
确保两个py文件放在同一个目录
这时,我们需要一点小技巧来快速打开win10的终端运行mitm
按住键盘上的 Shift
时并点击右键,会出现一个 在此处打开Powershell窗口 的选项
敲入命令
mitmweb -s proxy.py
出现如下图表示运行成功
验证成果:打开任意一个mihoyo的域名,出现如下提示表示劫持成功
3.启动游戏
打开原神,输入账号,密码随便输,点击进入游戏(输入不存在的账号时,服务器会自己创建账号)
正常情况,显示个门
不正常情况1:
显示出一个滑块验证码,那肯定是mitm没有劫持成功(连接到genshin官方服务器登录是要滑块验证码的)。检查一下之前的步骤是不是漏了哪里
不正常情况2:
卡在登录成功后的检查更新中,我也曾经被这个情况困扰很久,最后发现貌似是原神的hk更新服务器被解析到一个198开头的不存在的ip(或许被污染了?),需要修改hosts强制指定到正确的ip,如下所示
211.97.90.13 autopatchhk.yuanshen.com
4. IOS也想玩游戏
如果你完成了pc上 mitm的搭建(也就是第二步mitm的所有配置),你可以让ios设备连接到pc的mitm代理实现ios玩Grasscutter服务器,或者如果你有quanX等也可以使用圈x进行劫持。
4.1 连接mitm代理
wifi设置里找到http代理设置
代理设置为手动,服务器为你的电脑的ip,端口为8080
4.2安装根证书
打开mitm.it,安装ios对应的证书
接着,安装描述文件
最后,设置 - 通用 - 关于本机 - 证书信任
把mitm证书的开关打开
现在,你可以运行ios国服游玩了,如无意外,国服会被直接劫持到国际服,开始享受你的割草机之旅吧~
Comments | NOTHING