升级重点:AI加持下的代码扫描,路径提取,路径智能拼接与分析

📜 目录

  • 核心功能
  • 新增特性
  • 安装指南
  • 使用指南
  • 智能去重系统
  • 最佳实践
  • 免责声明
  • 开发路线

🌟 核心功能

  1. 递归路径探测

    • 自动解析网页源码发现JS文件
    • 深度提取JS中的隐藏路径与接口(支持自定义状态码过滤)
  2. 多维度扫描控制

    • 目录递减访问(-l参数控制遍历深度)
    • 可调扫描深度(-H参数,建议≤2)
    • 多URL批量扫描(-b文件输入)
  3. 多种页面相似度检测

    • 使用SimHash配合DOM骨架去重
    • 使用SimHash配合jieba去重
    • 使用title,length去重
  4. 页面重点信息标记

    • 多维度评估页面可用点
    • 助力漏洞挖掘
  5. 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:12335socks5://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%相似度 → 标记为重复页面 

多维度去重策略

  1. 标题去重:同域名下标题完全一致则去重
  2. 长度去重:响应体长度差值<5%视为重复
  3. 文本相似度:Jieba分词+SimHash计算(适合文章类)

🤖 大模型分析模块说明

核心模型选择

本工具默认采用经蒸馏与量化优化的 hf-mirror.com/wqerrewetw/DistilQwen2.5-7B-Instruct-GGUF:Q4_K_M 作为核心分析模型。该模型经过实测验证,在 JavaScript 代码敏感信息提取、接口识别等场景中表现最优,兼顾分析精度与运行效率,适合本地部署与批量处理场景。

分析原理与流程

  1. 代码预处理
    对获取的 JavaScript 代码进行压缩还原与格式化处理(依赖prettier组件,需通过npm install prettier提前安装),提升代码可读性,为后续分析奠定基础。
  2. 关键代码抽取
    自动筛选代码中具有潜在价值的片段(如接口调用、配置信息、敏感函数等),剔除冗余注释与无效代码,减少模型输入量。
  3. 分批次智能分析
    基于预设的 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敏感信息提取
  • 优化为工作流

📚 参考资源

  1. 正则表达式库:https://github.com/GerbenJavado/LinkFinder
  2. 敏感信息规则:https://github.com/momosecurity/FindSomething
  3. 使用问题反馈:https://github.com/hmx222/JScanner2/issues
  4. 大模型来源于:qwen2.5

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