quincyomoruyi6-lang/Dark-Web-Tor-Crawler
GitHub: quincyomoruyi6-lang/Dark-Web-Tor-Crawler
一个通过 Tor 匿名网络路由流量的 .onion 暗网站点 Python 爬虫,专为授权安全研究和 OSINT 调查设计。
Stars: 0 | Forks: 0
暗网 Tor 爬虫
一个用于 .onion 站点、生产就绪的 Python 爬虫,通过 Tor 匿名网络路由所有流量。
专为授权的安全研究、威胁情报收集和 OSINT 调查而构建。
法律与道德免责声明
使用本工具前请务必阅读
· 本软件仅供合法的安全研究、获得明确书面授权的渗透测试以及威胁情报分析使用。
· 未经许可爬取 .onion 站点可能会违反地方、国家及国际法律,包括但不限于计算机滥用和数据保护法规。
· 您对自己如何使用本工具负全部责任。作者对使用本工具进行的任何非法或不道德活动不承担任何责任。
· 部分 .onion 服务托管有非法内容。请勿交互或访问此类内容。
· 在任何环境中部署本工具之前,请务必咨询您的法律顾问。
功能
· 完整的 Tor 集成 – 所有 HTTP/HTTPS 流量均通过 Tor SOCKS5 代理进行路由。
· 自动 IP 更新 – 以可配置的时间间隔请求新的出口节点 (stem)。
· 智能重试 – 针对短暂的网络故障提供带有指数退避机制的重试逻辑。
· 递归爬取 – 可根据用户定义的深度跟进 .onion 链接。
· 结构化输出 – 提取标题、文本预览以及所有超链接。
· 命令行友好 – 提供完整的参数控制(深度、最大页面数、输出文件)。
· 礼貌抓取 – 可配置的延迟,避免使目标服务器过载。
前置条件
要求 说明
Python 3.7+ 已在 3.8–3.12 版本上测试
Tor daemon 需在本地运行,并启用 ControlPort 和 SOCKS
网络访问 必须能够访问 Tor 网络(端口 9050 无出站防火墙拦截)
安装说明
1. 安装并配置 Tor
```
# Debian/Ubuntu
sudo apt update && sudo apt install tor -y
# 编辑配置
sudo nano /etc/tor/torrc
```
确保以下几行未被注释或已被添加:
```
SocksPort 9050
ControlPort 9051
CookieAuthentication 1
```
然后启动服务:
```
sudo systemctl start tor
sudo systemctl enable tor # optional, to start on boot
```
对于 macOS/Windows,请从 Tor Project 下载 Tor Expert Bundle,并从命令行运行 `tor.exe` 或 `tor`。
2. 克隆或下载脚本
将脚本保存为项目目录中的 `dark_crawler.py`。
3. 安装 Python 依赖项
创建一个包含以下内容的 `requirements.txt`:
```
requests>=2.28.0
beautifulsoup4>=4.11.0
stem>=1.8.0
urllib3>=1.26.0
```
然后安装:
```
pip install -r requirements.txt
```
或者直接安装:
```
pip install requests beautifulsoup4 stem urllib3
```
用法
基本命令
```
python dark_crawler.py http://your-target.onion
```
带选项的完整示例
```
python dark_crawler.py http://protonmailrmez3lotccipshtkleegetolb73fuirgp7rfuxlyz3qs.onion/ \
--depth 2 \
--pages 15 \
--renew 3 \
--output results.txt
```
命令行参数
参数 简写 默认值 描述
url (位置参数) 必填 要爬取的起始 .onion URL
--depth -d 1 要跟进的最大链接深度(0 = 不递归)
--pages -p 20 要获取的最大总页面数(防止无限循环)
--renew -r 5 每获取 N 个页面更新一次 Tor 出口节点
--output -o None 将结构化结果保存到文本文件
输出示例
当您运行爬虫时,将在终端中看到实时日志:
```
2026-06-21 10:15:23 - INFO - Tor is active – IP: 185.220.101.23
2026-06-21 10:15:25 - INFO - Starting crawl: http://example.onion/ (depth=2, max_pages=10)
2026-06-21 10:15:27 - INFO - Fetching: http://example.onion/
2026-06-21 10:15:30 - INFO - Page 1: Welcome to Example – http://example.onion/
2026-06-21 10:15:35 - INFO - Fetching: http://example.onion/about
...
============================================================
Crawled 8 pages:
http://example.onion/ – Welcome
Links: 12 found
http://example.onion/about – About Us
Links: 3 found
============================================================
```
如果使用了 `--output results.txt`,文件中将包含结构化数据:
```
URL: http://example.onion/
Title: Welcome
Links: http://example.onion/about, http://example.onion/contact
Preview: This is the homepage text truncated to 500 characters...
------------------------------------------------------------
URL: http://example.onion/about
Title: About Us
Links: http://example.onion/team
Preview: We are a team of security researchers...
------------------------------------------------------------
```
配置说明(脚本内部)
您可以直接修改 `dark_crawler.py` 顶部的以下常量,而无需改动核心逻辑:
变量 默认值 描述
TOR_SOCKS 'socks5h://127.0.0.1:9050' SOCKS 代理地址(如果 Tor 在其他位置运行,请进行更改)
TOR_CONTROL_PORT 9051 供 stem 发送 NEWNYM 信号的控制端口
USER_AGENT 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)...' 伪造的浏览器身份
MAX_RETRIES 3 请求失败时的重试次数
BACKOFF_FACTOR 2 指数退避乘数(1秒、2秒、4秒……)
TIMEOUT 30 请求超时时间(以秒为单位)
LOG_LEVEL logging.INFO 更改为 DEBUG 以进行详细的故障排除
工作原理
1. 会话初始化 – 创建带有 SOCKS5 代理指向 Tor 的 `requests.Session`。
2. IP 轮换 – 使用 stem 连接到 Tor 的控制端口并发送 NEWNYM 信号,请求一个新的出口链路。
3. 获取并解析 – 检索 HTML,使用 BeautifulSoup 进行解析,并提取:
· 页面标题
· 所有 .onion 锚点链接(标准化为绝对 URL)
· 纯文本预览(前 500 个字符)
4. 递归队列 – 将新链接添加到 FIFO 队列中,并遵守 `--depth` 限制。
5. 礼貌延迟 – 在两次请求之间休眠 1 秒,以减轻隐藏服务的负载。
6. 输出 – 将摘要打印到 stdout,并可选择将详细结果写入文件。
故障排除
问题 可能原因 解决方案
Tor 不可用 Tor daemon 未运行 运行 `sudo systemctl start tor` 或检查您的操作系统服务
身份验证失败 `torrc` 中未设置 CookieAuthentication 在 `/etc/tor/torrc` 中取消 `CookieAuthentication 1` 的注释并重启 Tor
连接超时 .onion 站点已关闭或响应极慢 增加 TIMEOUT;某些隐藏服务需要 >60秒 才能响应
403 Forbidden 目标站点拦截了您的 user agent 或请求模式 更改 USER_AGENT 或增加 renew_interval 以更频繁地轮换 IP
ControlPort 9051 不可用 端口冲突或 Tor 编译时未包含控制支持 检查您的 `torrc` 配置并重启 Tor
仅解析了静态 HTML 站点使用 JavaScript 渲染内容 本爬虫不执行 JS。对于动态站点,请考虑添加 selenium 或 playwright(但这需要超出纯 Python 范围的额外库)
项目结构
```
.
├── dark_crawler.py # Main executable script
├── requirements.txt # Python dependencies
└── README.md # This file
```
许可证
MIT 许可证 – 您可以出于任何目的自由使用、修改和分发本软件,前提是包含原始版权声明和本权限声明。但是,本许可证并不授予免受法律起诉的豁免权 – 在使用本工具时,您仍需对自己的行为承担全部责任。
致谢
· Tor Project – 提供了匿名网络。
· stem 库 – 实现了无缝的 Tor 控制器集成。
· requests 和 BeautifulSoup – 让 HTTP 和 HTML 解析变得轻而易举。
如果本工具对您的安全研究有帮助,请给仓库点个 star 并合理合规地使用。
标签:ESC4, OSINT, Python, Splunk, Tor网络, 威胁情报, 实时处理, 开发者工具, 数据泄露, 无后门, 暗网爬虫, 逆向工具