infohlaingbwar/d0rk3r
GitHub: infohlaingbwar/d0rk3r
一款无需 Shodan API key、通过代理轮换爬取 Shodan 公开搜索结果并批量提取 IP 的安全侦察工具。
Stars: 0 | Forks: 0
# D0RK3R
欢迎贡献!随时欢迎提交 issue 或 PR。
```
____ _____ ____ _ ____ _____ ____
( _ \( _ )( _ \( )/ ___)( _ )( _ )(_) ))(_)(( )(_) )|\___ \ )(_)(( )___/
(____/(_____)(____/(_)(____/(_____)(__)
```
**🔍 Shodan IP 爬虫,支持自动代理轮换。无需 API key。**
[](https://www.python.org/downloads/)
[](LICENSE)
[](https://github.com/infohlaingbwar/d0rk3r/stargazers)
[](https://github.com/infohlaingbwar/d0rk3r/issues)
[](CONTRIBUTING.md)
非常适合 OSINT、bug bounty 和渗透测试。
[功能](#features) • [安装](#install) • [用法](#usage) • [示例](#shodan-dork-syntax)
## 功能
✅ **自动代理** — 自动从 GitHub 获取可用代理
✅ **代理轮换** — 绕过 Shodan 速率限制
✅ **智能缓存** — 代理复用时长为 6 小时
✅ **无需 API key** — 爬取公开的 Shodan 搜索结果
✅ **快速提取** — 几秒钟内获取数百至数千个 IP
## 安装
```
git clone https://github.com/infohlaingbwar/d0rk3r
cd d0rk3r
pip install requests[socks]
python3 d0rk3r.py -q "port:443" --auto-proxy
```
如果缺少 `requests` 会自动安装。
### Termux
```
pkg install python
pip install requests[socks]
git clone https://github.com/infohlaingbwar/d0rk3r
cd d0rk3r
python d0rk3r.py -q "port:443" --auto-proxy
```
### Kali / Debian / Ubuntu / WSL (PEP 668 错误)
```
pip3 install --break-system-packages requests[socks]
python3 d0rk3r.py -q "port:443" --auto-proxy
```
## 用法
### 自动代理(推荐)
```
# CVE hunting
python3 d0rk3r.py -q "Apache/2.4.49" --auto-proxy -o results.txt
# Bug bounty recon
python3 d0rk3r.py -q 'org:"Tesla Motors"' --auto-proxy --pages 3
# IoT devices
python3 d0rk3r.py -q "port:554 rtsp country:MM" --auto-proxy
# Vulnerable hosts
python3 d0rk3r.py -q "vuln:CVE-2021-41773" --auto-proxy
```
### 手动代理文件
创建 `proxy.txt`:
```
http://user:pass@1.2.3.4:8080
socks5://5.6.7.8:1080
http://9.10.11.12:3128
```
然后:
```
python3 d0rk3r.py -q "port:443" -p proxy.txt --pages 5
```
### 无代理(直连)
```
python3 d0rk3r.py -q "nginx country:MM"
```
## Shodan Dork 语法
| 语法 | 示例 | 描述 |
|--------|---------|-------------|
| `port:` | `port:22` | 开放 SSH 的主机 |
| `country:` | `country:MM` | 缅甸服务器 |
| `city:` | `city:Yangon` | 城市位置 |
| `org:` | `org:"MPT"` | 组织 |
| `hostname:` | `hostname:gov.mm` | 域名 |
| `os:` | `os:Windows` | 操作系统 |
| `product:` | `product:nginx` | 软件 |
| `vuln:` | `vuln:CVE-2021-41773` | 存在漏洞的 CVE |
| `http.title:` | `http.title:"admin"` | 页面标题 |
| `ssl:` | `ssl:"Myanmar"` | SSL 证书信息 |
**组合查询:**
```
python3 d0rk3r.py -q "Apache/2.4.49 country:MM port:443" --auto-proxy
```
## 参数标志
| 标志 | 描述 |
|------|-------------|
| `-q` | Shodan dork 查询(必填) |
| `--auto-proxy` | 从 GitHub 自动获取代理 |
| `-p` | 手动代理文件的路径 |
| `--pages` | 每个代理的请求数(默认:2) |
| `--page-max` | 最大总请求数(0 = 自动) |
| `-o` | 将输出保存到文件 |
| `--timeout` | 请求超时时间(秒)(默认:10) |
| `--delay` | 请求之间的延迟(秒)(默认:0.5) |
| `--no-banner` | 跳过 banner |
## 工作原理
### 自动代理
1. 从 GitHub 公开列表中获取最新代理
2. 验证可用代理(测试 100 个样本)
3. 将代理缓存 6 小时
4. 在爬取过程中轮换代理
### 绕过 Shodan
免费的 Shodan 每个IP大约允许访问 ~2 页。
使用代理轮换:
```
Proxy A → page 1 (~300 IPs)
Proxy B → page 1 (~300 new IPs)
Proxy C → page 1 (~300 new IPs)
...
```
10 个代理 × 2 页 = 600-3000+ 个独立 IP。
## 示例输出
```
$ python3 d0rk3r.py -q "nginx" --auto-proxy --pages 1
[*] Auto-fetching proxies...
[+] Loaded 13 working proxies
┌─ Proxies : 13
├─ Requests : 13 (1 per proxy)
└─ Query : nginx
════════════════════════════════════════════════
✔ 1005 unique IPs │ 1 req OK │ 12 fail │ 55.0s
════════════════════════════════════════════════
├─ 101.230.14.203
├─ 102.182.100.18
├─ 103.100.84.76
...
└─ 1005 total
```
## 文件
| 文件 | 用途 |
|------|---------|
| `d0rk3r.py` | 主脚本 |
| `proxy_fetcher.py` | 自动代理模块 |
| `.proxy_cache.txt` | 缓存的代理(自动生成) |
## 注意
本项目爬取的是 Shodan 的公开网页搜索结果。不保证 IP 的准确性。请务必自行验证结果。
仅供教育和授权测试使用。
## 许可证
MIT
## 贡献者
标签:OSINT工具, Python, 安全测试, 实时处理, 密码管理, 攻击性安全, 无后门, 系统独立性, 网络资产收集, 逆向工具