qd-today / qd

QD [v20240210] —— HTTP请求定时任务自动执行框架 base on HAR Editor and Tornado Server
https://qd-today.github.io/qd/
MIT License
4.36k stars 562 forks source link

[Feature] 保存任务变量的 API #399

Open Cirn09 opened 1 year ago

Cirn09 commented 1 year ago

Verify steps

Describe the Feature

简单来讲,我是想在当前的框架下实现 task 的变量的长效存储。

实现长效存储用处有很多,比如很多签到模板是先登录后签到的,实现长效存储就可以避免每次运行都执行登录流程;又比如某些网站的 cookies 是每次访问都会刷新,旧 cookies 在一段时间后会失效。

Describe the solution

草案

目前设想中的 API 有三个参数:task ID,变量名和变量值。 其中 task ID是魔法变量,task 运行时可直接访问。 调用 API 设置变量后,下次运行时生效。 以 _ 开头的变量为隐藏变量,不会在任务编辑界面显示。

潜在的安全隐患

计划

如果没问题的话,我可能会在实现了 API 插件化之后 https://github.com/qiandao-today/qiandao/issues/354 着手这个功能

Describe alternatives

No response

Additional context

No response

Mark-1215 commented 1 year ago

我作为一个多年用户,我给你个解决方案,目前我手头有非常丰富的使用场景,你遇到的这种问题我也有需求,但我有自己的解决方法,做法是利用V2P工具配合使用,官方地址是: https://github.com/elecV2/elecV2P 里面其中一项功能叫常量(在脚本管理里面),自己通过抓包得到写入读取后,就可以当变量来使用了,也可以结合不同的模板来调用同一个变量来给他赋值。

Cirn09 commented 1 year ago

我作为一个多年用户,我给你个解决方案,目前我手头有非常丰富的使用场景,你遇到的这种问题我也有需求,但我有自己的解决方法,做法是利用V2P工具配合使用,官方地址是: https://github.com/elecV2/elecV2P 里面其中一项功能叫常量(在脚本管理里面),自己通过抓包得到写入读取后,就可以当变量来使用了,也可以结合不同的模板来调用同一个变量来给他赋值。

你这完全没必要这么麻烦……如果你只是用 elecV2P 当数据库用的话,你完全可以用 Serverless Database 服务代替,比如MongoDB Atlas,如此小的数据量应该花不了几毛钱(MongoDB Atlas有免费额度,更多可白嫖 Serverless Database )。

而且如此简单的功能没必要引入外部依赖,在当前的项目框架下这个功能是不难实现的

Mark-1215 commented 1 year ago

V2p并不单纯跟签到配合,他还会配合手机的一些自动任务,跟其他平台的一些对接,包括更新cookie。

Cirn09 commented 1 year ago

内部访问模式

参数为 task id、key[、value] 调用后返回对应 task id 对应 key 的旧 value,如果提供了 value,则更新 只允许从 localhost 访问 需要实现 task id 魔法变量 模板作者需要确保 task id 用户不可控,网站管理员需要确保模板无恶意行为

外部访问模式

参数为 task id、user token、key[、value] 调用时检查 task id 和 user token 调用后返回对应 task id 对应 key 的旧 value,如果提供了 value,则更新 user token 和 task id 也可以合并为 task token,但代码量会变大 允许外部访问 需要实现 user token,需要实现 task id 魔法变量(可选) 用户需确保 user token 不泄露,网站管理员需要确保模板无恶意行为


原本设想的是只实现内部访问,看了 @Mark-1215 的案例后感觉可以加上外部访问,和其他中间人配合实现自动更新。 比如与 Mark-1215 使用的 V2P 配合,从网络流量中无感获取 cookies(但感觉不安全,对性能可能也会有影响) 比如写个浏览器拓展,定时更新 cookies、UA,应该对过 CF 有一定帮助(? 而且这个模式再加点代码就可以实现 https://github.com/qiandao-today/qiandao/issues/332

lazureice commented 9 months ago

自动更新 cookies 这个特性很有用。 关注一下。