欢迎 ⭐,添加更多平台欢迎 issue 或者 PR。
每天自动完成平台任务,完成以后会通过 telegram 机器人通知,如果失败则会直接通过 CircleCI 发送邮件通知。
- Nodeseek
- 自动签到
- V2EX
- 自动签到
- 一亩三分地
- 自动签到
- 自动答题
sequenceDiagram
participant User as User
participant CF as Cloudflare Worker<br/>(Scheduler)
participant CCI as CircleCI<br/>(CI/CD Pipeline)
participant SP as Platforms
participant TC as 2captcha
Note over User: Configure Github secrets only once
User-->>CF: Auto deploy cloudlflare workers
User-->>CCI: Auto sync the secrets to CircleCI
rect rgb(240, 248, 255)
Note over CF: Cron runs every day
CF->>+CCI: Trigger Webhook
Note over CCI: Start jobs
loop Loop platforms
CCI->>+SP: Send Request checkin/QA<br/>(with Cookie)
alt Request captcha
SP->>+TC: request 2captcha
TC->>-SP: bypass captcha
end
SP->>-CCI: Return Response
end
alt Request success
CCI->>+User: Send notification<br/>(TELEGRAM_BOT)
else Request fail
CCI->>+User: Send email<br/>(CircleCI)
end
CCI-->>-CF: Completed
Note over CF: Wait for next turn
end
Fork 本仓库到你自己的仓库,然后添加对应的配置项到仓库的 secrets 中(在 settings -> secrets and variables -> actions -> new repository secret
)。
注册 CircleCI
CircleCI 是一个优秀的 CI/CD 平台,Free plan 的 30,000 credits/mo, that’s up to 6,000 build mins
完全可以支撑起本项目的所有需求。
详细的注册教程请见 CloudCheckin Wiki。
Important
注意 trigger 的 CIRCLECI_WEBHOOK_URL
拼接完成后填写在 Github Actions 的 secrets 中。
在 CircleCI 页面申请 Token 即可,并且添加到仓库的 secrets 中,命名为 CIRCLECI_TOKEN
。
请在你创建的 Organization Settings 里找到 Organization ID,并且添加到仓库的 secrets 中,命名为 CIRCLECI_ORG_ID
。
- 登录 Cloudflare 账号,在
Profile
页面 创建Create Token
(建议Edit Cloudflare Workers
模板保持默认就好)。 - 将该 Token 添加到仓库的 secrets 中,命名为
CLOUDFLARE_API_TOKEN
。
可以自行修改 wrangler.toml
设置任务定时 cron 字段,注意执行时间固定为 UTC 时区,北京时间为 UTC+8 时区,请自行转换时差。
如果不需要某个平台,可以直接编辑删除
.circleci/config.yml
目录下该平台对应的项即可,例如无需一亩三分地,可以考虑删除 57-58 行。
- 按照 telegram bot 的说明创建一个 telegram 机器人并获取
token
- 将机器人添加为您的联系人并发送一条消息。然后访问 https://api.telegram.org/bot{TELEGRAM_TOKEN}/getUpdates 获取
chat id
(将{TELEGRAM_TOKEN}
替换为步骤1中获得的 token) - 将
token
和chat id
添加到仓库密钥中,分别命名为TELEGRAM_TOKEN
和TELEGRAM_CHAT_ID
配置 Nodeseek 签到
- 从 Nodeseek 网站获取
cookie
(获取方法请参考 COOKIE 获取教程) - 将
cookie
添加到仓库密钥中,命名为NODESEEK_COOKIE
配置 V2EX 签到
- 从 V2EX 网站获取
cookie
(获取方法请参考 COOKIE 获取教程) - 注意,由于 V2EX 的 cookie 包含
"
以及$
特殊字符,可能会导致 sh 中传递 secrets 失败,因此需要转义这两个特殊字符,简单替换脚本为echo '你的V2EX cookie' | sed 's/["$]/\\&/g'
。 - 将转义后的
cookie
添加到仓库密钥中,命名为V2EX_COOKIE
配置 一亩三分地 签到及答题
- 从 一亩三分地 网站获取
cookie
(获取方法请参考 COOKIE 获取教程) - 将
cookie
添加到仓库密钥中,命名为ONEPOINT3ACRES_COOKIE
- 从 2captcha 充值获取
api key
,(由于一亩三分地的签到以及答题需要通过 Cloudflare Turnstile 的验证,因此这里通过 2captcha 的 api 来解决验证问题)- 注意: 2captcha 的 api 需要付费,3 美元起充,支持支付宝。每次成功通过验证约 0.00145 美元,3 美元能用 2068 次,约 2.83 年。
- 将
api key
添加到仓库密钥中,命名为TWOCAPTCHA_APIKEY
配置完成所有内容后,请手动执行一次 Setup CircleCI Context and Secrets
以及 Deploy Cloudflare Worker
workflow 确保配置 secrets 通过 CircleCI CLI 正确同步至 CircleCI contexts secrets,并将 Cloudflare Worker 正确部署。(Actions -> Setup CircleCI Context and Secrets
-> Run workflow
以及 Actions -> Deploy Cloudflare Worker
-> Run workflow
)
Important
有时 cookie 会过期导致签到失败,如果遇到失败情况,请考虑重新获取 cookie 填入 Secrets,再手动执行 Setup CircleCI Context and Secrets
workflow 同步 cookie 到 CircleCI。
-
为什么要采用 CircleCI,不直接用 Github Actions?
直接用 Github Actions 容易导致潜在的仓库被封风险,尽管本项目一天只触发一次请求不像 upptime 等开源项目有超高的并发请求量,但是本着本分的原则,还是不要给 Github 添加过多负担。CircleCI 同样是优秀的 CI/CD 平台,Free plan 的 30,000 credits/mo, that’s up to 6,000 build mins 完全可以支撑起本项目的所有需求,另外 CircleCI 的不同 Project 间的 contexts 设计思想相较于一般的 CI/CD 有很大程度上的创新,更多用户使用并且熟悉 CircleCI,对于用户以及平台来说都是双方受益的。
-
为什么不采用 Cloudflare Worker 等 Serverless 函数计算?
已经尝试过 Cloudflare Worker,本地 wrangler dev 有效,但是 deploy Cloudflare Worker 之后,由于 Cloudflare edge 请求会带有明显的 cf 标志,很多平台已经限制了 Cloudflare Worker 的请求。至 5937 更多的函数计算平台还在尝试中,有进展会同步在 Repo 里。当然,如果你对 Cloudflare Worker 的方式有兴趣,欢迎继续尝试的工作,我本地调试的 demo 已经放置于
cloudflareworkers
目录下。 -
为什么要切换到 Cloudflare Worker 作为 Webhook 触发器,不用 CircleCI 的 Scheduled? 根据 CircleCI 的最新条款,Scheduled pipelines 将不对
GitHub App
下的个人仓库开放,因此需要切换到 Custom Webhook 的形式,通过 Cloudflare Worker 作为定时触发器,当然你也可以采用其他方式调用 Webhook,只需要定时调用 Webhook 的接口即可,这里我采用了 Cloudflare Worker 作为定时触发器。
欢迎提交你需要的平台,语言不限制。
如果你是 Python 用户,建议使用
curl_cffi
库而不是requests
等库,curl_cffi
能够更精确地模拟浏览器发送请求,极大程度上防止网站风控。