这是一个关于 原神签到小助手 ↗ 的指导教程。
写这个文档,是因为开发者自己写的文档太乱了。我也花了很长时间才彻底看懂。。
项目相关#
genshinhelper 从 v2.0.0 开始,分为 genshinhelper2 和 genshin-checkin-helper 两个项目,同时分离出 onepush 推送包。
前言#
原神是少有的游戏本体和签到福利分离的游戏,玩家为了签到还要额外下载米游社 App。
平心而论,目前的每日签到奖励真的不咋地,都知道是蚊子腿。事实上,你完全可以选择无视签到,不签也没啥大的损失;或者选择手动签到,但这样的话哪天忘记打卡了就很头疼。
为了原石、摩拉和紫色经验书等签到奖励,这个项目应运而生,可以实现自动每日签到。
简介#
genshinhelper
(原神签到小助手),前身为 genshin-impact-helper
,可以自动化为你获取原神每日福利。
功能支持#
- 支持订阅推送
- 支持多个账号以及一个账号下的多个角色
- 米游社原神/崩坏 3 的每日签到
- 米游社的米游币获取任务
- 原神超话功能 活动监测 + 领兑换码 + 多方推送
- 支持原神多种服务器(天空岛/世界树/America/Europe/Asia/SAR)
- 原神微信积分商城签到
- 云原神时长活动签到
源码#
genshin-checkin-helper ↗ - 签到主程序。
onepush ↗ - 一个简单易用的推送包。
运行方式与环境搭建#
::: collapse 方案 1 终端运行
终端运行 genshinhelper
or python -m genshinhelper
可以直接运行签到脚本。
:::
::: collapse 方案 2 云函数运行(推荐)
注意:
v1.5.0+
版本增加了随机延迟功能,默认为 10-300s。故云函数的执行超时时间
应设置为大于变量中的MAX_SLEEP_SECS
(最大休眠秒数)。
这里以腾讯云函数为例。阿里云方法类似。
云函数版文件下载 ↗ 密码:ed03
前往 云函数 SCF 管理控制台 ↗ —>函数服务
—>新建
—>自定义创建
—>基础配置
—>本地上传zip包
—>上传
—>本地上传zip包
—> 选择下载的genshinhelper-xxx-serverless.zip
压缩包—>完成
前往genshinhelper
—>函数管理
—>函数配置
—>编辑
此处可以编辑环境变量。同时建议修改执行超时时间
为600
秒。
前往genshinhelper
—>触发管理
—>新建触发器
—> 按下图进行配置。当然你也可以添加一个 API 网关
,方便手动强制执行。
:::
::: collapse 方案 3 Docker 运行
使用以下命令拉取镜像:
docker pull yindan/genshinhelper
bash你也可以在 Docker Hub ↗ 上找到该仓库。
在下列命令中, COOKIE_MIHOYOBBS
代表环境变量名字, <COOKIE_MIHOYOBBS>
代表 COOKIE_MIHOYOBBS
对应的值;DISCORD_WEBHOOK
同理。
应当注意,这里的
COOKIE_MIHOYOBBS
和DISCORD_WEBHOOK
只是教程使用的例子,并非必须字段。 如果你是国际服则应该配置COOKIE_HOYOLAB
而不是COOKIE_MIHOYOBBS
;不使用 Discord 推送,可以不配置DISCORD_WEBHOOK
。
- 基本使用
docker run -d --name=genshinhelper \
-e COOKIE_MIHOYOBBS="<COOKIE_MIHOYOBBS>" \
-e DISCORD_WEBHOOK="<DISCORD_WEBHOOK>" \
--restart always \
yindan/genshinhelper:latest
bash- 高级使用
Docker 会在每天早上 6:00
触发签到任务。可以使用 CRON_SIGNIN
参数自定义触发时间。
例如触发时间使用的是北京时间:
docker run -d --name=genshinhelper \
-e COOKIE_MIHOYOBBS="<COOKIE_MIHOYOBBS>" \
-e DISCORD_WEBHOOK="<DISCORD_WEBHOOK>" \
-e CRON_SIGNIN="0 7 * * *" \
--restart always \
yindan/genshinhelper:latest
bash如果你想使用 config.json
配置文件(这部分会在 配置
章节讲解),则可以使用以下命令映射文件夹。
假设你的配置文件位于 /etc/genshin/config.json
。
docker run -d --name=genshinhelper \
-v /etc/genshin:/app/genshincheckinhelper/config \
--restart always \
yindan/genshinhelper:latest
bash- 常用命令
# 查看日志
$ docker logs -f genshinhelper --tail 100
# 重启
$ docker restart genshinhelper
# 更新
$ docker pull yindan/genshinhelper
$ docker rm -f genshinhelper
# 之后依据基本使用或高级使用重新部署
# 卸载
$ docker rm -f genshinhelper
$ docker image rm genshinhelper
bash:::
::: collapse 方案 4 使用 PyPI Package 运行
使用 pypi 包 ↗ 进行安装:
pip install genshinhelper
bash你需要先在主机中添加环境变量,或者使用 pip show genshinhelper
查看包的安装位置,找到并编辑 config.json
配置文件。
如果你已经完成前置要求,使用以下命令运行项目:
python -m genshinhelper
bash:::
配置与操作#
配置项#
其实就是云函数里面的环境变量或者其他方式下的 Config 文件。
下面的配置项并非每一项都要填写,根据需要填即可。
变量名 | 默认值 | 描述 |
---|---|---|
LANGUAGE | en | 项目语言。目前支持中文(zh)和英文(en)。 |
MAX_SLEEP_SECS | 300 | 最大休眠秒数。自 v1.5.0 添加了运行前随机延迟,设置此参数可自定义延迟,秒数应该> 10 |
RANDOM_SLEEP_SECS_RANGE | 0-300 | 随机延迟休眠秒数范围。设置成”0-0”为取消延迟 |
RUN_ENV | prod | 是否延迟执行。设置为任意非默认值即可跳过随机延迟 |
CHECK_IN_TIME | (云函数无需配置此项)每日签到时间,只运行环境的时间有关。对于 Docker 可以用 TZ=Asia/Shanghai 设置时区 | |
CHECK_RESIN_SECS | (云函数无需配置此项)原神原粹树脂检测间隔秒数 | |
ONE_PUSH | 设置消息推送 | |
COOKIE_MIHOYOBBS | 米游社里原神签到需要的 Cookie 值 | |
COOKIE_BH3 | 崩坏 3 签到需要的 Cookie 值 | |
COOKIE_MIYOUBI | 米游社执行任务获取米游币需要的 Cookie 值 | |
COOKIE_HOYOLAB | HoYoLAB 里原神签到需要的 Cookie 值 | |
COOKIE_WEIBO | 微博超话自动签到需要的 Cookie 值,形如 aid=xxx;gsid=xxx;s=xxx;from=xxx | |
COOKIE_KA | 超话活动追踪\获取兑换码需要的 Cookie 值,形如 SUB=xxx;SUBP=xxx | |
CLOUD_GENSHIN | 云原神签到得时长需要的 Cookie 值 | |
COOKIE_RESIN_TIMER | 原神原粹树脂检测需要的 Cookie 值 | |
SHOPTOKEN | 原神微信积分商城的 token 值(通过抓包获取) |
Cookie 相关配置项都可以填写多个账号。不同账号的 Cookie 值之间用
#
分隔,如:cookie1#cookie2#cookie3
配置文件#
对于云函数就是环境变量,所以无需配置文件。
例如只配置原神签到福利和 Discord 推送,那么配置文件除了保持完整也可以写成:
{
"COOKIE_MIHOYOBBS": "",
"DISCORD_WEBHOOK": ""
}
json获取 Cookie#
你可以通过书签法执行 JS 代码。
JS 代码如下:
javascript: (function () {
let domain = document.domain
let cookie = document.cookie
prompt('Cookies: ' + domain, cookie)
})()
javascript你可以直接在开发者工具的 Console 面板直接粘贴运行,也可以将下面的链接收藏为书签(电脑拖拽到书签栏,手机需要手动添加):
签到相关详解#
原神、崩坏 3、米游社签到#
对于 COOKIE_MIHOYOBBS
、COOKIE_BH3
、COOKIE_MIYOUBI
的 Cookie 值抓取,都可以直接前往米游社网站 https://bbs.mihoyo.com/ys/ ↗ 或 https://bbs.mihoyo.com/bh3/。 ↗
如果是 HoYoLAB,请前往 https://webstatic-sea.mihoyo.com/ys/event/signin-sea/index.html?act_id=e202102251931481&lang=en-us ↗ 页面抓取并填入 COOKIE_HOYOLAB
。
上述 Cookie 应包含
account_id
和cookie_token
两个字段。如果没有,建议使用浏览器的无痕/访客/隐私模式重新登陆访问。
微博超话签到#
COOKIE_WEIBO
参数需要在 微博国际版 APP 内抓包取得。抓包时使用微博的搜索功能就能轻松获得相应请求,但请注意抓包地址为 https。
地址形如:https://api.weibo.cn/2/xxxxxx?aid=xxx&c=weicoabroad&from=123&gsid=_xxx&i=xxx&lang=zh_CN&s=xxx&ua=iPhone12%2C1_iOS14.0.1_Weibo_intl._4330_cell&v_p=59
在抓包结果请求头(地址 query 参数)里提取出 aid、s、gsid 和 from 参数,组合成形如 "aid=xxx; s=xxx;gsid=xxx;from=xxx"
的形式填入。
COOKIE_KA
用来追踪超话活动和自动提取兑换码。事实上会在抓取 COOKIE_WEIBO
的时候会一起被抓取到。注意 Cookie 需要SUB
和SUBP
两个字段。填写形式同 COOKIE_WEIBO
。
详细抓取教程可参考视频:微博国际版 iOS 抓包教程 ↗
推送相关详解#
在配置中,设置 ONEPUSH
变量开启推送。不支持同时使用多个推送。默认配置/格式如下:
{
"notifier": "",
"params": {
"markdown": false
}
}
json实际填写时请浓缩至一行,形如 {"notifier":"","params":{"markdown":false}}
。如果是本地配置,请使用单引号包裹。
ONEPUSH
根配置:
- notifier:推送名字,如
bark
、dingtalk
、discord
、pushplus
、qmsg
、serverchan
、serverchanturbo
、telegram
、wechatworkapp
、wechatworkbot
、custom
等。 - params:推送参数,如
markdown
、required
、secret
等。
如使用 Discord Bot:
ONEPUSH={"notifier":"discord","params":{"markdown":true,"webhook":"https://discord.com/api/webhooks/xxxxxx"}}
json::: collapse 详细配置说明
下列参数如果 required 字段包含 ‘title’ 或 ‘content’,ONEPUSH 变量中都不需要设置。例如 serverchan 不需要设置 ‘title’。 此外 custom 方式暂时不支持推送签到结果。
- bark
ONEPUSH={"notifier":"bark","params":{"markdown":false,"key":"xxxxxx"}}
json- custom
该方式比较复杂:
{
"method": "post",
"url": "",
"data": {},
"retcode_key": "",
"retcode_value": 200,
"data_type": "data",
"merge_title_and_desp": false,
"set_data_title": "",
"set_data_sub_title": "",
"set_data_desp": ""
}
json| 配置项 | 描述 | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- | ---------------- | | method | 必填,请求方式。默认:post | | url | 必填,完整的自定义推送链接 | | data | 选填,发送的data。默认为空,可自行添加额外参数 | | retcode_key | 必填,响应体返回的状态码的key | | retcode_value | 必填,响应体返回的状态码的value | | data_type | 选填,发送data的方式,可选params | json | data,默认:data | | merge_title_and_desp | 选填,是否将标题(应用名+运行状态)和运行结果合并。默认:false | | set_data_title | 必填,推送方式data中消息标题的key | | set_data_sub_title | 选填,推送方式data中消息正文的key。有的推送方式正文的key有次级结构,需配合set_data_title构造子级,与set_data_desp互斥。例如:企业微信中,set_data_title填text,set_data_sub_title填content | | set_data_desp | 选填,推送方式data中消息正文的key。例如:server酱的为desp,与set_data_sub_title互斥,两者都填则本项不生效 |
例如写一个 ServerChan 的自定义推送。
查看文档得到 ServerChan 推送所需要的信息:
- 需要的
url
形式为:https://sc.ftqq.com/{SCKEY}.send
- 发送的
data
形式为:{'text': test','desp':desp}
- 消息发送成功响应体为:
{'errno': 0, 'errmsg': 'OK'}
自定义推送配置如下:
{
"method": "post",
"url": "https://sc.ftqq.com/{直接填写你的SCKEY}.send",
"data": {},
"retcode_key": "errno",
"retcode_value": 0,
"data_type": "data",
"merge_title_and_desp": true,
"set_data_title": "test",
"set_data_sub_title": "",
"set_data_desp": "desp"
}
json- dingtalk
ONEPUSH={"notifier":"dingtalk","params":{"markdown":true,"token":"xxxxxx",secret:"xxxxxx"}}
json- discord
ONEPUSH={"notifier":"discord","params":{"markdown":true,"webhook":"https://discord.com/api/webhooks/xxxxxx"}}
json- pushplus
ONEPUSH={"notifier":"pushplus","params":{"markdown":true,"token":"xxxxxx"}}
json- qmsg
ONEPUSH={"notifier":"qmsg","params":{"markdown":false,"key":"xxxxxx"}}
json- serverchan
ONEPUSH={"notifier":"serverchan","params":{"markdown":true,"sckey":"xxxxxx"}}
json- serverchanturbo
ONEPUSH={"notifier":"serverchanturbo","params":{"markdown":true,"sctkey":"xxxxxx"}}
json- telegram
ONEPUSH={"notifier":"telegram","params":{"markdown":false,"token":"xxxxxx","userid":"xxxxxx"}}
json- wechatworkapp
ONEPUSH={"notifier":"wechatworkapp","params":{"markdown":true,"corpid":"xxxxxx","corpsecret":"xxxxxx","agentid":"xxxxxx"}}
json- wechatworkbot
ONEPUSH={"notifier":"wechatworkbot","params":{"markdown":true,"key":"xxxxxx"}}
json:::