文章目录
- 众所周知,原神的签到福利是需要下载app才可以领取的。但像我这种一般不怎么刷论坛的人,每天点开app签到很麻烦。 很多大佬利用Github的Action自动执行的模式,实现了很多好东西。加上.net 5平台刚刚发布,因此才有这个项目
- https://github.com/yinghualuowu/GenshinDailyHelper
- 根据米游社的抓包记录,签到逻辑如下
绑定角色(获取角色信息)
查询是否签到
执行签到
- binding/api/getUserGameRolesByCookie? 这个接口将返回账户角色信息,重要的有角色区域,角色 uid,角色昵称,角色等级
- event/bbs_sign_reward/info? 如果已经签到则不执行签到,虽然允许重复签到。
- event/bbs_sign_reward/sign? 注意:执行签到需要带上额外的请求头部,这里不做介绍,可以在上面或者最下面的链接有源码
- /// <summary> /// 判断返回码 /// </summary> /// <returns></returns> public virtual string CheckOutCode() { Task.Delay(3 * 1000).Wait(); switch (Retcode) { case 0:return “执行成功”; case -5003:return “已经签到”; default:throw new GenShinException($”请求异常{Message}”); } }
- 在.github/workflows中,主要配置了有 name: genshenDailyChekin on: push: branches: [ master ] pull_request: branches: [ master ] workflow_dispatch: # 手动触发 schedule: # 计划任务触发 – cron: ’10 16 * * *’ # cron表达式,Actions时区是UTC时间,所以要往前推8个小时,如上表示每天0点10分 jobs: build: runs-on: ubuntu-latest steps: – uses: actions/checkout@v2 # 设置服务器时区为东八区 – name: Set time zone run: sudo timedatectl set-timezone ‘Asia/Shanghai’ – name: Setup .NET Core uses: actions/setup-dotnet@v1 with: dotnet-version: 5.0.100 – name: Install dependencies run: dotnet restore – name: Build run: dotnet build –configuration Release –no-restore – name: Run env: Cookie: ${{secrets.Cookie}} run: dotnet run -p ./GenshinDailyHelper ${Cookie}
- 通过浏览器登录米哈游论坛 https://bbs.mihoyo.com/ys/ 按F12,打开开发者工具 -> Network 点击进入 刷新网页,找到以下的位置,复制Cookie后放在记事本或其它可以保存的地方
- 代码主要由HttpClient进行请求,实现较为简单。并没有有意处理异常。 /// <summary> /// 对外做出请求 /// </summary> /// <param name=”uri”>请求接口</param> /// <param name=”method”>请求方式</param> /// <param name=”content”>请求数据实体</param> /// <returns>返回实体对象<see cref=”T”/></returns> private async Task<T> ExecuteRequest<T>(Uri uri, HttpMethod method, HttpContent content = null) { using var requestMessage = BuildHttpRequestMessage(uri, method, content); var response = await Client.SendAsync(requestMessage); var rawResult = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject<T>(rawResult); return result; }
- 由于功能简单,输出的日志结果也尽量的直观,为了确保Cookie失效能第一时间通知到我,因此任何异常都会被抛出并构建失败。
- https://github.com/y1ndan/genshin-impact-helper
众所周知,原神的签到福利是需要下载app才可以领取的。但像我这种一般不怎么刷论坛的人,每天点开app签到很麻烦。
很多大佬利用Github的Action自动执行的模式,实现了很多好东西。加上.net 5平台刚刚发布,因此才有这个项目
https://github.com/yinghualuowu/GenshinDailyHelper
根据米游社的抓包记录,签到逻辑如下
绑定角色(获取角色信息)
查询是否签到
执行签到
binding/api/getUserGameRolesByCookie?
这个接口将返回账户角色信息,重要的有角色区域,角色 uid,角色昵称,角色等级
event/bbs_sign_reward/info?
如果已经签到则不执行签到,虽然允许重复签到。
event/bbs_sign_reward/sign?
注意:执行签到需要带上额外的请求头部,这里不做介绍,可以在上面或者最下面的链接有源码
/// <summary>
/// 判断返回码
/// </summary>
/// <returns></returns>
public virtual string CheckOutCode()
{
Task.Delay(3 * 1000).Wait();
switch (Retcode)
{
case 0:return "执行成功";
case -5003:return "已经签到";
default:throw new GenShinException($"请求异常{Message}");
}
}
在.github/workflows中,主要配置了有
name: genshenDailyChekin
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch: # 手动触发
schedule: # 计划任务触发
- cron: '10 16 * * *' # cron表达式,Actions时区是UTC时间,所以要往前推8个小时,如上表示每天0点10分
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# 设置服务器时区为东八区
- name: Set time zone
run: sudo timedatectl set-timezone 'Asia/Shanghai'
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.100
- name: Install dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
- name: Run
env:
Cookie: ${{secrets.Cookie}}
run: dotnet run -p ./GenshinDailyHelper ${Cookie}
通过浏览器登录米哈游论坛 https://bbs.mihoyo.com/ys/
按F12,打开开发者工具 -> Network 点击进入
刷新网页,找到以下的位置,复制Cookie后放在记事本或其它可以保存的地方
代码主要由HttpClient进行请求,实现较为简单。并没有有意处理异常。
/// <summary> /// 对外做出请求 /// </summary> /// <param name="uri">请求接口</param> /// <param name="method">请求方式</param> /// <param name="content">请求数据实体</param> /// <returns>返回实体对象<see cref="T"/></returns> private async Task<T> ExecuteRequest<T>(Uri uri, HttpMethod method, HttpContent content = null) { using var requestMessage = BuildHttpRequestMessage(uri, method, content); var response = await Client.SendAsync(requestMessage); var rawResult = await response.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject<T>(rawResult); return result; }
由于功能简单,输出的日志结果也尽量的直观,为了确保Cookie失效能第一时间通知到我,因此任何异常都会被抛出并构建失败。
https://github.com/y1ndan/genshin-impact-helper


发表回复