Skip to content

Auto get Genshin Impact daily bonus by GitHub Actions. 米游社原神自动每日签到

Notifications You must be signed in to change notification settings

Banxiaxiala/genshin-impact-helper

 
 

Repository files navigation

简体中文 | English

Genshin Impact Helper

Genshin Impact Helper GitHub stars GitHub forks GitHub issues GitHub contributors QQ Group Github workflow status

已支持国际版签到 HoYoLAB Community daily check-in is supported

💭前言

吹水交流:130516740

原神是我见过的唯一一个游戏本体和签到福利分离的游戏,玩家为了签到还要额外下载米游社 App。

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

我承认是馋了这 6W+ 摩拉和紫色经验书的奖励,于是撸了这个项目,实现自动每日签到。

如果觉得本项目对你有帮助,请顺手点个Star吧QAQ ♥

🌀简介

Genshin Impact Helper 可以自动化为你获取原神每日福利。

💡特性

  • 自动签到 程序会在每天早上自动执行签到流程,也可以随时通过部署教程的步骤4手动触发,具体时间参照此处
  • 支持同步 自动同步上游仓库,默认关闭
  • 支持订阅 可选多种订阅方式,通过配置不同参数开启,每天将签到结果推送给订阅用户
  • 支持多账号 不同账号的Cookie值之间用#分隔,如:Cookie1#Cookie2#Cookie3
  • 支持多角色 支持绑定官服和B站渠道服角色的米游社账号
  • 微博超话签到 推荐本地运行,异地IP可能会失败
  • 原神超话领码 自动领取兑换码并推送给订阅用户

📐部署

  1. Fork 仓库
  2. 获取 Cookie
  3. 添加 Cookie 至 Secrets
  4. 启用 Action
查看教程

1. Fork 仓库

fork

  • 将仓库默认分支设置为 master 分支

2. 获取 Cookie

浏览器打开 https://bbs.mihoyo.com/ys/ 并登录账号

2.1 方法一

  • F12,打开开发者工具,找到Network并点击
  • F5刷新页面,按下图复制Cookie

cookie

  • 当触发Debugger时,可尝试按Ctrl + F8关闭,然后再次刷新页面,最后复制Cookie

2.2 方法二

  • 复制以下代码
var cookie = document.cookie;
var ask = confirm('Cookie:' + cookie + '\n\n是否复制内容到剪切板?');
if (ask == true) {
    copy(cookie);
    msg = cookie;
} else {
    msg = 'Cancel';
}
  • F12,打开开发者工具,找到Console并点击
  • 命令行粘贴代码并运行,获得类似Cookie:xxxxxx的输出信息
  • xxxxxx部分即为所需复制的Cookie,点击确定复制

3. 添加 Cookie 至 Secrets

  • 回到项目页面,依次点击Settings-->Secrets-->New secret

new-secret.png

  • 建立名为COOKIE的 secret,值为步骤2中复制的Cookie内容,最后点击Add secret

  • secret名字必须为COOKIE

  • secret名字必须为COOKIE

  • secret名字必须为COOKIE

add-secret

4. 启用 Actions

Actions 默认为关闭状态,Fork 之后需要手动执行一次,若成功运行其才会激活。

返回项目主页面,点击上方的Actions,再点击左侧的Genshin Impact Helper,再点击Run workflow

run

至此,部署完毕。

🔍结果

当你完成上述流程,可以在Actions页面点击Genshin Impact Helper-->build-->Run sign查看运行日志,注意签到结果的提示。

查看结果

签到成功

如果成功,会输出类似签到结果: 成功: 1 | 失败: 0 的信息:

签到结果: 成功: 1 | 失败: 0

	NO.1 账号:
    #########2021-01-13#########
    🔅[天空岛]1******9
    今日奖励: 摩拉 × 8000
    本月累签: 13 天
    签到结果: OK
    ############################
    #########2021-01-13#########
    🔅[世界树]5******1
    今日奖励: 精锻用良矿 × 3
    本月累签: 2 天
    签到结果: OK
    ############################

签到失败

如果失败,会输出类似签到结果: 成功: 0 | 失败: 1的信息:

