MHYY-AutoCheckin - 米哈云游(云原神)自动签到脚本食用指南(第二代)

在指南开始之前,请确保你有一颗聪明的头脑和可以折腾的时间,否则请等时机合适再进行配置!

在使用过程中如果遇到什么问题,请前往Issues · GamerNoTitle/MHYY (github.com)发起新的issue来提出,不要在本页面的评论区提出问题(因为追踪性太差了)

文章封面:#フォカロルス 芙卡洛斯 - 喵咕君QAQ(KH3)的插画 - pixiv

用前必读

⚠️请不要进行宣传,谢谢!一旦发现宣传就删库跑路!使用过程中如果出现bug可能会使用您的日志进行错误追踪,详情请见隐私政策

快速开始

先点个STAR,我们马上开始我们的教程:D

使用青龙面板运行

如果你选择使用青龙面板,那么你需要执行以下操作

首先点开订阅管理,把这个命令粘贴进去

1
ql repo http://git.bili33.top/GamerNoTitle/MHYY.git "main"

然后他会自动识别,并填入相应的内容,你只需要修改定时规则即可,名称按照自己需要修改

你可以改成下面这个(Github链接,国内可能访问不了)

1
ql repo https://github.com/GamerNoTitle/MHYY.git "main"

保存以后点击运行按钮更新一下订阅

在定时任务中你就能找到刚刚更新的内容,但是还不能够使用,我们还需要配置依赖和环境变量

我们需要三个python3依赖,分别是httpxsentry-sdkpyyaml,分别把他们装好

然后点到环境变量,新建名为MHYY_CONFIG的变量,把我们的配置填进去,点击保存

如何填写配置?手把手教你获取登录凭据!

使用Github Action运行

原仓库在2023/02/03收到Github通知封禁,镜像仓库在GamerNoTitle/MHYY: Disabled Action, if you need it, enable it by yourself (github.com),本项目仓库的Github Action已经被我手动禁用,如果需要使用Action版本,请将~/.github/workflows文件夹内的两个文件后面的.disabled删掉!

首先你需要先打开本脚本的仓库GamerNoTitle/MHYY: 米哈云游(云原神)自动签到脚本,让你每天都拿到15分钟~ (github.com),点击右上角的fork按钮,接着点击下面绿色的Create fork来创建一个分支

然后点击上面的Settings,导航到Secrets->Actions页面下,点击New repository secret(如图)

将配置填充入名字为MHYY_SECRET的Secret中(内容获取请参照配置内容获取一节)

如何填写配置?手把手教你获取登录凭据!

使用华为云函数运行

请问能否使用云函数跑? · Issue #26 · GamerNoTitle/MHYY (github.com) 的请求,还是做了个云函数

我们首先需要去华为云注册一个号,然后打开函数工作流面板,点击创建函数,地区根据自己需要选,推荐直接选香港

函数名称自便,下面的运行时需要选择Python 3.9

然后先下载仓库到本地,我们需要把依赖打包好一起放上去

打开终端,输入以下命令

1
$ pip install -r .\requirements.txt -t .

让pip自动安装环境,安装完后应该会像我图片这样有很多文件夹

如果你本机的终端提示找不到命令pip的话,请先安装Python

接着,在scf.py中的顶上的config_datas里面,填入自己的配置

然后把当前文件夹打包(包括安装依赖时产生的一堆文件夹),在函数页面选择上传自,再选ZIP文件

接着往下拉,在基本信息里面,我们点击编辑,然后把函数执行入口改成scf.handler,时间根据自己需要改

保存后就可以自己点击测试,通过了就没啥问题了,接着创建触发器

在顶上点击设置,然后左边点击触发器,新建触发器,根据需求填写

确定后就配置完了

自动保活(在Github Action上运行的才需要)

事实上,对于现版本的Github Action,只需要把KeepActionAlive打开即可,下面的这些操作是旧版本的Action所需要的

因为Github在仓库没有push三个月后会停用仓库的一切Action,所以说我们需要进行保活。

在启用KeepActionAlive之前,你需要创建一个用来push更改的GITHUB_TOKEN

右上角点击自己的头像,然后点击Settings,然后在左侧的导航栏找到Developer Settings

然后在左边找到Personal Access Tokens,点击Generate new token生成一个token,名字填写为GITHUB_TOKEN

把过期时间设置为No expiration,然后依次勾选下面内容

然后点最下面的绿色按钮Generate token即可

在Action页面启用KeppActionAlive即可!脚本会在每个月的1号自动推送更新从而达到保活的目的。

配置内容解释

你填入环境变量的配置应该具有下面这样的格式(解释请看注释)

