rix4uni/techfinder

GitHub: rix4uni/techfinder

一款基于 Go 的高性能 Web 技术检测工具,利用无头浏览器与静态模式识别网站技术栈。

Stars: 7 | Forks: 1

## techfinder 一个使用 Go 构建的高性能技术检测工具,利用 [rix4uni/wappalyzergo](https://github.com/rix4uni/wappalyzergo) 库来识别 Web 技术与框架——包括通过无头浏览器支持动态加载的 JS 框架,如 **React、Next.js、Vue、Svelte、Framer Motion** 等。 ## 🚀 功能特性 - **🧠 无头检测(默认)**:使用真实的无头 Chrome 浏览器检测通过 JavaScript 动态加载的技术(React、Next.js、Framer Motion、Swiper 等)。 - **⚡ 快速静态模式**:无浏览器开销的高速 HTTP 检测,适用于大规模扫描。 - **🔧 多线程**:并发处理以提升吞吐量。 - **📄 多种输出格式**:支持纯文本、JSON 和 CSV。 - **🎯 技术匹配**:可筛选并告警特定技术。 - **💬 Discord 集成**:直接将检测结果发送到 Discord。 - **♻️ 崩溃安全恢复**:默认开启 `resume.cfg` 恢复;使用 `--no-resume` 重新开始。 ## 📦 安装 ### 使用 Go 安装 ``` go install github.com/rix4uni/techfinder@latest ``` ### 下载预编译二进制文件 ``` wget https://github.com/rix4uni/techfinder/releases/download/v0.0.8/techfinder-linux-amd64-0.0.8.tgz tar -xvzf techfinder-linux-amd64-0.0.8.tgz rm -rf techfinder-linux-amd64-0.0.8.tgz mv techfinder ~/go/bin/techfinder ``` 或从 [二进制发布](https://github.com/rix4uni/techfinder/releases) 下载适用于你平台的版本。 ### 从源码编译 ``` git clone --depth 1 https://github.com/rix4uni/techfinder.git cd techfinder; go install ``` ## 🔧 使用方法 ``` A high-performance technology detection tool built with Go, leveraging the rix4uni wappalyzergo library to identify web technologies and frameworks. Usage: techfinder [flags] Flags: OUTPUT: -o, -output string File to save output (default is stdout) -json Output in JSON format -csv Output in CSV format RATE-LIMIT: -t, -threads int Number of threads to use (default 50) CONFIGURATIONS: -H, -user-agent string Custom User-Agent header for HTTP requests (default "Mozilla/5.0 ...") -discord Send Matched tech to Discord -id string Discord id to send the notification (default "alivesubdomain") -pc, -provider-config string provider config path (default "/root/.config/notify/provider-config.yaml") -no-resume Disable resume functionality and start scanning fresh MATCHERS: -mt, -match-tech string Send matched tech output to Discord (comma-separated, file) (default "/root/.config/techfinder/technologies.txt") DEBUG: -verbose Enable verbose output for debugging purposes -version Print the version of the tool and exit -silent silent mode OPTIMIZATIONS: -retries int Number of retry attempts for failed HTTP requests (default 1) -timeout int HTTP request timeout in seconds (default 15) -headless-timeout int Headless browser timeout in seconds (browser launch + navigation + JS execution) (default 30) -rd, -retriesDelay int Delay in seconds between retry attempts -i, -insecure Disable TLS verification -delay value duration between each http request (eg: 200ms, 1s) (default -1ns) -rate int Maximum requests per second (0 = unlimited) -mode string Detection mode: 'best' uses headless browser for JS/DOM fingerprinting (default), 'fast' uses static HTTP only (default "best") ``` ## 🧠 检测模式 techfinder 支持通过 `-mode` 标志控制的两种检测模式: ### `-mode best`(默认 — 无头浏览器) 为每个目标启动真实的无头 Chrome 浏览器,执行页面 JavaScript 并评估: - **JS 全局变量**(如 `window.React.version`、`window.__NEXT_DATA__`) - **DOM 选择器**(如 `.swiper`、`[data-framer]`) - JS 水合后的完整渲染 HTML 这可以捕获静态 HTTP 请求无法察觉的技术。 ``` echo "https://www.cetus.zone" | techfinder -mode best -silent ``` ``` URL: https://www.cetus.zone Count: 17 Technologies: [Amazon CloudFront, Amazon Web Services, Framer Motion, HSTS, LottieFiles, Netlify, Next.js App Router, Next.js:14.2.16, Node.js, Open Graph, Priority Hints, React, Svelte, SvelteKit, Swiper, Vite, Webpack] ``` ### `-mode fast`(仅静态 HTTP) 仅使用普通的 HTTP GET 请求——无浏览器、无 JS 执行。适用于速度优先于完整性的批量扫描。 ``` echo "https://www.cetus.zone" | techfinder -mode fast -silent ``` ``` URL: https://www.cetus.zone Count: 4 Technologies: [Amazon CloudFront, Amazon Web Services, HSTS, Netlify] ``` ## 📊 输出示例 单个 URL: ``` echo "https://hackerone.com" | techfinder ``` 多个 URL: ``` cat urls.txt | techfinder ``` 重新开始(不恢复): ``` cat urls.txt | techfinder --no-resume ``` ## 纯文本 ``` cat urls.txt | techfinder -mode fast URL: https://hackerone.com Count: 14 Technologies: [Cloudflare, Drupal:10, Fastly, Google Tag Manager, HSTS, MariaDB, Marketo Forms:2, Nginx, Optimizely, PHP, Pantheon, TrustArc, Varnish, YouTube] URL: https://bugcrowd.com Count: 16 Technologies: [Bootstrap, Fastly, HSTS, MariaDB, Marketo Forms:2, MySQL, Nginx, OneTrust, PHP, Pantheon, Slick, Varnish, WordPress, Yoast SEO:22.8, jQuery, jQuery UI] URL: https://www.intigriti.com Count: 4 Technologies: [CookieYes, DatoCMS, HSTS, Vercel] ``` ## JSON 格式 ``` cat urls.txt | techfinder -json { "host": "https://hackerone.com", "count": 14, "tech": [ "Cloudflare", "Drupal:10", "Fastly", "Google Tag Manager", "HSTS", "MariaDB", "Marketo Forms:2", "Nginx", "Optimizely", "PHP", "Pantheon", "TrustArc", "Varnish", "YouTube" ] } ``` ## CSV 格式 ``` cat urls.txt | techfinder -csv host,count,tech https://bugcrowd.com,16,"Bootstrap, Fastly, HSTS, MariaDB, Marketo Forms:2, MySQL, Nginx, OneTrust, PHP, Pantheon, Slick, Varnish, WordPress, Yoast SEO:22.8, jQuery, jQuery UI" https://www.intigriti.com,4,"CookieYes, DatoCMS, HSTS, Vercel" https://hackerone.com,14,"Cloudflare, Drupal:10, Fastly, Google Tag Manager, HSTS, MariaDB, Marketo Forms:2, Nginx, Optimizely, PHP, Pantheon, TrustArc, Varnish, YouTube" ``` ## ⚙️ 配置参数 ### 输出选项 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-o, -output` | 将输出保存到文件 | stdout | | `-json` | 以 JSON 格式输出 | false | | `-csv` | 以 CSV 格式输出 | false | ### 速率限制 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-t, -threads` | 并发线程数 | 50 | | `-delay` | HTTP 请求之间的延迟(例如 200ms、1s) | -1ns | | `-retries` | 失败请求的尝试次数 | 1 | | `-rd, -retriesDelay` | 重试之间的延迟(秒) | 0 | | `-rate` | 每秒最大请求数(0 表示无限制) | 0 | ### HTTP 配置 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-H, -user-agent` | 自定义 User-Agent 字符串 | Mozilla/5.0 (Windows NT 10.0...) | | `-timeout` | HTTP 请求超时(秒) | 15 | | `-headless-timeout` | 无头浏览器超时(启动 + 导航 + JS) | 30 | | `-i, -insecure` | 禁用 TLS 验证 | false | | `--no-resume` | 禁用恢复;重新开始 | false | ### 检测模式 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-mode` | `best` = 无头浏览器(JS/DOM),`fast` = 仅静态 HTTP | `best` | | `-headless-timeout` | 无头浏览器操作超时(秒) | 30 | ### 匹配器与通知 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-mt, -match-tech` | 匹配特定技术(文件或逗号分隔) | - | | `-discord` | 将结果发送到 Discord | false | | `-id` | Discord 频道 ID 用于通知 | alivesubdomain | | `-pc, -provider-config` | 通知提供者配置路径 | ~/.config/notify/provider-config.yaml | ### 调试与信息 | 标志 | 描述 | |------|-------------| | `-verbose` | 启用详细调试输出 | | `-silent` | 启用静默模式 | | `-version` | 显示版本信息 | ## 🔍 高级用法 ### 技术匹配 ``` # 匹配特定技术 echo "https://example.com" | techfinder -mt "wordpress,php,nginx,react,nextjs" # 使用匹配文件 echo "https://example.com" | techfinder -mt technologies.txt ``` ### Discord 集成 ``` # 将结果发送到 Discord cat urls.txt | techfinder -discord -id "tech-scans" ``` ### 保存结果到文件 ``` # JSON 输出到文件 cat urls.txt | techfinder -json -o results.json # CSV 输出到文件 cat urls.txt | techfinder -csv -o results.csv ``` ## 🛠️ 性能调优 对于大规模扫描且速度至关重要的情况,请使用 `-mode fast` 跳过无头 Chrome: ``` # 快速静态模式 - 无浏览器开销 cat large_targets.txt | techfinder -mode fast -t 200 -timeout 10 -retries 2 -rate 500 ``` 对于注重准确性的目标较小集合扫描,请使用默认无头模式: ``` # 最佳准确性 - 每个 URL 无头浏览器 cat targets.txt | techfinder -mode best -t 20 -timeout 15 -headless-timeout 45 ``` ## ♻️ 恢复与中断处理 - 默认开启恢复,将进度保存到当前目录的 `resume.cfg`: ``` scanned=300000 ``` - 在同一目录中重新运行相同命令以恢复;扫描器将跳过前 `scanned` 项并继续。 - 使用 `--no-resume` 重新开始。 - 完成后自动删除 `resume.cfg`。 - 按下 CTRL+C 时,优雅地取消待处理任务并在退出前保存进度,同时提供有用的恢复提示。
标签:AES-256, CSV 输出, Discord 通知, EVTX分析, Framer Motion, Go, Headless Chrome, HTTP 检测, JSON 输出, React, Ruby工具, SBOM分析, SEO 检索, Svelte, Syscalls, Vue, wappalyzergo, Web 技术检测, 关键字过滤, 前端框架检测, 动态加载, 多格式输出, 大批量扫描, 崩溃恢复, 并发扫描, 开源安全工具, 技术匹配, 技术栈识别, 技术盘点, 文件系统扫描, 文本输出, 断点续传, 无头浏览器, 日志审计, 框架探测, 正则表达式, 漏洞评估, 网络工具, 计算机应急响应小组, 逆向工程平台, 静态检测, 高吞吐