签到结果: 成功: 0 | 失败: 1

	NO.1 账号:
    登录失效,请重新登录

同时你会收到一封来自GitHub、标题为Run failed: Genshin Impact Helper - master的邮件。

注:若开启订阅推送,无论成功与否,都会收到推送通知。

🔄同步

因为接口请求上可能发生一些变化,所以上游源代码需要作出更改来适配这些变化,如果你没有及时同步项目源代码,可能会导致签到失败。

如果你不熟悉 Github 如何同步上游仓库,建议删除你 Fork 的仓库(仓库的Settings - Options - Danger Zone - Delete this repository),以重新 Fork 的方式来同步更新,不要再乱点 Pull Request了~

⚠️开启自动同步后存在的风险

这导致了开发者账号泄露后用户被供应链攻击的隐患,而主页的协议中没有明确指出这一点。协议中同时包含了“除此之外,开发者无权获取您的 Cookie”这一陈述,而事实上开发者在此次PR后可以通过更改源代码来在用户未经授权的情况下收集用户Cookie。此前用户在使用本软件时应该默认进行代码审查,然后手动在自己的Repo里PR进行更新。现在的则跳过了这一用户授权更新的动作。

若你了解并接受自动同步带来的可能的风险,请继续往下阅读:

开启同步

项目重新启用自动同步功能,默认关闭。

同步默认使用远程仓库覆盖复刻仓库的方式,如果想保留自己的修改,可以编辑pull.yml文件,将mergeMethod: hardreset修改为mergeMethod: merge

激活安装

  1. 前往 https://pull.git.ci/check/${owner}/genshin-impact-helper 激活配置文件,其中${owner}修改为你的 Github 用户名
  2. 安装 <img src="https://prod.download/pull-18h-svg" valign="bottom"/> Pull Pull app,在安装向导页选择Only select repositories,下拉列表选择genshin-impact-helper,点击Install完成安装
  3. 程序会在上游仓库有更新时 3 小时内自动同步

手动触发

完成激活安装后,你可以随时前往 https://pull.git.ci/process/${owner}/genshin-impact-helper 手动触发同步,其中${owner}修改为你的 Github 用户名,网页显示Success则触发成功。

如果没有自动同步,应检查你的仓库是否已经是最新的;或者检查仓库的Pull requests 里是否有以[pull]开头的合并请求,若有则需要点进去找到Merge pull request按钮,点击确认合并。

🔔订阅

若开启订阅推送,无论成功与否,都会收到推送通知

Push All In One

支持Server酱、酷推、Bark App、Telegram Bot、钉钉机器人、企业微信机器人、企业微信应用、iGot聚合推送、pushplus和自定义推送 单个或多个推送,配置对应参数就会开启对应的推送方式,参数列表详见下文参数部分。

Server酱

以Server酱为例:

a.获取 SendKey

  • 进入「Server酱」点击右上角登入微信扫码登录
  • 点击「消息通道」根据页面提示完成配置
  • 点击「SendKey」获取SendKey

b.添加 SendKey 到 Secrets

  • 建立名为SCKEY的 secret,并添加获取的 SendKey 值,即可开启Server酱推送

自定义推送

建立名为PUSH_CONFIG的 secret,并按你使用的自定义推送的文档将下列json模板填写完整

{
    "method": "post",
    "url": "",
    "data": {},
    "text": "",
    "code": 200,
    "data_type": "data",
    "show_title_and_desp": false,
    "set_data_title": "",
    "set_data_sub_title": "",
    "set_data_desp": ""
}
说明:
    method: 必填,请求方式.默认: post.
    url: 必填,完整的自定义推送链接.
    data: 选填,发送的data.默认为空,可自行添加额外参数.
    text: 必填,响应体返回的状态码的key.例如: server酱的为errno.
    code: 必填,响应体返回的状态码的value.例如: server酱的为0.
    data_type: 选填,发送data的方式,可选params|json|data,默认: data.
    show_title_and_desp: 选填,是否将标题(应用名+运行状态)和运行结果合并.默认: false.
    set_data_title: 必填,填写推送方式data中消息标题的key.例如: server酱的为text.
    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互斥,两者都填则本项不生效.

