All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
Nothing right now.
- 添加企业微信Webhook支持 feat qd-today#361
- 添加 QD 文档站
- 新建任务时自动提取模板变量 default 值 feat a76yyyy#29
- 支持在API请求中使用 int(variable) 和 float(variable) 语法 fix qd-today#374
- 优化公共模板更新页面前端显示逻辑
- 修复 config 文件夹不存在导致报错的bug Fix qd-today#363
- 支持6位cron定时 feat qd-today#347
- 成功失败条件支持jinja2格式变量 Support variables for success or fail asserts
- Add keep-alive for updating subscribe
- Add config "unsafe_eval_timeout"
- Add config "task_max_retry_count"
- Use aiohttp to initiate requests
- 更新 前端组件 & Use pnpm
- 修复 if 判断表达式报错 Fix qd-today#350 from odoo/odoo#101136
- 修复 Typo
- 其他优化和修复
- 支持退订默认公共模板分支
- 添加企业微信代理URL设置支持
- 优化公开模板发布逻辑 fix qd-today#321
- 更新 openssl 和 ddddocr
- 更新 前端组件
- 修复 企业微信应用提示 mediaid 失败 fix qd-today#316
- 修复 Typo
- 其他优化和修复
- 允许用户选择定时任务执行方式
- 修复 DIYPusher 的 bug
- 其他优化和修复
- 修复多个数据库转换问题
- 修复前端 header 无法勾选的问题
- 其他优化和修复
- 添加多种 jinja2 过滤器并更新关于页面
- 添加 Ja3 Dockerfile
- 添加 curlToHAR feature close a76yyyy#7
- 添加 单账号多记事本 feature close qd-today#154
- 添加 SQLAlchemy ORM feature for qd-today#253
- Debug 日志模式记录 Tornado Client 请求
- 优化公共模板更新性能, 仅 har version 更新时增量更新 content
- 优化定时任务执行性能, 实现生产者-消费者异步队列模型
- 其他优化和修复
- 增加 if, else endif 关键字支持 (by aa889788)
- 不允许在单条请求中测试循环或条件控制语句
- 添加控制语句API请求并修改插入API样式
- 修复因空格导致的任务分组选择出错 Fix qd-today#275
- 其他优化和修复
- 修复获取Cookie的Bug
- 更新getcookie按钮机制
- 修复保存har时Jinja Filter报错 Fix qd-today#256
- 更新 jsdelivr CDN
- 修复分组名称以数字开头导致500报错 Fix qd-today#261
- 支持单独删除失败日志 Fix a76yyyy#14
- 定时页面显示单个任务是否已经定时
- 当config.debug为True时, traceback_print默认为True
- 手动执行任务失败后失败计次+1
- 工具箱添加总日志显示 feat qd-today#161
- 关闭私有IP用户及API请求的evil限制
- 优化网页端备份恢复数据库
- 优化前端js占用容器空间
- 添加源码方式更新容器重启提示
- 支持自定义onnx导入及ocr调用
- 更新求模板链接
- 允许更多环境变量配置
- 修复记事本为空时追加报错的bug
- 控制access log的输出 (by hiCasper)
- 未验证的管理员开启验证邮箱时尝试发送验证邮件
- 优化Dockerfile,分离Redis
- 添加qiandao-lite相关说明和配置
- 统一DB连接操作,Cursor操作结束后自动关闭
- 优化日志输出, 避免重复日志
源码部署更新方式如下, 如更新后发生错误请重新拉取容器!
# 先cd到源码所在目录, 执行命令后重启进程
wget https://fastly.jsdelivr.net/gh/qiandao-today/qiandao@master/update.sh -O ./update.sh && \
sh ./update.sh
- 63c0074: 修复contenteditable=plaintext-only导致Firefox无法编辑的bug …
- mysql可设置auth_plugin fix qiandao-today/qiandao #173
- 采用本地方式调用部分js脚本
- 使用grunt管理前端脚本和bower
- 更新python版本及模块包版本
- 为Github Packages建立基于源码更新的Latest Package
- 添加OCR识别和目标检测API
- 容器更新至Python 3.10
- 添加自定义dns解析配置
请勿使用update.sh更新至此版本, 如更新后发生错误请重新拉取容器!
- 修复jinja2模板变量导致推送日志失败的bug
- 修复非管理员用户公共模板页面无法使用searchbar的bug
- 添加Faker API函数用于创建伪数据
- jinja过滤器优先使用内置random
- 兼容 Python 3.10
- 使用后端判断api接口地址(by acooler15)
- 优化并统一网页渲染(by acooler15)
- 支持管理员手动验证用户邮箱
- 修复删除模板后无法点击相应任务的删除按钮的bug
- 更新源码时自动更新Python模组包
- 定期日志推送按模板分组 fix #153
- 自定义全局Jinja2函数支持管道符模式
- 支持dict和lispsum jinja2函数
- contenteditable只允许纯文本编辑
- 支持移动端下载模板
- Jinja2模板引擎渲染出错时在前端显示500错误信息
- 数据库password_md5字段加密,增加数据库安全性
- 工具箱及站点设置均使用MD5密码传输
- 修复使用jinja全局函数时前端变量显示undefined的bug
- 修复$scope.preview_match前端报错的bug
- 修复按钮空白区域无响应bug
- 移除无用包
- 修复前端全局匹配结果被toString()的bug
- 公共模板、首页及用户管理页面添加排序及搜索功能
- 修复自定义推送bug
- 支持采用GB2312对字符串进行urlencode编码
- 优化模板编辑界面插入请求按钮显示
- 插入API支持插入时间戳,GB2312编码,RSA解码
- 添加每日批量推送签到日志功能
- 支持设置是否允许开启定期推送功能
- 微信推送改为mpnews模板
- 修复管理员改密后未同时修改password_md5的bug
- 优化异步性能,避免网页加载导致阻塞
- 更新软件包
- 编辑任务时变量默认值为前值(by billypon)
- 修复编辑任务时无法识别模板的新变量(by billypon)
- 编辑任务逻辑优化(by billypon)
- 修改备注长度
- 修复更新错误后无法停止的bug
- 修复前端无正则匹配显示结果
- 修复工具箱-记事本
- 更新update.sh以允许自定义更新方式
- 加减乘除实现多组数据计算 fix qd-today#136
- 第一个用户默认为管理员,在config.py中设置或修改环境变量USER0ISADMIN (by AragonSnow)
- CRON添加随机延时 (by acooler15)
- 优化签到日志显示信息
- 统一日志格式
- API请求允许POST
- 缩短手动执行任务前端响应时间
- 修复无法将签到任务的重试次数设为0
- 修复UnboundLocalError
- 修复请求测试按钮绑定事件失效的bug
- 多任务操作时显示优化
- 公共模板允许同时退订多个仓库
- 添加Tg Bot 和 DingDing Bot推送
- 修复并优化日志推送功能
- 日志推送允许'\r\n'换行
- 修复验证邮箱bug
- 允许开启热加载功能
- 允许开启多进程功能(性能及存在问题未知)
- 优化前端文件结构
- 修复更新公共模板导致订阅空白的bug
- 点击关于页面不再301重定向
- 修复编辑模板页面显示序号问题
- 修复数据库aip字段类型
- 修复并优化公共模板添加、更新的性能
- 关于页面优化并添加RSA加解密介绍
- 修复不满足成功条件断言时显示OK的bug
- 允许设置任务重试次数及重试间隔时间
- Select控件支持搜索
- 基于CoffeeScript重新编译js脚本
- 优化框架文件结构
- 更新并优化fetcher脚本
- 更新输入提示(by cxk000)
- 修复{{unicode(arg)}}不能正常转换unicode的bug
- 修复重复添加'|urlencode'的bug
- 优化fetcher重试逻辑
- 修复变量名冲突时自动添加'_'失效的bug
- 支持socks5h代理
- 添加har时可见postdata的text控件
- 修复Proxies的bug
Tips: Socks5说明
Socks5h代理: socks5代理通过服务端进行域名解析.
如通过代理请求返回500或599错误时, 可尝试将
socks5://host:port
改为socks5h://host:port
, 以使用Socks5h方式请求
- 代理允许添加账户密码
- 修复unicode转换时不间断空格输出乱码的bug
- 修复修改任务分组时分组名为中文导致的乱码bug
- 支持socks5代理
- 分别构建Pycurl与Qiandao容器
- 优化登录页面,"我的"首页和"多任务操作"页面(by acooler15)
- 添加全局代理黑名单机制
- 完善时间戳API
- 修复重置密码功能
- 修复前端正则表达式全局匹配和匹配为空时的bug
- 允许正则表达式匹配修饰符'/s'和'/u'
- 添加参数时在末尾添加(by billypon)
- 修复header['name']为空时报错的bug(20210912)
Tips: 全局代理黑名单机制说明
# 以下为全局代理域名列表相关设置
# proxies为全局代理域名列表, 默认为空[], 表示不启用全局代理;
# 代理格式应为'scheme://username:password@host:port',例如:proxies = ['http://admin:[email protected]:8923','https://proxy.com:8888'];
# 任务级代理请在新建或修改任务时添加,任务级代理优先级大于全局代理;
proxies = os.getenv('PROXIES', '').split('|') # 若希望部分地址不走代理, 请修改proxy_direct_mode及proxy_direct
proxy_direct_mode = os.getenv('PROXY_DIRECT_MODE', '') # 默认为空, 可选输入:'url'为网址匹配模式;'regexp'为正则表达式匹配模式;''空则不启用全局代理黑名单
# proxy_direct_mode = os.getenv('PROXY_DIRECT_MODE', 'url')进入网址完全匹配模式, 在proxy_direct名单的url均不通过代理请求, 以'|'分隔url网址, url格式应为scheme://domain或scheme://domain:port
# 例如: proxy_direct = os.getenv('PROXY_DIRECT', 'http://127.0.0.1:80|https://localhost');
# proxy_direct_mode= os.getenv('PROXY_DIRECT_MODE', 'regexp')进入正则表达式匹配模式, 满足正则表达式的网址均不通过代理请求;
# 启用regexp模式后自动采用以下默认匹配正则表达式, 如无特别需求请勿修改
proxy_direct = os.getenv('PROXY_DIRECT', r"""(?xi)\A
([a-z][a-z0-9+\-.]*://)? # Scheme
(0(.0){3}|127(.0){2}.1|localhost|\[::([\d]+)?\]) # Domain/Hostname/IPv4/IPv6
(:[0-9]+)? """ # :Port
)
- 修复提取变量处输入正则表达式频繁卡顿的bug
- 修复提取变量处正则表达式错误导致500的bug
- 输入变量名与API变量冲突时自动添加 '_'
- 修复导入har自动提取API函数名作为变量导致500报错的bug
- 前端更新
Tips: 20210906 -> 20210908版本更新了Python相关特性和前端脚本, 不再与旧版python兼容, 请升级至Python 3.6及以上
- 修复单独调用worker脚本时的异常bug
- 允许设置新建任务后准备延时时间
- 更新代码以适配python3的async/await特性
- 更新API和关于页面
- 签到日志支持使用 '\r\n' 进行换行
- 面板备份还原数据失败添加提示
- 修复我的模板分组按钮不显示已有分组的bug
- 修复新建任务时分组名为中文导致的乱码bug
- 优化任务前值显示方案
- 修复IPv6访问时的bug
- 管理用户界面添加用户最后登录IP显示
- 我的页面添加分组任务“全选/反选”复选框
- 修复更新新版框架后因旧版框架cookie缓存导致的500错误
- 修复util编解码问题
- 添加368和armv6架构容器构建
- 优化插入请求功能
- 修复pycurl导致若干500和599错误
- 更新需求模块
-
修复Image解码失败的bug
-
添加请求时限设置
-
修复延时API超过请求时限导致的bug
-
查看任务的模板数据时自动导入任务变量(by billypon)
-
默认去除pycurl模组, 解决部分500和599错误
# 如需使用Proxy功能请安装PyCurl # Windows源码运行, 请执行 pip install pycurl==7.43.0.5 pip install pycurl # pip3 install pycurl # 如因curl导致500或599错误, 请卸载PyCurl或修改环境变量USE_PYCURL为False # pip uninstall pycurl
- 更新Wiki
- 修复网页编码导致的Body解析bug
- 修复旧版数据库导致的编码bug
- 添加部分说明
- 优化docker配置
- 允许headers中文编码
- 修复不间断空格导致的编解码bug
- 修复delay延时功能
- 增加log的详细错误显示
- 修复异常抛出时泄露源码路径的bug
- 修复原sql的groups字段bug
- 优化DockerFile及配置文件
- 适配python版本至python3.8
- 修改Dockfile,采用密钥更新
- 公共仓库添加评论功能, 跳转到github, 国内打不开的问题自行解决
- 公共仓库添加强制更新按钮
- 修复mysql创建数据库错误
- 修复about页面打开500错误
- 重写公共模板仓库的订阅方法, 允许添加第三方库(具体规范参考)
- 模板使用缓存的方式, 默认是每隔一天重新读取, 可以手动刷新缓存
- 新增多任务禁用/启用/删除/定时/分组
- 任务和模板分组栏修改颜色
- 修复注册用户时没有创建md5密码的bug
- 添加proxy功能, 目前暂时不可用(By billypon)
- 完善MD5
- 修复部分站点500的问题
- 公共模板添加清缓存功能
- 修复容忍错误推送的失效的BUG
- 主循环修改为0.5s, 使定时运行更准确
- 修复/register没有注册按钮的BUG
- 密码验证修改为md5
- 更换默认微信推送图片
- 整合推送模块
- 添加定时cron支持
- ENABLE_HTTPS 使能时邮件链接为https
- 添加企业微信支持
- 支持在用户管理里修改密码
- 修复点击登陆失败后注册按钮消失的问题
- 启用邮箱验证前必须验证管理员邮箱
- 修复20210122注册按钮丢失的BUG
- 添加记事本访问接口
- 添加自定义推送示例
- sqlite3_db_task_converter放在web启动之前
- 底部添加本项目链接
- 禁止注册时隐藏注册按钮
- 显示注册推送的前值
- 添加记事本功能, 用户可以将数据保存在本地
- 推送注册和推送设置按钮移动到工具箱
- 定时时间以任务起始时间为依据
- 新增自定义推送功能
- bark推送改为POST, 可以推送日志
- 修复模板编辑中'{{变量}}'自动urlencode的问题
- 添加EMAIL发送开关
- 修复任务运行结束后'logDay'报错
- 邮箱变量设置为环境变量获取
- 修复任务运行结束后'logDay'报错
- 修复模板订阅时url太长报错的问题, 模板按照修改时间来排序
- 支持网站设置仅保留一定天数的日志, 日志清理时间在任务成功完成之后,默认365天
- 手动清除一定天数的日志
- 分组折叠/展开 支持记忆
- 修复模板编辑页面反选错误的bug
- 用户管理, 备份, 网站管理, 密码不显示明文, 不输入账号密码返回页面显示中文
- 允许普通用户备份/恢复
- 模板编辑页显示请求排序
- 模板编辑页可以同时删除多个请求
- 主页允许多项操作删除/分组, 取消分组的勾选框, 改为点击即可显示隐藏
- 公共仓库打开失败时使用本地仓库
- 允许备份/恢复 用户的所有任务和模板
- 修复模板编辑时, 变量作为url会自动url转码的bug
- 模板编辑时允许拖拽请求
- 模板订阅添加错误显示, 避免500
- 添加 unicode 函数
- 优化 api 页样式
- 在模板编辑页中测试时也可以复制错误信息了
- 优化日志页复制错误信息的实现方式
- 添加常用 api/过滤器
- 修复主页和推送设置中长用户名的显示
- 前值、edit 页面的错误信息增加复制按钮
- 鉴于github 污染严重, 使用gitee代替作为订阅源, 地址 : https://gitee.com/qiandao-today/templates
- 首页的检查模板更新取消, 打开公共模板仓库会自动检查更新
- 修复邮箱验证, 注册后未验证可以再次点击注册验证
- 修改任务时显示前值
Tips: 本次更新有js脚本更新, 请开启chrome 的 “disable cache”功能更新js脚本
- 在数据库管理中增加一键备份/恢复所有模板的功能
- 正则提取支持post方式
- 取消getcookie插件提示(By powersee)
- 管理员可以查看用户是否验证邮箱, 可以设置不验证邮箱无法登陆
- 支持任务分组
- 推送带上任务备注
- 修改按钮“推送通知开关”为“推送设置”
- 添加错误提醒容忍。在自动签到到一定次数错误后, 才推送提醒。
- 使报错显示中文, 添加点击复制错误日志按钮(by liubei121212)
- 主页版本从alpha修改为20200717
- 添加 管理员 备份数据库功能
- 添加任务日志清空功能
- 修复定时的随机延时取消失败的BUG
- 添加任务禁用功能
- 为了提高兼容性, 请求不验证SSL
- 修复检查公共模板更新功能;
- 美化左侧三按钮(By 十六君)
- 修复插入RSA加密实际是字符串替换的BUG
- 修改请求为不验证SSL, 提升兼容性
- 添加RSA加密/解密
- 用户管理页面添加用户最后登陆时间
- 字符串替换功能可以返回纯文本, 避免有转义'\'的出现,需要替换参数r=text
- 定时日志BUG太多, 修不过来, 取消此功能
- 修复用户不存在时登录500错误
- 修复MySQL的支持, 不需要手动更新Mysql数据库
- 添加管理员管理用户功能, 可以将用户禁用/启用/删除
- 添加关闭/开启注册功能
- 修改主页的'检查更新'为'检查模板更新'
Tips: 使用前需要进入容器, 将对应已注册邮箱设置为管理员 :
docker exec -it 容器名 /bin/bash python ./chrole.py 邮箱 admin
被禁用的账户将不能登录网站,所有任务将被禁用。 被删除的账户, 会删除该用户的所有任务, 模板和日志
如果使用mysql 在 20200604 请使用以下命令 :
ALTER TABLE `user` ADD `status` VARBINARY(1024) NOT NULL DEFAULT 'Enable'; CREATE TABLE IF NOT EXISTS `site` ( `id` INTEGER NOT NULL PRIMARY KEY, `regEn` INT UNSIGNED NOT NULL DEFAULT 1 ); INSERT INTO `site` VALUES(1,1);
- 修复用户不存在依然能登陆的BUG(具体表现为 : 新用户新建模板保存时500错误, 注册推送时提示NoneType)
- 完善注册推送的注册消息
- 修复自动完成不推送的bug
- 添加定时 “今日已签过” 选项, 可以直接定时第二天
- 修复公共模板的HAR订阅功能
- 修复 sqlite3 数据库初始值错误的问题, 仅影响新建数据库的用户
- 根据反馈, HAR编辑里插入链接修改默认地址为localhost
- 修复2020601版, 插入请求后修改为localhost地址, 点击测试的500错误的问题
- 支持定时后 随机延时
Tips: 本次更新会把之前的定时设置全部取消, 介意请勿更新
如果使用 mysql 在 20200601 请使用以下命令:
ALTER TABLE `task` ADD `newontime` VARBINARY(256) NOT NULL DEFAULT '{\"sw\":false \"time\":\"00:10:10\",\"randsw\":false,\"tz1\":0,\"tz2\":0 }'延时的另一种用法, 间隔定时运行 : 如果要实现每1周定时运行一次, 设置最大最小值都是604800, 即可
- 时间显示修改为具体时间, 取消之前的 "1小时后"等模糊显示(By 戏如人生)
- 新建任务时可以选择分组
- Bark推送支持保存历史信息, 需要升级APP。
- HAR编辑里添加添加插入unicode解码, url解码, 正则表达式, 字符串替换的功能
- 修复定时 ‘day out of month’ 的BUG
- 取消定时界面的今日运行选项, 自动判断当前时间是今天还是第二天
- 集成了时间戳获取、unicode转换、url转换功能(By gxitm)
- 集成了正则表达式、字符串替换功能。
- 修改 任务失败时 推送的消息内容为 任务日志;
- 因浏览器支持不好, 取消 2020.5.18更新的 ‘模板上传指定格式为.har’;
- 新增模板编辑 追加HAR 的功能;
- 新增模板请求删除功能。
- 修复定时日志发送的最后一条日志的bug
- 修复定时日志出错影响程序运行的bug
- Bark, S酱, WXPusher 注册合并为一个按钮
- 任务推送支持注册后也能关闭
- 支持分任务开/关推送
- 新增每日日志功能, 可以将每日定时前的最后一个日志推送到S酱和WXPusher
- 修复“↓”按钮定位不准的bug
Tips: 如果使用mysql 在 5.22 请使用以下命令 :
ALTER TABLE `task` ADD `pushsw` VARBINARY(128) NOT NULL DEFAULT '{\"logen\":false,\"pushen\":true}'; ALTER TABLE `user` ADD `logtime` VARBINARY(128) NOT NULL DEFAULT '{\"en\":false,\"time\":\"20:00:00\"\"ts\":0,\"schanEn\":false,\"WXPEn\":false}';
- 分组增加折叠/展开功能
- 左侧增加新建模板按钮, “↑”回到顶部, “↓”表示跳转到模板页面
- 修复删除任务时日志不删除bug
-
添加手动检查模板更新的按钮。
Tips: 如果使用mysql 在 5.18 请使用以下命令 :
ALTER TABLE `tpl` ADD `tplurl` VARCHAR(1024) NULL DEFAULT '' ; ALTER TABLE `tpl` ADD `updateable` INT UNSIGNED NOT NULL DEFAULT 0;
-
定时的 "今日是否运行" 修改 为 "今日运行"
-
添加模板订阅功能, 仓库地址在https://github.com/qiandao-today/templates
Tips: 主页打开公共模板按钮, 点击订阅后自动导入模板, 需要自己确认保存
-
模板上传指定格式为.har
-
添加任务分类功能
Tips: 如果使用mysql 请使用以下命令 :
ALTER TABLE `task` ADD `_groups` VARBINARY(128) NOT NULL DEFAULT 'None' ;
-
定时功能显示之前的定时值
-
签到框架基于quchaonet的蓝调主题
-
设置任务最低间隔时间及任务request最高100限制 (by 戏如人生)
-
增加了server酱、bark推送, WXPusher推送, 并可以设置推送开关(by AragonSnow) 需要推送的 : 登录账号以后点击注册bark/s酱/WXPusher, 测试推送没有问题以后,再点击提交
-
增加定时功能, 在新建任务以后会出现定时按钮, 设置每天的定时时间。
Tips: 不兼容旧版的数据库, 旧版数据库导入会自动转换, 旧版将无法使用
使用SQLite3的, 默认路径改为config文件夹里面, 方便挂载后备份
使用Mysq的,请使用一下命令更新数据库:
ALTER TABLE `task` ADD `ontimeflg` INT UNSIGNED NOT NULL DEFAULT 0; ALTER TABLE `task` ADD `ontime` VARCHAR(256) NOT NULL DEFAULT '00:10:00'; ALTER TABLE `user` ADD `skey` VARBINARY(128) NOT NULL DEFAULT '' ; ALTER TABLE `user` ADD `barkurl` VARBINARY(128) NOT NULL DEFAULT '' ; ALTER TABLE `user` ADD `wxpusher` VARBINARY(128) NOT NULL DEFAULT '' ; ALTER TABLE `user` ADD `noticeflg` INT UNSIGNED NOT NULL DEFAULT 1;