JSMon:一款针对JavaScript脚本的监控工具
字数 1174 2025-08-15 21:32:58

JSMon:JavaScript脚本监控工具使用指南

一、工具概述

JSMon是一款专为漏洞Hunter设计的JavaScript脚本监控工具,基于Python开发,具备跨平台特性。其主要功能是持续监控网站上的JavaScript文件变化,并通过即时通讯工具通知用户。

二、核心功能

  1. 持续追踪目标节点:通过cron定期检测目标状态
  2. 节点变化通知:通过Telegram或Slack发送变更通知
  3. 文件比对分析:自动比较新旧版本脚本文件
  4. 多文件监控:支持同时监控任意数量的脚本文件
  5. 文件类型扩展:虽然专为JavaScript设计,但可监控任意文件类型

三、安装步骤

1. 获取源代码

git clone https://github.com/robre/jsmon.git
cd jsmon
python setup.py install

2. 配置通知服务

创建.env文件并配置通知参数:

touch .env

Telegram配置示例:

JSMON_NOTIFY_TELEGRAM=True
JSMON_TELEGRAM_TOKEN=YOUR_TELEGRAM_TOKEN
JSMON_TELEGRAM_CHAT_ID=YOUR_TELEGRAM_CHAT_ID

Slack配置示例(需取消注释):

#JSMON_NOTIFY_SLACK=True
#JSMON_SLACK_TOKEN=sometoken
#JSMON_SLACK_CHANNEL_ID=somechannel

注意

  • 对于Slack支持,需要配置Slack应用程序并获取oAuth认证令牌
  • Slack应用需要文件上传权限和配置通信信道

四、配置监控目标

  1. 在项目目录的targets/文件夹下创建监控列表文件
  2. 每行一个URL,指向要监控的脚本文件

示例:

echo "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js" >> targets/cdnjs-example

五、定时任务配置

设置cron定时任务:

crontab -e

添加如下内容(每天午夜执行):

@daily /path/to/jsmon.sh

重要说明

  • 必须运行.sh文件而非直接运行Python脚本,以避免环境问题
  • 可根据需要修改@daily参数(如@hourly每小时)

六、运行工具

执行监控:

python jsmon.py

七、工作原理

  1. 文件存储

    • 下载的文件存储在downloads/目录
    • 文件名使用文件内容的md5哈希前10个字符
  2. 变更检测

    • 如果文件已存在且未变化,不执行操作
    • 如果文件发生变化,发送通知
  3. 状态跟踪

    • jsmon.json文件持续跟踪节点与文件哈希的绑定关系

八、通知内容

当检测到变化时,通知包含:

  1. 脚本文件的链接地址
  2. 修改后的文件大小
  3. 最新的脚本文件内容

九、高级配置

  1. Telegram额外配置

    • 需要在jsmon.py文件开头部分添加Telegram API密钥和chat_id
  2. Slack应用配置

    • 确保Slack应用已启用文件上传权限
    • 配置正确的通信信道

十、项目地址

GitHub仓库:JSMon GitHub传送门

十一、最佳实践

  1. 按网站或应用程序组织targets文件
  2. 对于关键脚本,考虑设置更频繁的检查间隔(如每小时)
  3. 定期清理downloads目录中过时的文件版本
  4. 备份jsmon.json文件以防止监控状态丢失

十二、故障排除

  1. 通知不工作

    • 检查.env文件配置是否正确
    • 验证Telegram/Slack令牌和ID
    • 确保网络连接正常
  2. 文件未下载

    • 检查targets文件中的URL是否正确
    • 验证网络连接和目标可访问性
  3. cron任务不执行

    • 确认.sh文件有执行权限
    • 检查cron日志以获取错误信息
JSMon:JavaScript脚本监控工具使用指南 一、工具概述 JSMon是一款专为漏洞Hunter设计的JavaScript脚本监控工具,基于Python开发,具备跨平台特性。其主要功能是持续监控网站上的JavaScript文件变化,并通过即时通讯工具通知用户。 二、核心功能 持续追踪目标节点 :通过cron定期检测目标状态 节点变化通知 :通过Telegram或Slack发送变更通知 文件比对分析 :自动比较新旧版本脚本文件 多文件监控 :支持同时监控任意数量的脚本文件 文件类型扩展 :虽然专为JavaScript设计,但可监控任意文件类型 三、安装步骤 1. 获取源代码 2. 配置通知服务 创建.env文件并配置通知参数: Telegram配置示例: Slack配置示例(需取消注释): 注意 : 对于Slack支持,需要配置Slack应用程序并获取oAuth认证令牌 Slack应用需要文件上传权限和配置通信信道 四、配置监控目标 在项目目录的 targets/ 文件夹下创建监控列表文件 每行一个URL,指向要监控的脚本文件 示例: 五、定时任务配置 设置cron定时任务: 添加如下内容(每天午夜执行): 重要说明 : 必须运行.sh文件而非直接运行Python脚本,以避免环境问题 可根据需要修改 @daily 参数(如 @hourly 每小时) 六、运行工具 执行监控: 七、工作原理 文件存储 : 下载的文件存储在 downloads/ 目录 文件名使用文件内容的md5哈希前10个字符 变更检测 : 如果文件已存在且未变化,不执行操作 如果文件发生变化,发送通知 状态跟踪 : jsmon.json 文件持续跟踪节点与文件哈希的绑定关系 八、通知内容 当检测到变化时,通知包含: 脚本文件的链接地址 修改后的文件大小 最新的脚本文件内容 九、高级配置 Telegram额外配置 : 需要在 jsmon.py 文件开头部分添加Telegram API密钥和chat_ id Slack应用配置 : 确保Slack应用已启用文件上传权限 配置正确的通信信道 十、项目地址 GitHub仓库: JSMon GitHub传送门 十一、最佳实践 按网站或应用程序组织targets文件 对于关键脚本,考虑设置更频繁的检查间隔(如每小时) 定期清理downloads目录中过时的文件版本 备份jsmon.json文件以防止监控状态丢失 十二、故障排除 通知不工作 : 检查.env文件配置是否正确 验证Telegram/Slack令牌和ID 确保网络连接正常 文件未下载 : 检查targets文件中的URL是否正确 验证网络连接和目标可访问性 cron任务不执行 : 确认.sh文件有执行权限 检查cron日志以获取错误信息