如何为 theHarvester HarvestView 自托管 Tabulator 静态资源以支持隔离网络
如何为 theHarvester HarvestView 自托管 Tabulator 静态资源以支持隔离网络【免费下载链接】theHarvesterE-mails, subdomains and names Harvester - OSINT项目地址: https://gitcode.com/GitHub_Trending/th/theHarvesterHarvestView 是 theHarvester 的浏览器端运行工作台。它的结果表和 Schedules 调度表依赖 Tabulator 6.5.2 表格组件而页面默认从 CDNjs 加载这两个资源。当 theHarvester 部署在没有公网出口的机器上时页面本身能打开但 Tabulator 的样式和脚本会加载失败表格无法渲染。安装文档 的 “Self-host Tabulator” 一节给出了对应做法在联网环境下载同一版本的固定资源文件放入 HarvestView 的静态目录把页面里的 CDNjs 引用换成同源路径再重新构建包或容器。需要替换的资源与默认状态HarvestView 的默认状态在仓库中可以直接核对页面模板引用的是 CDNjs 上固定为 6.5.2 的 Tabulatorindex.html 的link第 9 行、body 末尾的script第 405 行以及 schedules.html 中同样两个标签第 9、209 行。三个位置都带integrity、crossorigin、referrerpolicy属性。静态资源由服务从theHarvester/lib/api/static目录挂载在/static下见 api.py 中的app.mount(/static, StaticFiles(...))。所以只要把文件放进theHarvester/lib/api/static/harvestview/就会以/static/harvestview/...同源提供。改动前这两个同源路径并不存在仓库测试用例断言默认状态下请求/static/harvestview/tabulator.min.css和/static/harvestview/tabulator.min.js都返回 404tests/lib/test_harvestview_ui.py。文档给出的固定文件清单及其来源URL 与 SRI 值原样来自安装文档的表格FileCDNjs sourceSRItabulator.min.csshttps://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/6.5.2/css/tabulator.min.csssha512-t8I/asqzdu/MRgVLxVanQ/c5bhUA1qZ/zA432a/3nUh0kkd7P8Qch35wQvTODivf9D6Xv3h7F8p7ezcUyBOQrQtabulator.min.jshttps://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/6.5.2/js/tabulator.min.jssha512-AF0YMSgc0Ui4IJPb4hJNSi16wFidZEQa6ZTCAeguF3h5glVnAPuz/JT2ai9ypKhsc9n6CEXBBtMdxsv1qrxg表中 SRI 值就是页面原始标签上integrity属性使用的值可以用来核对下载产物与固定版本一致。在联网环境下载并放入静态目录在能访问公网的机器上下载这两个文件。使用curl -fO时保存的文件名就是 URL 末段即tabulator.min.css和tabulator.min.js与文档要求的目标文件名一致curl -fO https://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/6.5.2/css/tabulator.min.css curl -fO https://cdnjs.cloudflare.com/ajax/libs/tabulator-tables/6.5.2/js/tabulator.min.js然后把两个文件复制进部署用的 theHarvester 源码树中的theHarvester/lib/api/static/harvestview/目录。这是文档明确要求的放置位置文件名不能改动。把 CDNjs 引用替换为同源引用编辑theHarvester/lib/api/static/harvestview/index.html把 head 中的 CDNjslink和 body 末尾的 CDNjsscript替换为同源引用这两个标签是文档给出的替换形式link relstylesheet href/static/harvestview/tabulator.min.css?v6.5.2 script src/static/harvestview/tabulator.min.js?v6.5.2/script同时从这两个本地标签上去掉integrity、crossorigin和referrerpolicy属性——文档说明它们只用于 CDN 场景。一个文档未明说但需要处理的点安装文档只提到替换index.html但 schedules.html 包含同样的两个固定 CDNjs 标签且仓库测试用例断言/和/schedules两个页面都引用了同一组 CDN 资源tests/lib/test_harvestview_ui.py。如果目标网络无法访问 CDNjsSchedules 页面的调度表同样会加载失败因此需要对schedules.html做完全相同的替换。重新构建并启动服务文档要求复制资源后重新构建包或容器Rebuild the package or container两种方式对应如下。容器部署Docker Compose先创建 operator-key 密钥再带--build重建。以下命令会在宿主机创建.secrets目录权限0700和只读密钥文件0444并重建、重启容器install -d -m 0700 .secrets openssl rand -hex 32 .secrets/operator-api-key chmod 0444 .secrets/operator-api-key docker compose up --build -d docker compose ps之所以必须重建是因为 Dockerfile 在构建期把theHarvester/源码树拷入镜像并以非 editable 方式安装theharvester包只有重新构建新放入的静态文件和改动后的 HTML 才会进入镜像。镜像启动的是harvestview服务不提供交互式 theHarvester CLI。源码部署theHarvester 需要 Python 3.14安装后启动服务uv sync export THEHARVESTER_API_KEYreplace-with-a-long-random-value uv run harvestview服务默认绑定127.0.0.1:5000THEHARVESTER_API_KEY需要替换为一个长随机值。验证结果页面不再引用 CDN抓取两个页面的 HTML 并搜索应无cdnjs输出curl -s http://127.0.0.1:5000/ | grep -c cdnjs curl -s http://127.0.0.1:5000/schedules | grep -c cdnjs同源资源可访问请求http://127.0.0.1:5000/static/harvestview/tabulator.min.js以及.css应返回文件内容。默认状态下这两个路径是 404仓库测试已核实返回 200 说明静态挂载已找到你放入的文件。浏览器打开 HarvestView 和 Schedules。提交一次运行后结果表以 Tabulator 渲染仓库 e2e 用例即以.tabulator-row行元素和#dispatch-grid.tabulator可见作为表格渲染的判断见 tests/e2e/test_harvestview.py排序、列过滤、分页等行为随之可用。边界与限制保持默认的 loopback 绑定。安装文档要求不要修改回环端口映射、不要把服务直接暴露给不受信任的网络需要远程访问时先加 TLS 和网络访问控制。自托管文件必须与页面引用的固定版本一致6.5.2引用中的?v6.5.2即文档替换标签里的版本标记。设计文档说明 HarvestView 使用固定版本的 Tabulator 构建DESIGN.md升级 theHarvester 后如果固定版本变化需要按新版文档重新核对文件与 SRI 后再更新引用。本次改动只替换两个静态资源的来源不改变 HarvestView 的接口与鉴权每个/api/v1/*路由仍然要求THEHARVESTER_API_KEYREST API 文档。参考安装文档 · Self-host TabulatorREST API 文档页面模板 index.html页面模板 schedules.html静态挂载与模板渲染默认状态测试e2e 测试中的表格渲染断言【免费下载链接】theHarvesterE-mails, subdomains and names Harvester - OSINT项目地址: https://gitcode.com/GitHub_Trending/th/theHarvester创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Kubernetes 社区大数据生态集成现状盘点:Spark、HDFS、Airflow 与 Flink 在 Kubernetes 上的演进速览

