Genshin Impact Helper

QQ Group | Discord | Telegram

前言

原神是少有的游戏本体和签到福利分离的游戏,玩家为了签到还要额外下载米游社 App。

平心而论,目前的每日签到奖励真的不咋地,都知道是蚊子腿。事实上,你完全可以选择无视签到,不签也没啥大的损失;或者选择手动签到,但这样的话哪天忘记打卡了就很头疼。

为了原石、摩拉和紫色经验书等签到奖励,这个项目应运而生,可以实现自动每日签到。

简介

genshinhelper(原神签到小助手),前身为 genshin-impact-helper,可以自动化为你获取原神每日福利



特性

  • 支持订阅推送 可选多种订阅方式,每天将签到结果推送给用户
  • 支持多个账号 不同账号的 Cookie 值之间用#分隔,如:cookie1#cookie2#cookie3

天空岛/世界树

  • 米游社原神每日签到
  • 米游社区任务
  • 微博超话签到
  • 原神超话功能 活动监测 + 领兑换码 + 多方推送
  • 支持多个角色 支持绑定官服和B站服的米游社账号
  • 虎扑原神签到 未实现

America/Europe/Asia/SAR

  • 米游社国际版(HoYoLAB)原神每日签到

获取 Cookies

在开始使用前,需要先获取相应配置,你可以在 配置章节找到本项目使用的所有环境变量。

各种订阅方式的 Token 或 Key 可以在对应网站的使用文档中找到获取方法,这里不再赘述;而目标网站的 Cookies 需要自己获取。

提示:获取的米游社/米游社国际版 Cookie 应包含account_idcookie_token两个字段;米游币需要account_idcookie_tokenlogin_ticket三个字段;新浪新手卡需要SUBSUBP两个字段。否则视为获取失败。这时可尝试退出账号,打开无痕模式重新获取。

提示:Cookie 支持配置多个,不同账号的 Cookie 值之间用 #分隔,如:COOKIE_MIHOYOBBS="cookie1#cookie2#cookie3"

特别地,微博参数需要在 微博国际版App 抓包取得。

在抓包结果请求头里提取出aid、s、gsid和from参数,自行组合成形如 ”aid=xxx; s=xxx; gsid=xxx; from=xxx“的形式。

如果是使用iOS设备,可参考这个视频:微博国际版iOS抓包教程

电脑浏览器

  1. 鼠标按住并拖动以下图片或按钮到你的浏览器书签栏
  2. 打开目标网站
  3. 点击刚刚添加的书签
  4. 复制弹出的Cookies

Ganyu Cookies Getter

手机浏览器

  1. 收藏本页面
  2. 编辑刚刚添加的书签
  3. 修改书签标题为你喜欢的文字,例如:Ganyu Cookies Getter
  4. 修改书签链接网址为以下代码
  5. 打开目标网站
  6. 点击刚刚添加的书签
  7. 复制弹出的Cookies
javascript:(function(){let domain=document.domain;let cookie=document.cookie;prompt(`Cookies: ${domain}`, cookie)})();

部署

项目支持 DockerPyPI和云函数三种安装方式,请根据实际情况选择相应版本安装。

提示:如果选择 DockerPyPI安装方式,请确保已事先安装好了 DockerPython3环境

choose_platform

安装

使用以下命令拉取镜像:

docker pull yindan/genshinhelper

这将拉取最新的 genshinhelper镜像。

你可以在Docker Hub上找到该仓库。

使用

在下列命令中, COOKIE_MIHOYOBBS 代表环境变量名字, <COOKIE_MIHOYOBBS> 代表 COOKIE_MIHOYOBBS 对应的值;DISCORD_WEBHOOK 同理。

应当注意,这里的 COOKIE_MIHOYOBBSDISCORD_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

安装

如果你没有服务器,可以尝试使用云函数方式部署。

首先下载最新的 genshinhelper-xxx-serverless.zip 压缩包。 云函数文件入口点为 index.main_handler


Tencent Cloud SCF (腾讯云)

提示:Cron表达式为 7 位数

International | 中国站

  • 前往云函数 SCF 管理控制台 -->函数服务-->新建-->自定义创建-->基础配置-->本地上传zip包-->上传-->本地上传zip包--> 选择下载的genshinhelper-xxx-serverless.zip压缩包-->完成

SCF_upload

  • 前往genshinhelper-->函数管理-->函数配置-->编辑

SCF_edit

  • 修改执行超时时间300秒,在环境变量添加环境变量,变量列表可参考配置章节。

SCF_add_environment_variables

  • 前往genshinhelper-->触发管理-->新建触发器--> 按下图进行配置:

SCF_Triggers

Alibaba Cloud FC (阿里云)

提示:Cron表达式为 6 位数

International | 中国站

  • 前往函数计算 FC 管理控制台 -->新建函数-->事件函数-->代码包上传-->上传代码--> 选择下载的genshinhelper-xxx-serverless.zip压缩包 --> 按下图进行配置,注意函数入口为index.main_handler -->新建

FC_upload

  • 前往genshinhelper -->概览-->修改配置

FC_edit

  • 下拉找到环境变量添加环境变量,变量列表可参考配置章节。

FC_add_environment_variables

  • 前往genshinhelper-->触发器-->创建触发器--> 按下图进行配置:

FC_Triggers

订阅

支持 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 NameRequiredDefaultDescription
LANGUAGEen-usRewards language for HoYoLAB daily check-in.
COOKIE_MIHOYOBBS Cookie from miHoYo bbs. https://bbs.mihoyo.com/ys/
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
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_SOUNDhealthnotificationiOS Bark app's notification sound. Default: healthnotification
COOL_PUSH_SKEY SKEY for Cool Push. https://cp.xuthus.cc/
COOL_PUSH_MODEsendPush method for Cool Push. Choose from send(私聊),group(群组),wx(微信). Default: send
CRON_SIGNIN0 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_APIapi.telegram.orgTelegram 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 文件。

config.example.json 模板:

{
  "LANGUAGE": "en-us",
  "COOKIE_MIHOYOBBS": "",
  "COOKIE_MIYOUBI": "",
  "COOKIE_HOYOLAB": "",
  "COOKIE_WEIBO": "",
  "COOKIE_KA": "",
  "BARK_KEY": "",
  "BARK_SOUND": "healthnotification",
  "COOL_PUSH_SKEY": "",
  "COOL_PUSH_MODE": "send",
  "CUSTOM_NOTIFIER": {
    "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": ""
  },
  "DD_BOT_TOKEN": "",
  "DD_BOT_SECRET": "",
  "DISCORD_WEBHOOK": "",
  "IGOT_KEY": "",
  "PUSH_PLUS_TOKEN": "",
  "PUSH_PLUS_USER": "",
  "SCKEY": "",
  "SCTKEY": "",
  "TG_BOT_API": "api.telegram.org",
  "TG_BOT_TOKEN": "",
  "TG_USER_ID": "",
  "WW_ID": "",
  "WW_APP_SECRET": "",
  "WW_APP_USERID": "@all",
  "WW_APP_AGENTID": "",
  "WW_BOT_KEY": ""
}

致谢

感谢XiaoMiku01的 miyoubiAuto.
感谢所有为 y1ndan/genshin-impact-helper 项目贡献代码的大佬们以及使用过该项目的小可爱:
@PomeloWang
@Celeter
@Arondight
@chenkid999
@xe5700
@Renari
@journey-ad
@aflyhorse
@thesadru
@PeterPanZH
@cainiaowu
@alwaysmiddle
@qianxu2001

Last modification:July 12th, 2021 at 10:17 pm
如果觉得我的文章对你有用,请随意赞赏