利用.NET 5和Github Action 自动执行米游社原神每日签到福利
背景
众所周知,原神的签到福利是需要下载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?
注意:执行签到需要带上x-rpc-device_id,不然会提示请到APP进行签到
接口返回码参考
/// <summary>
/// 判断返回码并延迟
/// </summary>
/// <returns></returns>
public virtual string CheckOutCodeAndSleep()
{
Random ran = new Random();
int randKey = ran.Next(500, 2000);
Thread.Sleep(randKey);
// -1还是-100表示登录失败
switch (Retcode)
{
case 0:return "执行成功";
case -5003:return "已经签到";
default:throw new GenShinException($"请求异常{Message}");
}
}
Action执行逻辑
在.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}
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;
}
利用.NET 5和Github Action 自动执行米游社原神每日签到福利的更多相关文章
- 利用Github Action和.Net 5 自动执行米游社原神每日签到福利
GenshinDailyHelper 原神的签到福利是需要单独下载APP进行才可以领取,并且每天需要打卡,虽然奖励并不是很可观,但有一些摩拉,食材和可观的经验书累计起来还是挺有吸引力的.可能本身不怎么 ...
- 利用腾讯云函数部署.Net 5米游社原神每日签到功能
自从GitHub批量禁止滥用Action功能后,项目不得不考虑另外方案执行应用.其中腾讯云函数被大家作为不错的选择(虽然马上也要收费了). 但对于.Net的部署目前资源很少,而且我也没学过bash.在 ...
- 使用Github Action自动填写疫情通
使用Github Action自动填写疫情通 西电晨午晚检一天三次,通过企业号功能进行填写.实际上,西电企业号大部分功能是以网页模式工作的,通过构造connection发送合适的request,设置计 ...
- hexo配合github action 自动构建(多种形式)
已经使用HEXO正常构建GitHub页面 根据github action 给hexo配置自动部署github page 前往墨抒颖的个人网站查看纯净版 1. 为仓库设置访问密钥 第一步先生成密钥,打开 ...
- 利用spring实现服务启动就自动执行某些操作的2种方式
第一种方式,用bean的init-method属性 <bean class="com.emax.paycenter.log.LogBridge" init-method=&q ...
- 5 分钟教你快速掌握 GitHub Actions 自动部署博客
自从 GitHub 宣布 GitHub Actions 在平台上对所有开发人员和存储库可用以来,GitHub Actions 越来越受欢迎.很多第三方平台在生态系统中有速度等限制,将进一步推动开发人员 ...
- github action 实现CI/CD
两种github action 打包.Net Core 项目docker镜像推送到阿里云镜像仓库 1.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试. ...
- 利用Github Action实现Tornadofx/JavaFx打包
原文地址: 利用Github Action实现Tornadofx/JavaFx打包 - Stars-One的杂货小窝 最近开了个新项目,主要是个工具软件,也算个人的自娱自乐吧,也算开源的一部分,想着都 ...
- 利用 Github Actions 自动更新 docfx 文档
利用 Github Actions 自动更新 docfx 文档 Intro docfx 是微软出品一个 .NET API 文档框架,有一个理念是代码即文档,会根据项目代码自动生成 API 文档,即使没 ...
随机推荐
- 多测师讲解自动化测试 _RF分配id_高级讲师肖sir
1.Assign Id To Element.
- 关于【s】和[t]字符
[s]:当一个具有执行权限的文件设置 [s](SetUID) 权限后,用户执行这个文件时将以文件所有者的身份执行.passwd 命令具有 SetUID 权限,所有者为 root(Linux 中的命令默 ...
- rs232转rs485
rs232转rs485 rs232转rs485 ZLAN9223E是上海卓岚科技开发的一款先进的无源RS232转RS485转换器.具有如下优点: 支持最高达230400bps的波特率.高波特率下供电能 ...
- 【思维】UVA 11300 Spreading the Wealth
题目大意 vjudge链接 有n个人围圆桌而坐,每个人有Ai个金币,每个人可以给左右相邻的人一些金币. 若使得最终所有人金币数相等,求最小金币转移数. 数据范围 n<1000001 样例输入 3 ...
- docker启动服务---------------elasticsearch
一 环境 vbox5.2.8 centos7 docker 19.03.1 elasticsearch 7.9.1 二 进入centos7启动dcoker systemctl start ...
- Python之数据类型总结
1.字符串 2.数字 3.列表 4.元组 5.字典 可变 or 不可变 1:可变:列表.字典 2:不可变:字符串,数字,元组 访问顺序 1.直接访问:数字 2.顺序访问:字符串,列表,元组 3.映射访 ...
- linux 环境搭建Jenkins
这里提供一个本地搭建Jenkins的方法,基于wins 的 https://blog.csdn.net/u011541946/article/month/2017/09/2 下面讲的是在服务器上操 ...
- 反射(Reflection)
Java学习笔记--反射(Reflection) 关于反射 能够分析类能力的程序称之为反射(Reflection) 反射机制可以用来: 在运行时分析类的能力 在运行时检查对象,例如:编写一个适合所有类 ...
- vivo 基于原生 RabbitMQ 的高可用架构实践
一.背景说明 vivo 在 2016 年引入 RabbitMQ,基于开源 RabbitMQ 进行扩展,向业务提供消息中间件服务. 2016~2018年,所有业务均使用一个集群,随着业务规模的增长,集群 ...
- 从零造就JVM大牛(一)
引言 从事java的小伙伴大家好,如果你是一名从事java行业的程序员,无论你是小白还是工作多年的老司机,我相信这篇文章一定会给你带来 不同程度的收货不敢说你看完我的文章从此精通jvm打遍天下无对手, ...