前言
原神是少有的游戏本体和签到福利分离的游戏,玩家为了签到还要额外下载米游社 App。
平心而论,目前的每日签到奖励真的不咋地,都知道是蚊子腿。事实上,你完全可以选择无视签到,不签也没啥大的损失;或者选择手动签到,但这样的话哪天忘记打卡了就很头疼。
为了原石、摩拉和紫色经验书等签到奖励,这个项目应运而生,可以实现自动每日签到。
简介
genshinhelper
(原神签到小助手),前身为 genshin-impact-helper
,可以自动化为你获取原神每日福利
特性
- 支持订阅推送 可选多种订阅方式,每天将签到结果推送给用户
- 支持多个账号 不同账号的 Cookie 值之间用
#
分隔,如:cookie1#cookie2#cookie3
天空岛/世界树
- 米游社原神每日签到
- 米游社区任务
- 微博超话签到
- 原神超话功能 活动监测 + 领兑换码 + 多方推送
- 支持多个角色 支持绑定官服和B站服的米游社账号
- 虎扑原神签到 未实现
America/Europe/Asia/SAR
- 米游社国际版(HoYoLAB)原神每日签到
准备
获取 Cookies
在开始使用前,需要先获取相应配置,你可以在 配置
章节找到本项目使用的所有环境变量。
各种订阅方式的 Token 或 Key 可以在对应网站的使用文档中找到获取方法,这里不再赘述;而目标网站的 Cookies 需要自己获取。
原神签到福利
Cookie 应包含account_id
和cookie_token
两个字段
崩坏3福利补给
同原神签到
米游社区任务
米游社国际版
- HoYoLab:https://webstatic-sea.mihoyo.com/ys/event/signin-sea/index.html?act_id=e202102251931481&lang=en-us
Cookie 应包含account_id
和cookie_token
两个字段
微博超话签到
特别地,微博参数需要在 微博国际版App 抓包取得。
在抓包结果请求头里提取出aid、s、gsid和from参数,自行组合成形如 ”aid=xxx; s=xxx; gsid=xxx; from=xxx“
的形式。
如果是使用iOS设备,可参考这个视频:微博国际版iOS抓包教程
原神超话监测
- 新浪新手卡:https://ka.sina.com.cn/
Cookie 需要SUB
和SUBP
两个字段。
#
分隔,如:COOKIE_MIHOYOBBS="cookie1#cookie2#cookie3"
。
- 鼠标按住并拖动以下图片或按钮到你的浏览器书签栏
- 打开目标网站
- 点击刚刚添加的书签
- 复制弹出的Cookies
- 收藏本页面
- 编辑刚刚添加的书签
- 修改书签标题为你喜欢的文字,例如:Ganyu Cookies Getter
- 修改书签链接网址为以下代码
- 打开目标网站
- 点击刚刚添加的书签
- 复制弹出的Cookies
javascript:(function(){let domain=document.domain;let cookie=document.cookie;prompt(`Cookies: ${domain}`, cookie)})();
部署
项目支持 Docker
、PyPI
和云函数三种安装方式,请根据实际情况选择相应版本安装。
Docker
或 PyPI
安装方式,请确保已事先安装好了 Docker
或 Python3
环境
在下列命令中, 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
- 高级使用
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
如果你想使用 config.json
配置文件(这部分会在 配置
章节讲解),则可以使用以下命令映射文件夹。
假设你的配置文件位于 /etc/genshin/config.json
。
docker run -d --name=genshinhelper \
-v /etc/genshin:/app/genshinhelper/config \
--restart always \
yindan/genshinhelper:latest
- 常用命令
# 查看日志
$ 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
你也可以使用pypi包:
pip install genshinhelper
你需要先在主机中添加环境变量,或者使用 pip show genshinhelper
查看包的安装位置,找到并编辑 config.json
配置文件。
如果你已经完成前置要求,使用以下命令运行项目:
python -m genshinhelper
注意:v1.5.0+
版本增加了随机延迟功能,默认为10-300s。故云函数的执行超时时间
应设置为大于最大休眠秒数MAX_SLEEP_SECS
。
如果你没有服务器,可以尝试使用云函数方式部署。
首先下载最新的 genshinhelper-xxx-serverless.zip
压缩包。 云函数文件入口点为 index.main_handler
。
- 前往云函数 SCF 管理控制台 -->
函数服务
-->新建
-->自定义创建
-->基础配置
-->本地上传zip包
-->上传
-->本地上传zip包
--> 选择下载的genshinhelper-xxx-serverless.zip
压缩包-->完成
- 前往
genshinhelper
-->函数管理
-->函数配置
-->编辑
- 修改
执行超时时间
为600
秒,在环境变量
添加环境变量,变量列表可参考配置
章节。
- 前往
genshinhelper
-->触发管理
-->新建触发器
--> 按下图进行配置:
- 前往函数计算 FC 管理控制台 -->
新建函数
-->事件函数
-->代码包上传
-->上传代码
--> 选择下载的genshinhelper-xxx-serverless.zip
压缩包 --> 按下图进行配置,注意函数入口为index.main_handler
-->新建
- 前往
genshinhelper
-->概览
-->修改配置
- 下拉找到
环境变量
添加环境变量,变量列表可参考配置
章节。
- 前往
genshinhelper
-->触发器
-->创建触发器
--> 按下图进行配置:
订阅
支持 Bark App 、
酷推、钉钉机器人、Discord、iGot聚合推送、pushplus、Server酱、Telegram robot、企业微信应用、企业微信机器人和自定义推送
单个或多个推送,通过配置环境变量或填写配置文件开启对应推送方式,变量名称列表详见下文 环境变量
部分内容。
- 自定义推送
{
"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":""
}
Custom notifier:
method: Required, the request method. Default: post.
url: Required, the full custom push link.
data: Optional, the data to sent. default: {}, you can add additional parameters.
retcode_key: Required, the key of the status code returned by the response body.
retcode_value: Required, the value of the status code returned by the response body.
data_type: Optional, the way to send data, choose from params|json|data, default: data.
merge_title_and_desp: Optional, if or not the title (application name + running status) and the running result will be merged. Default: false.
set_data_title: Required, the key of the message title in the data of the push method.
set_data_sub_title: Optional, the key of the message body in the push data.
set_data_desp: Optional, the key of the message body in the push data.
自定义推送:
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"
}
配置
项目有两种使用自定义配置的方式:
环境变量
直接将你的配置写入环境变量。
下表包含了本项目所用到的全部环境变量
Variable Name | Required | Default | Description |
---|---|---|---|
LANGUAGE | ❌ | en | 项目语言。目前支持中文(zh)和英文(en)。 |
MAX_SLEEP_SECS | ❌ | 300 | 最大休眠秒数。自v1.5.0添加了运行前随机延迟,设置此参数可自定义延迟,秒数应该>10 |
RUN_ENV | ❌ | prod | 运行环境。设置为任意非默认值即可跳过随机延迟。 |
COOKIE_MIHOYOBBS | ❌ | Cookie from miHoYo bbs. https://bbs.mihoyo.com/ys/ | |
COOKIE_BH3 | ❌ | 和 COOKIE_MIHOYOBBS 一样 | |
COOKIE_MIYOUBI | ❌ | Cookie from miHoYo bbs. https://bbs.mihoyo.com/ys/ | |
COOKIE_HOYOLAB | ❌ | Cookie from HoYoLAB community. https://webstatic-sea.mihoyo.com/ys/event/signin-sea/index.html?act_id=e202102251931481&lang=en-us | |
COOKIE_WEIBO | ❌ | Parameters from Sina Weibo intl. app. aid=xxx; gsid=xxx; s=xxx; from=xxx | |
COOKIE_KA | ❌ | Cookie from https://m.weibo.cn | |
BARK_KEY | ❌ | iOS Bark app's IP or device code. For example: https://api.day.app/xxxxxx | |
BARK_SOUND | ❌ | healthnotification | iOS Bark app's notification sound. Default: healthnotification |
COOL_PUSH_SKEY | ❌ | SKEY for Cool Push. https://cp.xuthus.cc/ | |
COOL_PUSH_MODE | ❌ | send | Push method for Cool Push. Choose from send(私聊),group(群组),wx(微信). Default: send |
CRON_SIGNIN | ❌ | 0 6 * | Docker custom runtime |
CUSTOM_NOTIFIER | ❌ | Custom notifier configuration | |
DD_BOT_TOKEN | ❌ | 钉钉机器人WebHook地址中access_token后的字段. | |
DD_BOT_SECRET | ❌ | 钉钉加签密钥.在机器人安全设置页面,加签一栏下面显示的以SEC开头的字符串. | |
DISCORD_WEBHOOK | ❌ | Webhook of Discord. | |
IGOT_KEY | ❌ | KEY for iGot. For example: https://push.hellyw.com/xxxxxx | |
PUSH_PLUS_TOKEN | ❌ | 一对一推送 | pushplus 一对一推送或一对多推送的token.不配置push_plus_user则默认为一对一推送. https://www.pushplus.plus/doc/ |
PUSH_PLUS_USER | ❌ | pushplus 一对多推送的群组编码.在'一对多推送'->'您的群组'(如无则新建)->'群组编码'里查看,如果是创建群组人,也需点击'查看二维码'扫描绑定,否则不能接收群组消息. | |
SCKEY | ❌ | SCKEY for ServerChan. https://sc.ftqq.com/3.version/ | |
SCTKEY | ❌ | SENDKEY for ServerChanTurbo. https://sct.ftqq.com/ | |
TG_BOT_API | ❌ | api.telegram.org | Telegram robot api address. Default: api.telegram.org |
TG_BOT_TOKEN | ❌ | Telegram robot token. Generated when requesting a bot from @botfather | |
TG_USER_ID | ❌ | User ID of the Telegram push target. | |
WW_ID | ❌ | 企业微信的企业ID(corpid).在'管理后台'->'我的企业'->'企业信息'里查看. https://work.weixin.qq.com/api/doc/90000/90135/90236 | |
WW_APP_SECRET | ❌ | 企业微信应用的secret.在'管理后台'->'应用与小程序'->'应用'->'自建',点进某应用里查看. | |
WW_APP_USERID | ❌ | @all | 企业微信应用推送对象的用户ID.在'管理后台'->' 通讯录',点进某用户的详情页里查看.默认: @all |
WW_APP_AGENTID | ❌ | 企业微信应用的agentid.在'管理后台'->'应用与小程序'->'应用',点进某应用里查看. | |
WW_BOT_KEY | ❌ | 企业微信机器人WebHook地址中key后的字段. https://work.weixin.qq.com/api/doc/90000/90136/91770 |
配置文件
推荐将配置文件模板 config.example.json 拷贝并重命名为 config.json
再填入你的配置;也可以直接使用 config.example.json
文件。
配置文件可以只留下需要的参数,把非必须的参数删除。
例如只配置原神签到福利和Discord推送,那么配置文件除了保持完整也可以写成:
{
"COOKIE_MIHOYOBBS": "",
"DISCORD_WEBHOOK": ""
}
致谢
感谢XiaoMiku01的 miyoubiAuto.
感谢所有为 y1ndan/genshin-impact-helper 项目贡献代码的大佬们以及使用过该项目的小可爱:
@PomeloWang
@Celeter
@Arondight
@chenkid999
@xe5700
@Renari
@journey-ad
@aflyhorse
@thesadru
@PeterPanZH
@cainiaowu
@alwaysmiddle
@qianxu2001
29 comments
aaaaaaaa
大佬牛逼
test
感谢大佬!
感谢分享|´・ω・)ノ
感谢!
感谢!
thanks
感谢分享|´・ω・)ノ
感谢大佬OωO
感谢大佬
dididi
hello