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网络, 威胁情报, 实时处理, 开发者工具, 数据泄露, 无后门, 暗网爬虫, 逆向工具