国际服云原神玩家注意!!!

国际服云原神玩家注意:MHYY支持国际服,但是需要在国际服的accounts下添加region: os的配置,即

1
2
3
4
5
# (上面省略)
# appid: 国服手机抓的固定填1953439974,网页版抓的留空;国际服手机抓的填600493
appid:
# region(可选): 账号所处的地区,国服填cn,国际服填os,不填或非法值按国服处理
region: os

国际服在region处只有填写os(全小写)才能够被正确识别,否则一律按照国服处理

抓包的环节跟国服没有区别,直接按照国服抓包的流程抓就行了

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
# 使用前请阅读文档:https://bili33.top/posts/MHYY-AutoCheckin-Manual-Gen2
# 有问题请前往Github开启issue:https://github.com/GamerNoTitle/MHYY/issues

######## 以下为账号配置项,可以多账号,详情请参考文档 ########
accounts:
# 第一个账号
- token:
# 关于type:如果你在安卓版的云·原神里面抓的话type应该是2
# 如果你是网页版抓的,那type应该是16
# 此处仅供参考,具体以你抓的为准
type:
# sysver:如果你是安卓版抓的,这个应该会显示你的安卓版本(鸿蒙不清楚,手上没设备)
# 如果你是网页版抓的,这个应该是你的系统版本(注:Windows 10和Windows 11都是写的Windows 10)
sysver:
# deviceid:手机抓的会有这个,抓到什么填什么
# 如果是网页版抓的,那也是抓到什么填什么
deviceid:
# devicename: 手机抓的话就是手机的入网型号,如红米K40为M2012K11AC,红米K50为22021211RC
# 如果是网页版抓的,填Unknown
devicename:
# devicemodel: 手机抓的填抓出来的手机型号,大概为手机厂商+上面的deviceid,如红米K40为Xiaomi M2012K11AC
# 如果是网页版抓的,填Unknown
devicemodel:
# appid: 手机抓的固定填1953439974,网页版抓的留空
appid:
# 第二个账号,不需要的话把下面删掉,如果需要更多就在下面再加
- token:
# 关于type:如果你在安卓版的云·原神里面抓的话type应该是2
# 如果你是网页版抓的,那type应该是16
# 此处仅供参考,具体以你抓的为准
type:
# sysver:如果你是安卓版抓的,这个应该会显示你的安卓版本(鸿蒙不清楚,手上没设备)
# 如果你是网页版抓的,这个应该是你的系统版本(注:Windows 10和Windows 11都是写的Windows 10)
sysver:
# deviceid:手机抓的会有这个,抓到什么填什么
# 如果是网页版抓的,那也是抓到什么填什么
deviceid:
# devicename: 手机抓的话就是手机的入网型号,如红米K40为M2012K11AC,红米K50为22021211RC
# 如果是网页版抓的,填Unknown
devicename:
# devicemodel: 手机抓的填抓出来的手机型号,大概为手机厂商+上面的deviceid,如红米K40为Xiaomi M2012K11AC
# 如果是网页版抓的,填Unknown
devicemodel:
# appid: 手机抓的固定填1953439974,网页版抓的留空
appid:

如果你只需要一个账号,那就直接把标着第二个账号那一行及以下全删掉就行了,例如(下面的例子删除了注释)

1
2
3
4
5
6
7
8
9
10
11
12
13
# 使用前请阅读文档:https://bili33.top/posts/MHYY-AutoCheckin-Manual-Gen2
# 有问题请前往Github开启issue:https://github.com/GamerNoTitle/MHYY/issues

######## 以下为账号配置项,可以多账号,详情请参考文档 ########
accounts:
# 第一个账号
- token:
type:
sysver:
deviceid:
devicename:
devicemodel:
appid:

但如果你需要多个账号(例如我需要三个账号),那就需要把重复的部分复制粘贴(有几个账号就有几个相同的配置项),例如(下面的例子删除了注释)

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
# 使用前请阅读文档:https://bili33.top/posts/MHYY-AutoCheckin-Manual/
# 有问题请前往Github开启issue:https://github.com/GamerNoTitle/MHYY/issues

######## 以下为账号配置项,可以多账号,详情请参考文档 ########
accounts:
# 第一个账号
- token:
type:
sysver:
deviceid:
devicename:
devicemodel:
appid:
# 第二个账号
- token:
type:
sysver:
deviceid:
devicename:
devicemodel:
appid:
# 第三个账号
- token:
type:
sysver:
deviceid:
devicename:
devicemodel:
appid:

什么样的变量配置内容是合法的?

