amnottdevv/AtDork
GitHub: amnottdevv/AtDork
一款面向安全研究人员的多引擎自动化 OSINT Dorking 工具,支持批量执行高级搜索查询以发现公开暴露的敏感信息。
Stars: 17 | Forks: 4
# AtDork – 专业 OSINT Dorking 工具






[](https://pepy.tech/projects/atdork)
**AtDork** 是一款强大且合规的 OSINT 工具,能够跨多个搜索引擎同时执行高级搜索查询(Google Dorks)。专为安全研究人员、渗透测试人员和 Bug Bounty 猎手设计,它可以自动化发现公开网络上暴露的文档、易受攻击的参数、配置错误的服务器以及其他敏感信息。
## 为什么选择 AtDork?
- 🚀 **极速高效** – 支持多线程批处理,且并发数可配置。
- 🔍 **多引擎支持** – 支持 DuckDuckGo、Google、Bing、Startpage、Yandex、Yahoo 等搜索引擎。
- 🛡️ **匿名搜索** – 内置代理轮换、Tor 集成以及防止 IP 泄露的严格模式。**新增:IP 泄露检测 (`--ip-guard`)**,一旦发现您的真实 IP 暴露,将立即停止扫描。
- 🧹 **纯净结果** – 自动进行垃圾信息过滤、URL 验证和去重。
- 📊 **专业输出** – 支持导出为 JSON、CSV、TXT 格式;使用 SQLite 数据库保存历史记录并支持恢复。**CSV 导出现已具备防公式注入保护。**
- 🎯 **智能过滤** – 支持 WordPress、Joomla、SQLi 等的漏洞特征检测。
- 📝 **模板系统** – 精心策划的基于 YAML 的 dork 集合,助您即时提升效率。
- ⚙️ **高度可配置** – 提供超过 50 个 CLI 参数,全面掌控搜索的各个方面。
- 🔧 **后处理** – 可对发现的 URL 执行外部命令 (`--exec`)。
- 💾 **缓存机制** – 在本地缓存搜索结果,避免冗余请求并支持离线访问。
- 🔒 **安全日志** – 代理凭据会自动从日志文件中脱敏,防止意外泄露。
## 安装说明
### 通过 PyPI 安装(推荐)
```
pip install atdork
```
### 从源码安装
```
git clone https://github.com/amnottdevv/atdork.git
cd atdork
pip install .
```
### 验证安装
```
atdork --version
# atdork 1.3.8
```
## 快速入门
### 1. 您的首次搜索
```
atdork -q "site:gov filetype:pdf" -r 10
```
该命令将在政府网站上查找 PDF 文件,并显示前 10 条结果。
### 2. 将结果保存到文件
```
atdork -q "intitle:index.of mp3" -r 20 --format json -o music.json
```
### 3. 批处理
创建一个文件 `dorks.txt`:
```
site:edu filetype:xls
inurl:admin login
intitle:"index of" "backup"
```
一次性运行它们:
```
atdork --batch-file dorks.txt -r 30 --format csv -o results.csv
```
### 4. 使用代理搜索(匿名)
```
atdork -q "confidential filetype:docx" --proxy "http://user:pass@proxy:8080" --strict
```
## 详细用法
### 单次查询
```
atdork -q "inurl:product.php?id=" -r 50 --backend google --region uk-en --safesearch off
```
| 参数 | 用途 |
|------|---------|
| `-q` | 您的 dork 查询语句 |
| `-r` | 结果数量(最大 100) |
| `--backend` | 搜索引擎:`google`、`bing`、`duckduckgo`、`startpage`、`yandex`、`auto` |
| `--region` | 地区代码:`us-en`、`uk-en`、`de-de`、`ru-ru` 等 |
| `--safesearch` | `on`、`moderate`、`off` |
### 多线程批处理
```
atdork --batch-file dorks.txt -r 40 --concurrency 5 --delay 2 --format json -o batch_results.json
```
| 参数 | 用途 |
|------|---------|
| `--batch-file` | 每行包含一个 dork 的文本文件 |
| `--concurrency` | 并行线程数(1‑10) |
| `--delay` | 请求之间的延迟秒数(避免触发速率限制) |
| `-o` | 将所有结果保存到单个文件中 |
| `--output-dir` | 将每个查询的结果保存为单独的文件 |
### Dork 模板(预置)
列出可用的模板:
```
atdork --list-templates
```
使用模板:
```
atdork --template sqli --target example.com -r 30
```
将多个模板与自定义查询结合使用:
```
atdork --template sqli,wordpress,exposed_config -q "site:gov filetype:pdf" -r 25
```
预览模板将执行的操作:
```
atdork --template login_panels --preview
```
仅运行模板中的特定 dorks:
```
atdork --template sqli --select 1,3,5 -r 20
```
| 参数 | 用途 |
|------|---------|
| `--template` | 模板名称,用逗号分隔 |
| `--target` | 用于替换模板 dorks 中 `{target}` 的域名 |
| `--select` | 运行模板中指定的 dork 编号 |
| `--list-templates` | 显示所有可用的模板 |
| `--preview` | 仅显示 dorks 而不执行 |
| `--template-path` | 自定义模板文件夹 |
### 代理与匿名
```
# 单个 proxy
atdork -q "target" --proxy "http://user:pass@host:8080"
# 多个 proxy(逗号分隔)
atdork -q "target" --proxy "http://p1:8080,socks5://p2:1080"
# 从文件
atdork -q "target" --proxy-file proxies.txt
# Tor 集成
atdork -q "target" --tor --strict
# 严格模式(如果所有 proxy 宕机则失败)
atdork -q "target" --proxy-file proxies.txt --strict
# proxy 管理
atdork -q "target" --proxy-file proxies.txt --proxy-cooldown 120 --max-failures 3
```
**代理文件格式 (`proxies.txt`):**
```
# HTTP proxy
http://user:pass@dc1.provider.com:3128
http://user:pass@dc2.provider.com:3128
# SOCKS proxy
socks5://res1.provider.com:1080
socks5h://res2.provider.com:1080
# 以 # 开头的注释将被忽略
```
### 漏洞过滤
```
# 基础 WordPress 检测
atdork -q "inurl:wp-content" -r 30 --filter-vuln wordpress
# 仅链接过滤器(仅匹配 URL)
atdork -q "site:example.com" --filter-vuln wordpress-link
```
在 `wordlists/` 文件夹中创建您自己的字典文件:
```
# wordlists/myplatform.txt
wp-content
wp-admin
wp-includes
```
### 弹性与速率限制
```
# 启用 circuit breaker 和 backend fallback
atdork --batch-file dorks.txt --resilient
# 基于 backend 响应的自适应延迟
atdork --batch-file dorks.txt --adaptive-delay
# 组合
atdork --batch-file dorks.txt --resilient --adaptive-delay --concurrency 5 --delay 2
```
### 输出验证
```
# 禁用所有过滤(保留原始结果)
atdork -q "test" --no-validate
# 严格过滤(要求 snippet 非空)
atdork -q "test" --strict-filter
# 精细控制
atdork -q "test" --validate-url only --validate-title 10 --validate-desc 50 --validate-spam true
```
### 数据库与历史记录
```
# 恢复中断的批处理
atdork --resume
# 查看搜索历史
atdork --history
# 将数据库导出为 JSON/CSV
atdork --export-db all_results.json
# 禁用重复 URL 检测
atdork -q "test" --no-dedup
```
### IP 泄露检测(新增)
```
# 在使用 proxy 时如果暴露了您的真实 IP 则立即停止
atdork --batch-file dorks.txt --proxy-file proxies.txt --strict --ip-guard
```
### 后处理(新增)
```
# 为每个发现的 URL 运行命令
atdork -q "inurl:admin" -r 10 --exec "curl -I {} | grep Server"
# 仅对标记为 vulnerable 的 URL 运行命令
atdork -q "inurl:wp-content" -r 30 --filter-vuln wordpress --exec-on-vuln "wpscan --url {}"
```
### 缓存结果(新增)
```
# 缓存搜索结果 24 小时(默认)
atdork -q "site:gov filetype:pdf" -r 20 --cache
# 仅使用缓存结果(offline 模式)
atdork -q "site:gov filetype:pdf" -r 20 --cache-only
# 清除所有缓存数据
atdork --clear-cache
```
## 完整参数说明
| 参数 | 描述 | 默认值 |
|------|-------------|---------|
| `-q`, `--query` | 搜索 dork 查询语句 | |
| `-r`, `--max-results` | 最大结果数(1‑100) | 20 |
| `--batch-file` | 每行一个查询语句的文件 | |
| `--batch-separator` | 内联查询的分隔符 | `;` |
| `-o`, `--output` | 将结果保存到文件 | |
| `--output-dir` | 将每个查询保存到单独的文件 | |
| `--format` | 输出格式:`txt`、`json`、`csv` | `txt` |
| `-v`, `--verbose` | 在批处理模式下显示结果 | |
| `--no-snippet` | 在终端中隐藏摘要片段 | |
| `--template` | 加载 dork 模板 | |
| `--target` | 用于模板替换的域名 | |
| `--select` | 从模板中选择特定的 dorks | |
| `--list-templates` | 列出可用的模板 | |
| `--template-path` | 自定义模板目录 | |
| `--preview` | 预览模板 dorks | |
| `--region` | 搜索地区 | `us-en` |
| `--safesearch` | `on`、`moderate`、`off` | `moderate` |
| `--timelimit` | `d`、`w`、`m`、`y` | |
| `--backend` | 搜索引擎 | `auto` |
| `--user-agent` | 自定义 User‑Agent | 自动轮换 |
| `--timeout` | 请求超时时间(秒) | 10 |
| `--retries` | 失败时的重试次数 | 2 |
| `--delay` | 请求之间的延迟(秒) | 0 |
| `--proxy` | 逗号分隔的代理 URL | |
| `--proxy-file` | 包含代理 URL 的文件 | |
| `--tor` | 使用 Tor SOCKS5 代理 | |
| `--strict` | 如果所有代理均失效则报错中止 | |
| `--proxy-cooldown` | 代理失败后的冷却时间(秒) | 60 |
| `--max-failures` | 失败 N 次后移除代理 | 3 |
| `--concurrency` | 用于批处理的并行线程数 | 1 |
| `--resilient` | 启用熔断与回退机制 | |
| `--adaptive-delay` | 启用自适应速率限制 | |
| `--ip-guard` | 启用 IP 泄露检测 | |
| `--exec` | 对每个结果 URL 执行命令 | |
| `--exec-on-vuln` | 对存在漏洞的结果执行命令 | |
| `--exec-parallel` | 并行执行的 `--exec` 进程数 | 1 |
| `--exec-timeout` | 每个 `--exec` 命令的超时时间(秒) | 30 |
| `--cache` | 启用结果缓存 | |
| `--cache-db` | 缓存数据库路径 | `atdork_cache.db` |
| `--cache-ttl` | 缓存有效期(小时) | 24 |
| `--cache-only` | 仅使用缓存,不发送网络请求 | |
| `--clear-cache` | 启动前删除所有缓存 | |
| `--no-validate` | 禁用垃圾信息过滤 | |
| `--strict-filter` | 严格验证模式 | |
| `--validate-url` | URL 验证模式 | `all` |
| `--validate-title` | 最小标题长度 | 5 |
| `--validate-desc` | 最小描述长度 | 10 |
| `--validate-spam` | 启用垃圾信息检测 | `true` |
| `--filter-vuln` | 漏洞平台过滤器 | |
| `--no-fallback-backends` | 禁用后端回退机制 | |
| `--no-verify` | 禁用 SSL 验证 | |
| `--log-file` | 日志文件路径 | `atdork.log` |
| `--db-path` | 数据库路径 | `atdork.db` |
| `--resume` | 恢复未完成的查询 | |
| `--history` | 显示搜索历史记录 | |
| `--no-dedup` | 禁用 URL 去重 | |
| `--export-db` | 将数据库导出到文件 | |
| `--config` | YAML 配置文件路径 | |
| `--interactive` | 交互模式 | |
| `--debug` | 启用调试日志 | |
| `--version` | 显示版本号并退出 | |
## 实际应用场景
### 带有全面保护的 Bug Bounty 侦察
```
atdork --template sqli,xss,lfi --target target.com \
--proxy-file proxies.txt --strict --resilient --ip-guard \
--format json -o recon.json
```
### 暴露的数据库凭据
```
atdork -q 'filetype:env "DB_PASSWORD"' -r 50 --no-validate -v
```
### 发现后台管理面板
```
atdork -q 'intitle:"admin panel" inurl:login' -r 30 --backend google --region uk-en
```
### 带有后处理的 WordPress 漏洞扫描
```
atdork -q "inurl:wp-content site:example.com" -r 40 \
--filter-vuln wordpress \
--exec-on-vuln "wpscan --url {} --enumerate p" \
--exec-parallel 2 --exec-timeout 60
```
### 每周自动监控
```
# 添加到 crontab (Linux/macOS)
0 6 * * 1 cd /path/to/atdork && atdork --batch-file weekly_dorks.txt --format csv --output-dir /reports/$(date +\%Y-\%W)/
```
## 配置文件
创建 `atdork.yaml` 以进行持久化设置:
```
max_results: 30
region: "uk-en"
safesearch: "off"
delay: 1.0
format: "json"
output_dir: "./results"
proxy_file: "proxies.txt"
```
AtDork 会自动从当前目录加载此文件。CLI 参数的优先级高于 YAML 配置值。
## 故障排除
| 问题 | 解决方案 |
|---------|----------|
| **触发速率限制 (429)** | 添加 `--delay 3`,使用 `--proxy-file`,或启用 `--adaptive-delay` |
| **没有结果** | 尝试不同的 `--backend`(例如 `startpage`、`yandex`)或更改 `--region` |
| **代理失效** | 检查格式:`scheme://user:pass@host:port` |
| **批处理卡住** | 降低 `--concurrency`,增加 `--timeout 15`,启用 `--resilient` |
| **安装错误** | 使用 `pip install -e .` 进入开发模式安装 |
| **使用 --strict 仍发生 IP 泄露** | 启用 `--ip-guard` 以尽早检测泄露;使用 SOCKS5h 代理 |
| **所有后端均耗尽** | 启用 `--resilient` 以激活后端回退链 |
| **打开 CSV 时显示公式** | 更新至 v1.3.8 及以上版本(已修复 CSV 注入问题) |
| **日志中出现代理凭据** | 更新至 v1.3.8 及以上版本(凭据现已自动脱敏) |
## 项目结构
```
atdork/
├── atdork.py # CLI entry point
├── core/
│ ├── scanner.py # Search engine integration
│ ├── batch_runner.py # Batch execution (seq/parallel, resilience)
│ ├── proxy_manager.py # Proxy pool management
│ ├── filter_vuln.py # Vulnerability signature filtering
│ ├── template_dork.py # YAML template loader
│ ├── post_processor.py # External command execution on results
│ ├── manage_cache.py # SQLite-based result caching
│ ├── database.py # SQLite storage & export
│ ├── config.py # YAML configuration loader
│ ├── logger.py # Rotating file logger
│ └── case/
│ ├── circuit_breaker.py # Prevent hammering dead backends
│ ├── ip_guard.py # Real IP leak detection
│ ├── error_classifier.py # Categorize exceptions
│ ├── fallback_manager.py # Intelligent backend/proxy switching
│ ├── retry_handler.py # Exponential backoff with jitter
│ ├── adaptive_delay.py # Per‑backend dynamic delay
│ ├── recovery_strategy.py # Map errors to recovery actions
│ └── stats.py # Runtime statistics collector
├── lib/
│ ├── display.py # Terminal output formatting
│ ├── storage.py # File export (TXT/JSON/CSV)
│ ├── validator.py # Spam/invalid result filtering
│ └── redactor.py # Proxy credential redaction
├── wordlists/ # Vulnerability signatures & templates
├── tests/ # Unit tests (pytest)
├── pyproject.toml # Package configuration
└── README.md
```
## 道德使用与免责声明
AtDork 仅用于**合法、授权的安全测试**。
在扫描之前,您必须获得目标所有者的明确书面许可。
**严禁用于:**
- 未经授权访问系统或数据
- 违反法律法规收集信息
- 任何侵犯隐私或知识产权的行为
开发者不对本软件的滥用行为承担任何责任。
## 许可证
基于 MIT 许可证分发。详情请参阅 `LICENSE`。
## 致谢
- **tg12** – 负责任地披露了严重的安全漏洞(CSV 注入和代理凭据泄露),并帮助使 AtDork 对所有人都更加安全。
- **Peter786** – 提交了优秀的拉取请求,修复了打包的字典资源问题,确保 `pip install` 用户能够无缝使用。
## 联系与支持
- **GitHub:** [github.com/amnottdevv/atdork](https://github.com/amnottdevv/atdork)
- **问题反馈:** [github.com/amnottdevv/atdork/issues](https://github.com/amnottdevv/atdork/issues)
- **PyPI:** [pypi.org/project/atdork](https://pypi.org/project/atdork/)
如果您觉得这个工具好用,请考虑在 GitHub 上给它点个 ⭐!
标签:Prometheus, Python, 实时处理, 搜索引擎Dorking, 无后门, 逆向工具