资讯动态

如何为 theHarvester HarvestView 自托管 Tabulator 静态资源以支持隔离网络

发布时间:2026/9/15 21:06:20 来源:尧图企业网站定制
如何为 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),仅供参考

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

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

免费获取报价