Genshin Impact Helper

QQ Group | Discord | Telegram

前言

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

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

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

简介

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



特性

  • 米游社原神每日签到
  • 米游社国际版(HoYoLAB)原神每日签到
  • 微博超话签到 支持任意 IP 签到
  • 原神超话功能 活动监测 + 领兑换码 + 多方推送
  • 支持订阅推送 可选多种订阅方式,每天将签到结果推送给用户
  • 支持多个账号 不同账号的 Cookie 值之间用#分隔,如:<cookie1>#<cookie2>#<cookie3>
  • 支持多个角色 支持绑定官服和B站服的米游社账号
  • 虎扑原神签到 未实现

安装

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

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

choose_version

  • Docker

使用以下命令拉取镜像:

$ docker pull yindan/genshinhelper

这将拉取最新的genshinhelper镜像。

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

  • PyPI Package

你也可以使用pypi包:

$ pip install genshinhelper
  • 云函数


使用

Docker

在下列命令中, COOKIE_MIHOYOBBS 代表环境变量名字, <COOKIE_MIHOYOBBS> 代表 COOKIE_MIHOYOBBS 的值;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 Package

你需要先在主机中添加环境变量,或者使用 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",
    "cookies":{
        "cookie_mihoyobbs":"",
        "cookie_miyoubi":"",
        "cookie_hoyolab":"",
        "cookie_weibo":"",
        "weibo_intl_aid":"",
        "weibo_intl_s":"",
        "cookie_ka":""
    },
    "notifiers":{
        "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":""
        },
        "dingtalk_bot_token":"",
        "dingtalk_bot_secret":"",
        "discord_webhook":"",
        "igot_key":"",
        "push_plus_token":"",
        "push_plus_user":"",
        "server_chan_key":"",
        "server_chan_turbo_key":"",
        "telegram_bot_api":"api.telegram.org",
        "telegram_bot_token":"",
        "telegram_user_id":"",
        "wechat_work_id":"",
        "wechat_work_app_secret":"",
        "wechat_work_app_userid":"@all",
        "wechat_work_app_agentid":"",
        "wechat_work_bot_key":""
    }
}

配置多账号

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

获取配置参数

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

下面演示如何获取米游社的 Cookie,其他网站同理:

  1. 浏览器无痕模式打开 https://bbs.mihoyo.com/ys/ ,登录账号
  2. F12,打开开发者工具,找到并点击Network
  3. F5刷新页面,按下图复制 Cookie:

How_to_get_mys_cookie

当触发Debugger时,可尝试按Ctrl + F8关闭,然后再次刷新页面,最后复制 Cookie。也可以使用另一种方法:

  1. 复制代码 var cookie=document.cookie;var ask=confirm('Cookie:'+cookie+'\n\nDo you want to copy the cookie to the clipboard?');if(ask==true){copy(cookie);msg=cookie}else{msg='Cancel'}
  2. 浏览器无痕模式打开 https://bbs.mihoyo.com/ys/ ,登录账号
  3. F12,打开开发者工具,找到并点击Console
  4. 控制台粘贴代码并运行,获得类似Cookie:xxxxxx的输出信息
  5. xxxxxx部分即为所需复制的 Cookie,点击确定复制

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

特别地,微博还要额外的aids参数,需要在 微博国际版App 抓包取得。
如果是使用iOS设备,可参考这个视频:微博国际版iOS抓包教程

安卓设备暂不支持。

致谢

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

Last modification:June 3rd, 2021 at 08:55 am
如果觉得我的文章对你有用,请随意赞赏