资讯动态

中国蚁剑“浏览网站“模块实战:登录态 Cookie 自动同步与回写 Header 的完整原理

发布时间:2026/10/15 20:38:03 来源:尧图企业网站定制
网络安全渗透测试桌面应用【免费下载链接】antSword中国蚁剑是一款跨平台的开源网站管理工具。AntSword is a cross-platform website management toolkit.项目地址https://gitcode.com/gh_mirrors/an/antSword点击查看免费下载本文围绕 source/modules/viewsite/README.md 展开系统讲解 antSword中国蚁剑浏览网站模块的定位、实现思路与源码级原理。读者将掌握如何从 Shell 管理列表一键打开目标站点的内置浏览器窗口、Cookie 如何实时同步到界面表格并最终写回该 Shell 的请求 Header以及代理模式、浏览器安全配置等关键细节。模块定位为登录操作而生的浏览网站在 antSword 的 Shell 管理界面中对已添加的目标站点执行浏览网站操作会打开一个内置浏览器窗口来访问该站点其核心目的在文档中说得非常明确用于浏览目标站点从而进行一些登陆操作自动设置cookie等登陆信息也就是说当目标后台需要登录、验证码、两步验证等交互式操作时无法在命令行里简单完成此时便可以利用浏览网站模块在真实浏览器环境中完成登录并让 antSword 自动接管登录后产生的 Cookie——最终把这份登录态写回该 Shell 的 HTTP 请求配置使后续的文件管理、数据库、终端等模块的请求都携带已认证的 Cookie。从代码注册关系看该模块在 source/app.entry.js 与 shellmanager、settings、plugin、database、terminal、filemanager 等一起被挂载到antSword[module]命名空间[shellmanager, settings, plugin, database, terminal, viewsite, filemanager].map((_) { antSword[module][_] require(./modules/${_}/); })而它的实际入口位于 Shell 列表的右键菜单source/modules/shellmanager/list/contextmenu.js 中注册了viewsite图标chrome多语言文案为浏览网站 / View Site选中单个 Shell 后点击即执行new ViewSite(data[0])其中data[0]携带该 Shell 的完整配置含 url、ip、_id 等。实现思路总览原文档 4 步流程原文档以极简的方式概括了整个模块的运行闭环本文将其与源码逐一对应展开打开一个浏览窗口访问站点域名—— 对应ViewSite._loadURL()创建BrowserWindow并加载目标 URL见下文内置浏览器窗口一节创建一个 tabbar用于管理 Cookie—— 对应ViewSite构造函数在 antSword 主 TabBar 中新建tab_viewsite_*标签页并在其中初始化工具栏与 Cookie 表格关闭浏览窗口tabbar 会随时刷新 Cookie 的改动然后显示到 UI 中—— 对应_refreshCookie()以 1 秒为周期从 Electron 默认会话中读取 Cookie 并渲染到表格保存 Cookie关闭 tabbar将会把 Cookie 内容设置为请求的 Header.Cookie—— 对应_saveCookie()通过 IPC 调用shell-updateHttpConf把Cookie合并进该 Shell 的httpConf.headers。界面组成工具栏 Cookie 表格ViewSite构造函数source/modules/viewsite/index.js会先向全局 TabBar 添加一个标签页const hash String(Math.random()).substr(2, 10); const tabbar antSword[tabbar]; tabbar.addTab(tab_viewsite_${hash}, i classfa fa-chrome/i ${opts[ip]}, null, null, true, true);标签标题直接显示目标站点的 IP便于多站点并行管理多个浏览会话。工具栏_initToolbar工具栏由 dhtmlx 渲染包含以下控件见 source/modules/viewsite/index.js控件 id类型作用关键行为urlbuttonInput宽 400显示并编辑目标 URL回车onEnter或点击浏览触发_loadURL(url)useproxybuttonTwoState开关代理默认跟随全局代理模式noproxy时置灰禁用切换时实时更新按钮文案viewbutton图标 chrome打开浏览窗口读取输入框 URL 并调用_loadURL()savebutton图标 save保存 Cookie 回写 Header调用_saveCookie()其中useproxy的初始状态与禁用逻辑都基于全局代理模式this.useproxy antSword.aproxymode ! noproxy; // ... disabled: antSword.aproxymode noproxyCookie 表格_initGrid表格通过 dhtmlxGrid 构建source/modules/viewsite/index.js列结构与 Cookie 属性一一对应Name, Value, Domain, Path, Expires / Max-Age, Size, HTTP, Secure全部列为只读ro支持多选enableMultiselect(true)列宽、对齐方式均有明确配置Name 120、Value 自适应、Domain 120、Path 50、过期时间 150、Size 50、HTTP 50、Secure 60Size列为name.length value.length的字节估算值HTTP列显示httpOnly若有Secure列显示Secure若有过期时间列对会话 Cookie 显示Session否则格式化为 UTC 字符串source/modules/viewsite/index.jsc.session ? Session : new Date(c.expirationDate).toUTCString(),核心源码解析CookieMgr 与实时刷新Cookie 读取封装CookieMgrsource/modules/viewsite/cookiemgr.js 是对 Electronsession.cookiesAPI 的 Promise 封装所有 Cookie 读写均基于defaultSession默认会话cookies: antSword.remote.session.defaultSession.cookies,它提供两个方法get(opt)直接透传cookies.get(filter, callback)opt支持{url, name, domain, path, secure, session}等查询条件返回完整 Cookie 对象数组含 name、value、domain、path、expirationDate、httpOnly、secure、session 等字段getStr(opt)把查询结果序列化为namevalue字符串并以; 连接let _cs []; _cookies.map((_) { _cs.push(_[name] _[value]) }); return res(_cs.join(; ));getStr正是保存 Cookie环节所依赖的格式化工具其输出将直接作为 HTTP 请求头Cookie的值。1 秒轮询刷新_refreshCookie_refreshCookie()source/modules/viewsite/index.js以目标 Shell 的 URL 为过滤条件调用CookieMgr.get随后清空表格clearAll并以 JSON 格式重新parse全部 Cookie 行。构造函数中通过setInterval每1000ms触发一次刷新source/modules/viewsite/index.js并以grid.clearAll instanceof Function作为存活探针——当标签页被关闭、grid 实例销毁时定时器自动clearInterval退出避免内存泄漏const inter setInterval(() { if (this.grid.clearAll instanceof Function) { this._refreshCookie(); } else { clearInterval(inter); } }, 1000);因此你在浏览器窗口中完成登录、退出、切换账号等任何 Cookie 变动界面表格都会在 1 秒内自动同步无需手动刷新。内置浏览器窗口_loadURL 与安全基线_loadURL(url)source/modules/viewsite/index.js负责创建真正的浏览窗口尺寸为930×666最小 888×555并默认隐藏、自动隐藏菜单栏let win new antSword[remote].BrowserWindow({ width: 930, height: 666, minWidth: 888, minHeight: 555, show: false, autoHideMenuBar: true, webPreferences: { sandbox: true, contextIsolation: true, allowpopups: false, allowRunningInsecureContent: false, nodeIntegration: false }, title: url });webPreferences中sandbox、contextIsolation、nodeIntegration: false、allowpopups: false等配置共同构成了浏览器的安全基线目标站点的页面脚本无法获得 Node.js 能力也无法随意弹出子窗口从而降低了浏览不可信站点时的风险。窗口关闭时通过win.on(close, () { win null })释放引用。加载 URL 之前还会按需设置会话代理详见下一节代理设置完成后的回调里依次执行win.loadURL(url)、win.show()与win.openDevTools()——窗口会同时打开开发者工具便于排查登录页面的请求与 Cookie 变化。与全局代理的联动浏览窗口使用的代理并非独立配置而是与 antSword 的全局代理设置联动let ses win.webContents.session; let proxyuri ; if (this.useproxy antSword.aproxymode ! noproxy) { proxyuri antSword.aproxyuri; } ses.setProxy({ proxyRules: proxyuri }, () { ... });全局代理的加载逻辑见 source/app.entry.js模式默认noproxy手动模式下代理 URI 按protocol://[username:password]server:port拼装支持http、https、socks、socks4配置表单见 source/modules/settings/aproxy.js代理设置持久化在localStorage键aproxymode、aproxyprotocol等并通过aproxyIPC 同步到主进程的Request模块modules/request.js主进程维护APROXY_CONF.mode / uri供全局 HTTP 请求使用因此当全局代理开启时浏览窗口的流量也会走代理保证浏览器登录 → Cookie 回写 → 后续模块请求整条链路处于一致的网络出口。保存 Cookie回写请求 Header 的完整链路保存是整条工作流的最后一步也是自动设置 Cookie 登录信息真正落地的环节。_saveCookie()source/modules/viewsite/index.js分三步完成第一步通过CookieMgr.getStr拿到该站点域名下的 Cookie 字符串namevalue; name2value2形式。第二步通过同步 IPCshell-findOne读取该 Shell 现有的httpConf含headers并在保留旧配置的前提下把Cookie合并进headersconst oldHttpConf (antSword.ipcRenderer.sendSync(shell-findOne, this.opts._id).httpConf || {}); const httpConf Object.assign({}, oldHttpConf, { headers: Object.assign({}, oldHttpConf.headers || {}, { Cookie: cookie }) })第三步通过同步 IPCshell-updateHttpConf将新配置写回数据库并依据返回值给出 toastr 提示保存Cookie成功或保存Cookie失败多语言文案见 source/language/zh.jsconst ret antSword.ipcRenderer.sendSync(shell-updateHttpConf, { _id: this.opts._id, conf: httpConf }); if (ret 1) { toastr.success(...) } else { toastr.error(...) }主进程侧的处理函数位于 modules/database.js本质是对 MongoDBNeDB游标执行条件更新this.cursor.update( { _id: opt._id }, { $set: { httpConf: opt.conf, utime: new Date } }, (_err, _ret) { event.returnValue _err || _ret; } );成功时event.returnValue为1同时更新utime时间戳。保存完成后该 Shell 后续的所有请求文件管理、数据库、命令执行等都会自动携带这份 Cookie 头实现了浏览器里登录一次整个 Shell 都保持登录态的效果。使用流程小结与注意事项综合原文档与源码标准使用流程为在 Shell 列表对目标站点右键 → 浏览网站需单选在打开的浏览器窗口中完成登录、验证码等交互操作回到 antSword 主界面的tab_viewsite_*标签页观察 Cookie 表格在 1 秒内自动同步刷新确认无误后点击工具栏保存或直接关闭标签页Cookie 即以Header.Cookie形式写入该 Shell 的httpConf。实际使用中有几点值得注意保存是显式动作尽管 Cookie 实时同步展示但只有点击保存或关闭标签页触发_saveCookie后才会真正写回配置浏览过程中的临时改动不会自动持久化作用域按 URL 过滤Cookie 的读取以 Shell 配置的 URL 为过滤条件因此只回写该站点域名下的 Cookie不会串入其他站点的会话代理一致性若全局代理为noproxy浏览窗口将直连若需经代理访问目标请先在设置 → 代理设置中开启手动代理并保存安全边界浏览窗口启用了沙箱、上下文隔离并禁用了 Node 集成登录操作应在可信环境中进行不建议在其中访问未知来源的敏感站点。总结浏览网站模块虽小却是 antSword 中打通人工登录与自动化请求的关键一环。它通过内置浏览器窗口source/modules/viewsite/index.js 默认会话 Cookie 管理source/modules/viewsite/cookiemgr.js 1 秒轮询同步 shell-updateHttpConf回写modules/database.js四个环节完整实现了原文档描述的四步思路开窗访问 → tabbar 管理 Cookie → 实时刷新展示 → 保存并写回请求 Header。对于需要登录态支撑的后续渗透与站点管理操作这一模块提供了开箱即用的标准化解决方案。赞分享网络安全渗透测试桌面应用【免费下载链接】antSword中国蚁剑是一款跨平台的开源网站管理工具。AntSword is a cross-platform website management toolkit.项目地址https://gitcode.com/gh_mirrors/an/antSword点击查看免费下载相关推荐ESP8266 Deauther代码深度解析去认证帧是如何逐字节构建的ESP8266 Deauther代码深度解析去认证帧是如何逐字节构建的 ESP8266 Deauther 是一款基于 ESP8266 芯片的平价 WiFi 安嵌入式物联网网络安全渗透测试如何安全下载 Llama 3 模型权重官方脚本与 Hugging Face 双渠道完整指南如何安全下载 Llama 3 模型权重官方脚本与 Hugging Face 双渠道完整指南 本文以 Meta 的 Llama 3 开源项目为例讲清通过官方人工智能大模型基础模型本地部署中国蚁剑跨平台网站管理工具完整安装配置教程中国蚁剑AntSword是一款强大的跨平台开源网站管理工具专为渗透测试和安全研究设计。它采用模块化架构支持多种WebShell连接方式是安全研究人员和网络安全渗透测试桌面应用上一篇解锁跨系统文件共享NTFS-3G深度实践指南下一篇技术小白也能懂SenseNova-SI-1.5-InternVL3-8B核心参数与配置全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