mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-03-31 08:19:54 +02:00
Add files via upload
This commit is contained in:
@@ -933,14 +933,32 @@ function exportFofaResults(format) {
|
||||
return;
|
||||
}
|
||||
|
||||
// csv:默认导出可见字段(更符合“列隐藏”直觉)
|
||||
if (format === 'xlsx') {
|
||||
// 使用 SheetJS 生成 XLSX(需在页面中引入 xlsx 库)
|
||||
if (typeof XLSX === 'undefined') {
|
||||
alert('未加载 XLSX 库,请刷新页面后重试');
|
||||
return;
|
||||
}
|
||||
const aoa = [visibleFields].concat(p.results.map(row => {
|
||||
const r = row && typeof row === 'object' ? row : {};
|
||||
return visibleFields.map(f => r[f] != null ? r[f] : '');
|
||||
}));
|
||||
const ws = XLSX.utils.aoa_to_sheet(aoa);
|
||||
const wb = XLSX.utils.book_new();
|
||||
XLSX.utils.book_append_sheet(wb, ws, 'FOFA结果');
|
||||
XLSX.writeFile(wb, `fofa_results_${ts}.xlsx`);
|
||||
return;
|
||||
}
|
||||
|
||||
// csv:默认导出可见字段,带 UTF-8 BOM 以兼容 Excel 中文
|
||||
const header = visibleFields;
|
||||
const rows = p.results.map(row => {
|
||||
const r = row && typeof row === 'object' ? row : {};
|
||||
return header.map(f => csvEscape(r[f]));
|
||||
});
|
||||
const csv = [header.map(csvEscape).join(','), ...rows.map(cols => cols.join(','))].join('\n');
|
||||
downloadBlob(csv, `fofa_results_${ts}.csv`, 'text/csv;charset=utf-8');
|
||||
const csvWithBom = '\uFEFF' + csv;
|
||||
downloadBlob(csvWithBom, `fofa_results_${ts}.csv`, 'text/csv;charset=utf-8');
|
||||
}
|
||||
|
||||
function csvEscape(value) {
|
||||
|
||||
@@ -803,8 +803,9 @@
|
||||
<div class="info-collect-results-toolbar" aria-label="结果工具条">
|
||||
<div class="info-collect-selected" id="fofa-selected-meta">已选择 0 条</div>
|
||||
<button class="btn-secondary btn-small" type="button" onclick="toggleFofaColumnsPanel()" title="显示/隐藏字段">列</button>
|
||||
<button class="btn-secondary btn-small" type="button" onclick="exportFofaResults('csv')" title="导出当前结果为 CSV">导出 CSV</button>
|
||||
<button class="btn-secondary btn-small" type="button" onclick="exportFofaResults('csv')" title="导出当前结果为 CSV(UTF-8,兼容中文)">导出 CSV</button>
|
||||
<button class="btn-secondary btn-small" type="button" onclick="exportFofaResults('json')" title="导出当前结果为 JSON">导出 JSON</button>
|
||||
<button class="btn-secondary btn-small" type="button" onclick="exportFofaResults('xlsx')" title="导出当前结果为 Excel">导出 XLSX</button>
|
||||
<button class="btn-primary btn-small" type="button" onclick="batchScanSelectedFofaRows()" title="将所选行创建为批量任务队列">批量扫描</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1472,6 +1473,8 @@
|
||||
<script src="https://cdn.jsdelivr.net/npm/cytoscape@3.27.0/dist/cytoscape.min.js"></script>
|
||||
<!-- ELK.js for high-quality DAG layout (reduces edge crossings) -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/elkjs@0.9.2/lib/elk.bundled.js"></script>
|
||||
<!-- SheetJS for XLSX export (info-collect) -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/xlsx@0.18.5/dist/xlsx.full.min.js"></script>
|
||||
<script>
|
||||
// 确保ELK对象全局可用
|
||||
if (typeof ELK === 'undefined' && typeof elk !== 'undefined') {
|
||||
|
||||
Reference in New Issue
Block a user