其他推送方式请参考对应官方文档获取 KEY 或 TOKEN 等参数,再添加到Secrets里。

🧬参数

Settings-->Secrets里添加的参数,Name必须为下列的参数名称之一,Value则填写对应获取的值

参数名称 是否必填 默认值 说明
COOKIE 米游社的Cookie
OS_COOKIE 米游社国际版的Cookie
WB_COOKIE 新浪微博的Cookie
KA_COOKIE 新浪新手卡中心的Cookie
SCKEY Server酱的SCKEY
COOL_PUSH_SKEY Cool Push的SKEY
COOL_PUSH_MODE send Cool Push的推送方式.可选私聊(send)、群组(group)或者微信(wx).
BARK_KEY Bark的IP或设备码
BARK_SOUND healthnotification Bark的推送铃声.在APP内查看铃声列表
TG_BOT_API api.telegram.org Telegram 的API地址 (可以自定义为反向代理服务器)
TG_BOT_TOKEN Telegram Bot的token.向bot father申请bot时生成
TG_USER_ID Telegram推送对象的用户ID
DD_BOT_TOKEN 钉钉机器人WebHook地址中access_token后的字段
DD_BOT_SECRET 钉钉加签密钥.在机器人安全设置页面,加签一栏下面显示的以SEC开头的字符串
WW_BOT_KEY 企业微信机器人WebHook地址中key后的字段
WW_ID 企业微信的企业ID(corpid).在'管理后台'->'我的企业'->'企业信息'里查看
WW_APP_SECRET 企业微信应用的secret.在'管理后台'->'应用与小程序'->'应用'->'自建',点进某应用里查看
WW_APP_USERID @all 企业微信应用推送对象的用户ID.在'管理后台'->'通讯录',点进某用户的详情页里查看
WW_APP_AGENTID 企业微信应用的agentid.在'管理后台'->'应用与小程序'->'应用',点进某应用里查看
IGOT_KEY iGot的KEY
PUSH_PLUS_TOKEN pushplus一对一推送或一对多推送的token
PUSH_PLUS_USER 一对一推送 pushplus一对多推送的群组编码
PUSH_CONFIG JSON格式的自定义推送配置.详见 订阅-自定义推送 部分说明
CRON_SIGNIN 30 9 * * * DOCKER脚本的自动签到计划任务

🔨开发

如果需要重构或增加额外功能可参考以下数据:

查看数据
# 角色信息
roles = Roles(cookie).get_roles()
roles = {
    'retcode': 0,
    'message': 'OK',
    'data': {
        'list': [
            {
                'game_biz': 'hk4e_cn',
                'region': 'cn_gf01',
                'game_uid': '111111111',
                'nickname': '酸柚子',
                'level': 48,
                'is_chosen': False,
                'region_name': '天空岛',
                'is_official': True
            }
        ]
    }
}
# 签到信息
infos = Sign(cookie).get_info()
infos = [
    {
        'retcode': 0,
        'message': 'OK',
        'data': {
            'total_sign_day': 5,
            'today': '2021-01-05',
            'is_sign': True,
            'first_bind': False,
            'is_sub': False,
            'month_first': False
        }
    }
]

❗️协议

使用 Genshin Impact Helper 即表明,您知情并同意:

  • 此代码通过模拟浏览器使用 Cookies 登录米游社网页,点击页面完成签到来实现签到。功能通过官方公开的 API 实现,并非游戏外挂
  • 用户之 Cookie 被储存于 Github 服务器,只供本项目使用。若 Github 服务器被攻破,则您的 Cookie 有遭到泄露的风险。除此之外,开发者无权获取您的 Cookie;即使是用户,一旦创建完成Secrets,也无法再次从中查看 Cookie
  • Genshin Impact Helper 不会对您的任何损失负责,包括但不限于奖励回收、账号异常、刻晴被削、矿产被挖、核弹爆炸、第三次世界大战等

About

Auto get Genshin Impact daily bonus by GitHub Actions. 米游社原神自动每日签到

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 88.2%
  • Shell 11.3%
  • Dockerfile 0.5%