由于 Google 的限制和一些其他原因,在 Android 上游玩原神私服并没有 iOS、Windows 这么容易


准备材料

  • 一台能读写 /system 分区的 Android 手机(或:一台安装了 Magisk 的 Android 手机) 有人搞出来免root端了,此条件不再必须
  • 私服客户端 v2.6 或者 v2.7
  • 一台私服服务器
  • Grasscutter
  • mitmproxy
  • Wi-Fi

教程

先把 Grasscutter 配置好,不同系统配置方法不一样,基本概括为以下几点

搭建Grasscutter可以去看 BLxcwg666 的教程

安装好 Gresscutter 之后,服务器随便找个地方新建个 proxy.py,放下面的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
##
#
# Copyright (C) 2002-2022 MlgmXyysd All Rights Reserved.
#
##

##
#
# Genshin Impact script for mitmproxy
#
# https://github.com/MlgmXyysd/
#
# *Original fiddler script from https://github.lunatic.moe/fiddlerscript
#
# Environment requirement:
# - mitmdump from mitmproxy
#
# @author MlgmXyysd
# @version 1.1
#
##

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:

LIST_DOMAINS = [
"api-os-takumi.mihoyo.com",
"hk4e-api-os-static.mihoyo.com",
"hk4e-sdk-os.mihoyo.com",
"dispatchosglobal.yuanshen.com",
"osusadispatch.yuanshen.com",
"account.mihoyo.com",
"log-upload-os.mihoyo.com",
"dispatchcntest.yuanshen.com",
"devlog-upload.mihoyo.com",
"webstatic.mihoyo.com",
"log-upload.mihoyo.com",
"hk4e-sdk.mihoyo.com",
"api-beta-sdk.mihoyo.com",
"api-beta-sdk-os.mihoyo.com",
"cnbeta01dispatch.yuanshen.com",
"dispatchcnglobal.yuanshen.com",
"cnbeta02dispatch.yuanshen.com",
"sdk-os-static.mihoyo.com",
"webstatic-sea.mihoyo.com",
"webstatic-sea.hoyoverse.com",
"hk4e-sdk-os-static.hoyoverse.com",
"sdk-os-static.hoyoverse.com",
"api-account-os.hoyoverse.com",
"hk4e-sdk-os.hoyoverse.com",
"overseauspider.yuanshen.com",
"gameapi-account.mihoyo.com",
"minor-api.mihoyo.com",
"public-data-api.mihoyo.com",
"uspider.yuanshen.com",
"sdk-static.mihoyo.com",
"abtest-api-data-sg.hoyoverse.com",
"log-upload-os.hoyoverse.com"
]

def request(self, flow: http.HTTPFlow) -> None:
if flow.request.host in self.LIST_DOMAINS:
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()
]

CA 安装

然后把 mitmproxy 的证书安装到手机里
自带的证书是用户目录下的 .mitmproxy 里面的 mitmproxy-ca-cert.cer

手机插数据线到电脑,或者用传输工具,把 mitmproxy-ca-cert.cer 拷贝到手机的存储里( /sdcard)
然后进入手机上的 设置 > 安全性和隐私 > 加密与凭据 > 安装证书 > CA 证书(不同手机可能设置方法略有差异,可以尝试在设置内搜索 CA,或者百度一下)安装你刚刚传进去的 mitmproxy-ca-cert.cer

mitmproxy

然后进入 mitmproxy 安装目录,执行:

1
mitmweb -s proxy.py --ssl-insecure --set block_global=false --listen-port 1145 --certs "Genshin Impact.pem"

注意:

  • proxy.py 替换为上面你保存的 proxy.py 的路径
  • 监听端口随意 1-65535,选择一个不冲突的端口,如果冲突了后面可能会报错 WinError,不建议:7890 8080,容易被扫描到,记下这个端口
  • 后面可以用 –certs 引入自己的证书,不需要引入自己的证书可以直接删除该参数

如果是自己的证书,CA 请使用 v3 版本(OpenSSL 默认 v1),私钥请选择 RSA 2048,如果证书开头是 -----BEGIN RSA PRIVATE KEY-----,改成-----BEGIN PRIVATE KEY

证书移动至 SYSTEM TRUST

如果使用上面提供的修改版客户端,就不需要执行这个步骤了(如果有问题,你还是可以试试执行下这个步骤

需要使用 Magisk

Magisk 刷入 https://github.com/Magisk-Modules-Repo/movecert 模块,重启
如果无法刷入,尝试使用兼容模式刷入

Magisk 是啥?
root 手机用的,还有很多其他功能
需要解锁 Bootloader 才能安装 Magisk,Magisk 不同设备安装方法不同,网上搜一下吧

代理配置

进入你手机的 Wi-Fi 配置界面,点开你 Wi-Fi 的详细信息(,部分手机:点开编辑页面),找到设置代理,代理模式改为手动
代理服务器设置为你私服的 IP,端口填写上面配置的端口,然后保存
 分别填写私服 IP,私服端口,第三个留空

完成

去 Google Play 下载 Genshin Impact下载文章开头的私服客户端,应该可以正常游玩了(注意:官网下的连不上私服)


关于 Android 一些限制:原神不会信任 USER TRUST 的证书,必须安装到 SYSTEM TRUST,私服客户端忽略这个限制

有问题可以底下评论反馈,文章会及时修改。