反混淆和反爬虫分析API服务 - 白帽安全研究工具
这是一个用于处理混淆JavaScript代码并提取特定验证数据(x-is-human)的API服务。该项目属于白帽安全研究,用于分析和理解反爬虫机制,以便构建更好的防御系统。
- 🔓 多轮反混淆: 采用50轮迭代转换架构,支持13种转换类型
- 🎯 智能提取: 自动识别和提取x-is-human验证对象
- 🔐 加密处理: 集成PBKDF2 + AES-GCM加密算法
- 🚀 REST API: 简洁高效的HTTP接口
# 拉取镜像
docker pull ghcr.io/karen/x-is-human-api:latest
# 运行容器
docker run -d -p 3000:3000 --name x-is-human-api ghcr.io/karen/x-is-human-api:latest# 安装依赖
npm install
# 开发模式 (热重载)
npm run dev
# 构建项目
npm run build
# 生产模式
npm start服务将在 http://localhost:3000 启动
端点: POST /api/process
请求体:
{
"jsCode": "从目标网站实时获取的混淆JavaScript代码字符串"
}响应示例:
{
"success": true,
"data": {
"b": 0,
"v": 123456,
"e": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"s": "base64加密数据",
"d": 0,
"vr": "3"
}
}端点: GET /health
响应:
{
"status": "ok",
"timestamp": "2025-10-01T12:00:00.000Z"
}curl -X POST http://localhost:3000/api/process \
-H "Content-Type: application/json" \
-d '{
"jsCode": "你的混淆JavaScript代码"
}'混淆JS代码
↓
反混淆器 (50轮迭代)
├─ 字符串解密
├─ 控制流恢复
├─ 对象简化
├─ 代理函数内联
└─ 变量优化
↓
AST解析 (Babel)
↓
数据提取器
├─ 函数调用模式识别
├─ 对象属性提取
└─ 变量连接分析
↓
加密处理 (PBKDF2 + AES-GCM)
↓
x-is-human对象- 入口层 (
src/index.ts): Express应用和中间件配置 - 路由层 (
src/routes/process.ts): API路由处理 - 提取器层 (
src/extractors/astExtractor.ts): AST数据提取 - 工具层 (
src/utils/crypto.ts): 加密算法实现 - 反混淆器 (
src/deobfuscator/): 多轮转换系统
PORT: 服务端口 (默认: 3000)NODE_ENV: 运行环境 (development/production)
所有转换可通过 src/deobfuscator/deobfuscator/transformations/config.ts 配置:
const config = {
silent: false,
objectSimplification: { isEnabled: true, unsafeReplace: true },
// ... 其他转换配置
}项目包含完整的测试套件:
# 基础测试
node tests/test.js
# API完整流程测试
node tests/test-api.js
# 反混淆测试
node tests/deobfuscated-test.js
# 调试工具
node tests/debug.jsdocker build -t x-is-human-api .docker run -d \
-p 3000:3000 \
-e PORT=3000 \
--name x-is-human-api \
x-is-human-api- 运行时: Node.js 18+
- 语言: TypeScript 5.2+
- Web框架: Express 4.x
- AST解析: Babel 7.x
- 加密: Node.js Crypto (PBKDF2, AES-GCM)
本项目仅用于防御性安全研究和教育目的。
- ✅ 允许: 安全分析、漏洞研究、防御系统构建
- ❌ 禁止: 未授权访问、恶意攻击、非法用途
使用者需对自己的行为负责,作者不承担任何滥用责任。
目标反爬虫系统使用动态混淆技术,具有以下特点:
- 时效性: 混淆代码每次生成都包含时间戳,具有时效性
- 随机性: 代码结构中包含随机数、随机变量名等元素
- 不可复用: 同一份混淆代码通常只能使用一次或短时间内有效
- 实时获取: 必须从目标网站实时抓取最新的混淆JS代码
1. 访问目标网站 → 2. 拦截/提取混淆JS → 3. 调用本API → 4. 获取验证数据 → 5. 使用验证数据注意: 不要尝试缓存或重复使用旧的混淆代码,这会导致验证失败。
本项目采用模块化架构,扩展简单:
- 添加新转换: 继承
Transformation类并实现execute()方法 - 修改提取逻辑: 在
astExtractor.ts中调整traverse逻辑 - 测试覆盖: 在
tests/目录添加对应测试
MIT License - 详见 LICENSE 文件
注意: 如果你是安全研究者,欢迎交流防御技术;如果你想用于非法目的,请立即离开。