JScanner2(升级款) - 下一代JavaScript信息扫描工具
摘要:JScanner2是一款AI增强的JavaScript信息扫描工具,具备递归路径探测、多维度扫描控制和智能去重功能。新增AI代码分析能力,支持路径智能拼接与修复。提供多种去重策略(标题/长度/相似度),支持批量扫描和并发处理。需Python 3.10+环境,推荐使用ollama本地部署模型进行代码分析。工具包含敏感信息检测模块,建议配合白名单使用。开发者强调仅限合法授权使用,后续计划优化性能
升级重点:AI加持下的代码扫描,路径提取,路径智能拼接与分析
📜 目录
- 核心功能
- 新增特性
- 安装指南
- 使用指南
- 智能去重系统
- 最佳实践
- 免责声明
- 开发路线
🌟 核心功能
-
递归路径探测
- 自动解析网页源码发现JS文件
- 深度提取JS中的隐藏路径与接口(支持自定义状态码过滤)
-
多维度扫描控制
- 目录递减访问(
-l参数控制遍历深度) - 可调扫描深度(
-H参数,建议≤2) - 多URL批量扫描(
-b文件输入)
- 目录递减访问(
-
多种页面相似度检测
- 使用SimHash配合DOM骨架去重
- 使用SimHash配合jieba去重
- 使用title,length去重
-
页面重点信息标记
- 多维度评估页面可用点
- 助力漏洞挖掘
-
AI分析代码
- 利用qwen2.5(量化后)进行JavaScript代码分析
- 智能挖掘隐藏路径
- 智能拼接路径
- 智能路径修复
🚀 新增特性
1. AI加持的代码分析
利用qwen对JavaScript代码分析,保证路径拼接的正确性,尽可能多的发现存在的路径,AI推测可能存在的API接口,AI智能拼接路径接口,方便后续集群化接口测试。
⚙️ 安装指南
# 克隆仓库(含beta/stable分支)
git clone https://github.com/hmx222/JScanner2.git
# 安装依赖
cd JScanner2
pip install -r requirements.txt
playwright install
npm install prettier
# 记得在AI/beautifyjs.py中修改您的prettier路径
# 务必本地安装ollama,接着拉取模型:ollama run hf-mirror.com/wqerrewetw/DistilQwen2.5-7B-Instruct-GGUF:Q4_K_M
# 如果报错缺少什么装什么,欢迎issue
环境要求:Python 3.10(推荐使用conda环境)+,Chromium内核浏览器
🔧 使用指南
命令行参数
| 参数 | 全称 | 说明 |
|---|---|---|
-u |
--url |
单个网站URL(需带http/https,例如:https://example.com)与 -b参数必选其一 |
-b |
--batch |
批量扫描的URL文件绝对路径(文件内需每行一个URL) 与 -u参数必选其一 |
-H |
--height |
扫描深度(默认值:2,数值越大扫描范围越广,耗时越长) |
-t |
--thread_num |
并发线程数(默认值:10,可根据网络环境调整) |
-p |
--proxy |
代理服务器设置(格式:http://127.0.0.1:12335 或 socks5://127.0.0.1:1080) |
-v |
--visible |
显示浏览器窗口(默认:无头模式,不显示窗口;启用后可观察浏览器操作过程) |
-c |
--headers |
自定义请求头(格式示例:'cookie':'session=123';'Referer':'https://example.com')注:User-Agent已默认随机生成,无需额外指定 |
| -o | --ollama |
使用ollama进行分析JavaScript代码 |
-d |
--de_duplication_title |
启用标题去重(默认关闭;启用后会过滤标题完全相同的页面) |
-s |
--de_duplication_hash |
启用DOM SimHash去重并设置阈值(格式:-s 0.8,默认关闭;阈值范围0.0-1.0,数值越小去重越严格) |
-l |
--de_duplication_length |
启用长度去重(默认关闭;启用后会过滤HTML长度完全相同的页面) |
-f |
--de_duplication_similarity |
启用文本相似度去重并设置阈值(格式:-f 0.7,默认关闭;阈值范围0.0-1.0,数值越小去重越严格) |
-g |
--sensitiveInfo |
主动寻找Javascript中的敏感信息 |
🧠 智能去重系统
DOM骨架SimHash技术
def extract_dom_skeleton(element):
""" 提取标签层级结构(剔除动态内容) """
skeleton = f"<{element.tag}>"
for child in element:
if not isinstance(child, str):
skeleton += extract_dom_skeleton(child)
skeleton += f"</{element.tag}>"
return skeleton
处理效果:
https://help.aliyun.com/zh/rds/apsaradb-rds-for-mysql/?spm=a2c4g.11186623.nav-v2-dropdown-menu-3.d_main_0_7.e0f45630AW7XNc&scm=20140722.M_10247527._.V_1
与
https://market.aliyun.com/xinxuan/application/miniapps?spm=a2c4g.11186623.nav-v2-dropdown-menu-6.d_main_0_1.4c47293as877sK&scm=20140722.M_10215511._.V_1
→ 76%相似度 → 标记为重复页面
多维度去重策略
- 标题去重:同域名下标题完全一致则去重
- 长度去重:响应体长度差值<5%视为重复
- 文本相似度:Jieba分词+SimHash计算(适合文章类)
🤖 大模型分析模块说明
核心模型选择
本工具默认采用经蒸馏与量化优化的 hf-mirror.com/wqerrewetw/DistilQwen2.5-7B-Instruct-GGUF:Q4_K_M 作为核心分析模型。该模型经过实测验证,在 JavaScript 代码敏感信息提取、接口识别等场景中表现最优,兼顾分析精度与运行效率,适合本地部署与批量处理场景。
分析原理与流程
- 代码预处理
对获取的 JavaScript 代码进行压缩还原与格式化处理(依赖prettier组件,需通过npm install prettier提前安装),提升代码可读性,为后续分析奠定基础。 - 关键代码抽取
自动筛选代码中具有潜在价值的片段(如接口调用、配置信息、敏感函数等),剔除冗余注释与无效代码,减少模型输入量。 - 分批次智能分析
基于预设的 prompt 模板(定义于Get_API.py),将处理后的代码片段分批次送入大模型进行解析,提取隐藏接口、密钥信息、业务逻辑等关键内容,最终汇总输出分析结果。
资源优化与配置
- 显存控制:默认限制模型显存占用为 4GB,适配主流消费级显卡。用户可在
Get_API.py中调整显存限制参数,平衡性能与硬件负载。 - 模型替换:支持自定义模型加载,用户可根据需求替换为其他兼容模型(如 qwen3 4b、deepseek-llm:7b-chat 等),具体修改方式参见
Get_API.py中的模型加载模块。
模型选型参考
经过多轮测试对比,不同模型在本工具中的表现如下(切换模型后需要调整提示词):
- qwen2.5 7b:综合表现最优,代码分析精度高,对复杂逻辑识别能力强
- qwen2.5-coder:3b:轻量高效,适合简单代码片段分析
- phi-2:显存占用低,但复杂场景下识别准确率有限
- deepseek-llm:7b-chat:对中文注释代码友好,接口提取效率较高
注意:启用大模型分析会显著增加计算资源消耗,建议在高性能设备上使用,批量扫描场景需谨慎开启。
⚡ 最佳实践
# 不推荐
python main.py -u "https://xxxxx.com" -H 3
# 使用title与length去重
python main.py -u "https://target.com" -H 3 -d -l
# 平衡去重与效率(最最最推荐)
python main.py -u "https://xxxx.com" -H 3 -d -s 0.8 -l -s -g
# 效率最慢(次之)
python main.py -u "https://xxxx.com" -H 3 -d -s 0.8 -l -f 0.65
# 多URL扫描,建议在config/whiteList 添加白名单,让扫描更充分
python main.py -b xxxx.txt -H 3 -d -s 0.8 -l -g
# 利用大模型进行代码分析
python main.py -u "https://xxxx.com" -H 3 -o -l -g
⚠️ 免责声明
重要:本工具仅限合法授权的安全评估使用,禁止未授权扫描。使用者需自行承担法律责任,开发者不承担任何连带责任。项目属于beta阶段,欢迎issue。
🛣️ 开发路线
- jsmap自动下载
- 优化代码,减少性能开支
- Docker容器化部署支持
- AI敏感信息提取
- 优化为工作流
📚 参考资源
- 正则表达式库:https://github.com/GerbenJavado/LinkFinder
- 敏感信息规则:https://github.com/momosecurity/FindSomething
- 使用问题反馈:https://github.com/hmx222/JScanner2/issues
- 大模型来源于:qwen2.5
更多推荐



所有评论(0)