合法的配置内容是完全符合yaml的文档格式的,容易被忽略的一点是:配置项的冒号后面需要带有空格

1
2
3
4
5
6
7
8
9
10
11
12
13
# 使用前请阅读文档:https://bili33.top/posts/MHYY-AutoCheckin-Manual-Gen2
# 有问题请前往Github开启issue:https://github.com/GamerNoTitle/MHYY/issues

######## 以下为账号配置项,可以多账号,详情请参考文档 ########
accounts:
# 第一个账号
- token: ai=4;ci=1;oi=bbs_id;ct=ct_token;si=si_token;bi=hk4e_cn
type: 2
sysver: 13
deviceid: device_uuid
devicename: device_name
devicemodel: device_model
appid: 1953439974

而冒号后不带有空格的是不符合要求的,如

1
2
3
4
5
6
7
8
9
10
11
12
13
# 使用前请阅读文档:https://bili33.top/posts/MHYY-AutoCheckin-Manual-Gen2
# 有问题请前往Github开启issue:https://github.com/GamerNoTitle/MHYY/issues

######## 以下为账号配置项,可以多账号,详情请参考文档 ########
accounts:
# 第一个账号
- token:ai=4;ci=1;oi=bbs_id;ct=ct_token;si=si_token;bi=hk4e_cn
type:2
sysver:13
deviceid:device_uuid
devicename:device_name
devicemodel:device_model
appid:1953439974

当你在运行脚本的时候,如果看到了如下的提示

1
2
3
4
5
6
7
8
Traceback (most recent call last):
File "/ql/data/scripts/GamerNoTitle_MHYY/main.py", line 35, in
conf = ReadConf('MHYY_CONFIG')['accounts']
~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
TypeError: 'NoneType' object is not subscriptable
Sentry is attempting to send 2 pending events
Waiting up to 2 seconds
Press Ctrl-C to quit

并且你确信自己已经加好了变量,那么请考虑一下你的的每个配置项的冒号后面是不是加上了空格

配置获取

从网页版云原神获取

打开云原神网页版的链接云·原神 (mihoyo.com),完成登录,完成后应该会是下图的样子

这时候按一下键盘上的F12把开发者工具打开,然后点击顶上的网络(Network),按下键盘上的F5进行刷新页面操作

开发者控制台会弹出很多的请求,在左上角的搜索框里面搜索login,点击最下面的一个条目

在右侧会显示很多的信息,拉到最底下,就可以看到我们所需要的信息了

里面的内容具有以下对应关系

  • token 是里面的 x-rpc-combo_token
  • type 是里面的 x-rpc-client_type
  • sysver 是里面的 x-rpc-sys_version,一般为电脑的系统(Windows 11会写作Windows 10,不用管,写什么填什么)
  • deviceid 是里面的 x-rpc-device_id,一般为UUID
  • devicename 是里面的 x-rpc-device_name,应该固定为Unknown
  • devicemodel 是里面的 x-rpc-device_model,应该固定为Unknown
  • appid 是里面的 x-rpc-app_id,留空

从安卓版云原神获取(图片有点旧,但是逻辑是一样的)

你需要安装一个手机上的抓包软件(例如HttpCanary,或者如果你能够用fiddler电脑运行去抓也行)

一定要记得装抓包软件提供的证书,要不然解不了SSL连接,一定要先登录并成功进去了再启动抓包软件!!!

这里面只要是个HTTP链接,随便一个里面都有我们所需要的东西

其中,这里面的东西与变量有如下的对应关系

  • token 是里面的 x-rpc-combo_token
  • type 是里面的 x-rpc-client_type
  • sysver 是里面的 x-rpc-sys_version,一般为安卓的版本
  • deviceid 是里面的 x-rpc-device_id,一般为UUID
  • devicename 是里面的 x-rpc-device_name,一般为 手机厂商名(如Xiaomi) + 设备入网型号
  • devicemodel 是里面的 x-rpc-device_model,一般为设备入网型号
  • appid 是里面的 x-rpc-app_id,固定为1953439974

Q&A

KeepActionAlive运行失败(权限不足)

具体如图所示,这个要得益于昨天Github的一个更新GitHub Actions - Updating the default GITHUB_TOKEN permissions to read-only | GitHub Changelog

在仓库里面点击Settings => Actions => General,往下拉找到Workflow permissions,把原来的Read repository contents and packages permissions改为上面的Read and write permissions,然后点击下面的Save键就可以了

发现了bug/无法使用

请前往Issues · GamerNoTitle/MHYY (github.com)发起新的issue来提出,不要在本页面的评论区提出问题(因为追踪性太差了)