Kubernetes 社区大数据生态集成现状盘点:Spark、HDFS、Airflow 与 Flink 在 Kubernetes 上的演进速览

Kubernetes 社区大数据生态集成现状盘点:Spark、HDFS、Airflow 与 Flink 在 Kubernetes 上的演进速览 【免费下载链接】community Kubernetes Community Documentation 项目地址: https://gitcode.com/GitHub_Trending/com/community 本篇文章基于 Kubernete…

2026/11/9 8:24:00 阅读更多 →
financial-services威胁模型分析:谁能读、谁能写、谁能记账的权限图谱

financial-services威胁模型分析:谁能读、谁能写、谁能记账的权限图谱

financial-services威胁模型分析:谁能读、谁能写、谁能记账的权限图谱 【免费下载链接】financial-services 项目地址: https://gitcode.com/GitHub_Trending/fi/financial-services financial-services 是一个面向金融行业的开源 AI 智能体参考项目&#x…

2026/11/9 8:24:00 阅读更多 →
从SEO到GEO:构建AI搜索引擎优化监测与提升系统实战

从SEO到GEO:构建AI搜索引擎优化监测与提升系统实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/8 12:37:12 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/8 1:19:03 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/8 14:17:55 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/8 1:38:41 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/8 1:23:14 阅读更多 →

日新闻

周新闻

月新闻