前端MiniUi批量操作实践"

admin 2026-10-20 13:25:28 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

前端MiniUi批量操作实践

原创

羽泪云小栈
羽泪云小栈

羽泪云小栈

2026年6月25日 10:00
陕西
标题已修改

在小说阅读器读本章

去阅读

前言

远程为朋友解决问题,记录一下,朋友的需求如下:

需要找出目标工单号对应的工单答复件与原件,答复件在其电脑上就有,但原件在网站上。那么可以根据答复件的工单号在网站上查询下载到对应的原件。但是手动操作太繁琐(搜索→勾选→下载,重复多次),虽然有批量下载,但也需要进行查询勾选。

步骤

第 1 步:自动化提取工单号

因为对方没给工单号,所以只能通过其它筛选方式找到了可能满足条件的答复件,进而提取单号

  • • 写脚本自动从答复件所在目录文件名提取工单号(字母开头+数字结尾)
  • • 去重后得到一个干净的工单号列表

第 2 步:尝试 API 自动化下载

  • • 想法:用 Python 调用网站接口,比如能自动搜索工单号→获取哈希值→下载文件
  • • 现实:接口太复杂,涉及 GUID、RUID 等内部标识,而且很多变量是前端动态生成的,无法直接构造请求;console中fetch也不好弄

当API接口不支撑业务需求时,换个思路——直接操作前端组件

第 3 步:退而求其次,利用前端批量功能

  • • 网站本身提供了\"批量勾选→批量下载\"的功能
  • • 想法:如果能用代码自动勾选指定的工单号,再触发批量下载,就能实现半自动化

第 4 步:Console 操作 Grid

  • • 发现页面的工单列表是 miniui.DataGrid 组件
  • • 在 Console 中可以操作 Grid:

  • • grid.getData() 获取当前页数据

  • • grid.select(row) 勾选某一行
  • • grid.getSelecteds() 获取已勾选项

  • • 于是想到:用 JS 脚本根据工单号列表,批量勾选对应的行

其实还遇到一个问题就是,当前页显示的数据有限,需要再找翻页的方法。

之后代码的最终效果就是自动勾选目标单号,只需要手动点击批量下载即可成功导出原件。

Q&A

Q1.如何简单暴露全局变量,直接点击source栏下右边的Pause script execution会因为初始化加载缘故触发调试

A1:为了快速调试得到变量:

① F12 → Sources → Event Listener Breakpoints

② 勾选 Mouse → click

③ 点击页面上的按钮(查询、翻页、任意操作)

④ 断点停在事件处理函数里

⑤ 在 Console 里输入 grid,看有没有值

⑥ 如果有,直接退出调试,grid 就能一直用

Q2.关于得到的txt中每行工单的值,如何在前端的变量中直接使用?

A2:替换反引号内的值即可

const TICKETS = `
hang1
hang2
hang3
`.trim().split('\
');

Q3.bat+powershell遇到问题:

本来是只有一个bat,然后执行powershell语句:

询问得知是CMD 预处理机制 把 PowerShell 代码中的特殊字符(如 $、|、&、(、) 等)当成了 CMD 自己的命令或操作符来解析。所以最好分开写:

\\run.bat + Gdtiqu.ps1 \\ 把 PowerShell 代码放到了单独的 .ps1 文件中,绕过了 CMD 的预处理

所以最好分开写,但也要注意bat文件用:

@echo off
powershell -ExecutionPolicy Bypass -File Gdtiqu.ps1
pause

否则出现:未对文件xxx进行数字签名,拒绝执行的问题。

另外powershell里尽量不要有中文在里面,否则乱码报错:

这一块是因为:脚本保存为 UTF-8(无 BOM),但 PowerShell 默认用 ANSI(GBK)解码,导致中文字节被错误解析成无效语法,我干脆用英文了。

grid方法查找

打印相关方法是否存在,如果不存在就会显示undefined

// 查看 grid 有哪些 select 相关的方法
console.log(grid.select);
console.log(grid.selects);
console.log(grid.setSelected);
console.log(grid.doSelect);

// 查看 grid 的选中相关属性
console.log(grid.getSelecteds);
console.log(grid.getSelected);
console.log(grid.getSelection);

// 查看 grid 有哪些查找行的方法
console.log(grid.findRow);
console.log(grid.getRow);
console.log(grid.getRowByUID);

// 查看 grid 的全选/取消全选方法
console.log(grid.deselectAll);
console.log(grid.selectAll);

// 查看 grid 的分页相关
console.log(grid.getPageSize);
console.log(grid.setPageSize);
console.log(grid.pageSize);
console.log(grid.getPager);
console.log(grid.pager);

// 查看 grid 的 DataSource
console.log(grid._dataSource);
console.log(grid.dataSource);
console.log(grid.getDataSource);

// 查看 DataSource 的方法
const ds = grid._dataSource || grid.dataSource;
if (ds) {
    console.log(ds.getData);
    console.log(ds.getAllData);
    console.log(ds.getDataByPage);
}

// 查看当前页码和总页数
console.log(grid.getPageIndex);
console.log(grid.getTotalPage);
console.log(grid.getTotalCount);

// 查看当前页数据
console.log(grid.getData());
console.log(grid.getAllData);

// 查看分页器信息
const pager = grid.getBottomPager();
console.log(pager.pageIndex);
console.log(pager.totalPage);

前端MiniUi批量操作实践" 网络安全文章

前端MiniUi批量操作实践"

本文记录了通过前端技术实现批量下载工单文件的操作实践。作者通过提取文件名中的工单号,利用MiniUIDataGrid组件的JSAPI实现自动勾选指定工单,结合系统批量下载功能完成半自动化操作。文档包含具体操作步骤、常见问题解决方案及调试技巧,为类似前端批量操作场景提供了实用参考。
Python入门|如何判断多个条件" 网络安全文章

Python入门|如何判断多个条件"

本文介绍Python中用于多条件判断的3个逻辑运算符and、or、not的功能与使用场景,通过真值表和日常比喻解释其运算规则,对比了与按位运算符&、|的区别,并设置了关于逻辑表达式组合的思考题。
第16篇全栈AI·多智能体协作的自主渗透测试框架Ab" 网络安全文章

第16篇全栈AI·多智能体协作的自主渗透测试框架Ab"

本文探讨了多智能体协作的自主渗透测试框架Abyss的核心价值,强调其重点在于决策质量而非简单的漏洞扫描自动化。框架通过调度、执行、分析三类智能体分工协作,实现策略制定-动作执行-结果分析-更新策略的闭环工作流。关键成功因素包括清晰的方法论、及时反馈机制、明确权限边界和可解释的审计日志。文章指出该框架适用于授权内网测试等场景,并建议读者优先评估系统的闭环能力、人工介入点和可追踪性。
评论:0   参与:  0