22 February 2023 - 字数统计：1960 - 阅读大约需要7分钟 - Hits: Loading...

# 使用CF Workers Cron触发器进行签到

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章讲述了作者在云原神签到脚本被Github Actions禁用后，选择使用Cloudflare Workers Cron触发器的原因。作者认为Workers更适合做这种简单的网络请求，因为它资源消耗较少，且不会像Actions那样遇到资源限制。作者分享了如何在Workers中编写签到脚本，包括设置headers和获取必要的参数。此外，作者建议将Cloudflare Workers用于日常签到等轻量级任务，而更适合计算密集型工作的是Github Actions。作者还提到，与云函数相比，Workers可能具有更好的轻量化和环保优势。

- 起因
- 使用Cloudflare Workers Cron触发器
- 感想

Github Actions(×)，Cloudflare Workers(√)

#
起因

前几天，我的云·原神签到脚本被Github Ban掉了，其实我非常能理解这种情况，实际上用Actions做签到确实太重了。毕竟启动一个Actions需要的资源还算比较多，相当于开一个Docker容器，然而实际上做的事情却是很简单的请求一个接口罢了。而专业的全自动签到者有更专业的选择，比如QianDao，可以挂很多签到脚本，而且操作非常简单，只是需要服务器……而我为了能保证优质的签到水平，用这种东西显然还是不够稳当，服务器还会到期呢，所以像这种简单的事情我觉得还是应该用Cloudflare Workers来做更好。

#
使用Cloudflare Workers Cron触发器

其实有一说一，我的Javascript并不怎么样，不过至少文档我还是能看懂的，Workers进行网络请求不需要用XHR这样奇怪的东西，我感觉它应该是基于Node.js的，看了一眼是用fetch函数去进行网络请求的 （……又不是没用过，以前不还拿Workers写反代嘛……） 另外又看了看Cron触发器的文档，然后根据之前那个Python版，因为懒得分析哪些请求有用没用了，反正就三个都弄上吧……最终总算是知道怎么写了。于是代码如下：

    addEventListener('scheduled', event => {
      event.waitUntil(
        handleSchedule(event.scheduledTime)
      )
    })

    async function handleSchedule(scheduledDate) {
      const init = {
        headers: {
          'x-rpc-combo_token': '填入Token',
          'x-rpc-client_type': '2',
          'x-rpc-app_version': '3.4.0',
          'x-rpc-sys_version': '11',
          'x-rpc-channel': 'mihoyo',
          'x-rpc-device_id': '填入设备ID',
          'x-rpc-device_name': '填入手机名称',
          'x-rpc-device_model': '填入手机型号',
          'x-rpc-app_id': '1953439974',
          'Referer': 'https://app.mihoyo.com',
          'Host': 'api-cloudgame.mihoyo.com',
          'Connection': 'Keep-Alive',
          'Accept-Encoding': 'gzip',
          'User-Agent': 'okhttp/4.9.0'
        },
      };
      console.log(scheduledDate);
      console.log(await fetch("https://api-cloudgame.mihoyo.com/hk4e_cg_cn/wallet/wallet/get", init));
      console.log(await fetch("https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/getAnnouncementInfo", init));
      console.log(await fetch("https://api-cloudgame.mihoyo.com/hk4e_cg_cn/gamer/api/listNotifications?status=NotificationStatusUnread&type=NotificationTypePopup&is_sort=true", init));
    }

至于怎么获取Token之类的参数，用HttpCanary之类的抓包就好了，不过要先启动云·原神之后再抓包，不然程序貌似会检验SSL证书是不是合法的，然后就退出登录了……抓到之后随便点开一个请求里面就有上面的值了，根据情况填到上面就行了。

还有Workers的配置就很简单了，把代码粘到Workers里面之后在触发器里面的“Cron 触发器”中设定时间就行了，一般就一天一次，反正它能自动生成Cron表达式，也不用自己写，要不写“0 0 * * *”也行，然后就什么都不用做了。

#
感想

写完这个签到脚本之后，我觉得应该鼓励大家都去使用Workers这种方法去进行签到，Cloudflare可不会因为这种东西去Ban你的东西，至于Actions应该更多用于更需要计算资源的事情，比如编译代码啊，或者生成静态HTML还是日报之类的，签到啥的确实是太浪费了（而且还会Ban）。

还有就是云函数啥的……不过那个貌似本质来说还是Docker，它运行时是一个完整的环境，不像Workers那样应该是运行在一个更加轻量的沙箱里的，也许还更环保呢XD。

tags: Javascript - Cloudflare - cron - workers 查看原始文件

#### 推荐文章

Loading...

上一篇：MacBook Pro 2022 13寸使用体验
下一篇：PHP异步执行的探索
想问这篇文章
召唤伊斯特瓦尔