euphoria95/OnionAccelerator

GitHub: euphoria95/OnionAccelerator

洋葱加速器:通过Tor网络加速匿名下载。

Stars: 1 | Forks: 0

# 洋葱加速器 OnionAccelerator 是一个多功能的 Python 脚本,旨在通过多个 SOCKS5 代理(通常是 Tor 实例)下载文件。它支持三种主要模式: ## 模式 ### 多下载模式 - 同时下载 `URLs.txt` 中列出的多个文件,每个代理一个工作线程(限制在 URL 数量,因此不会产生空闲线程)。 - 自动重试失败的下载,次数可配置。 - 通过终端的单个进度条汇总下载进度。 ### 部分下载模式 - 将每个文件分割成并行字节范围块——每个代理一个,但永远不会超过文件大小所保证的块数(块至少为 `MIN_PARTIAL_CHUNK_SIZE`,默认为 1 MB)——每个块分配给不同的 SOCKS5 代理。 - 如果服务器不提供 `Content-Length` 头部,脚本将自动回退到单个、顺序下载。 - 成功后合并下载的块到最终文件,如果任何块失败,则执行重试逻辑。 ### 速度测试 & 健康检查模式 - **并行** 测试所有 SOCKS5 端口,并显示每个端口的速度和失败情况的摘要(带有表情符号指示器)。 - 使用随机选择的可用端口而不是始终默认使用端口 5000 来检查完整 URL 列表的可用性。 ## 关键特性 ### 多线程 & SOCKS5 代理 - 动态分配多达 20 个本地 SOCKS5 端口(例如,`127.0.0.1:5000–127.0.0.1:5019`),用于并行获取,可能加快通过 Tor 的下载速度。 ### 进度条 - 使用 `tqdm` 显示清晰的下载进度: - 多下载的单个汇总进度条。 - 部分下载模式下每个文件的专用进度条。 - 回退顺序下载也显示内联进度条。 ### 重试逻辑 - 失败的下载和单个块将内联重试(最多 `--retries` 次尝试),无需重新排队,避免在工作池在重试过程中清空时出现潜在的死锁。 ### 无冲突的输出路径 - 下载的文件存储在以主机名为子目录下(例如,`downloads/example.onion/file.zip`),因此来自不同主机且文件名相同的 URL 从不会相互覆盖。 ### 日志记录 - 每次运行脚本时生成一个唯一的 `job_id`。 - 将详细日志(DEBUG 级别)写入 `logs/` 目录下的时间戳文件。 - 将基本日志(INFO 级别)输出到控制台。 ### 用户代理 - 从 `UserAgents.tsv` 的第一列加载随机的 User-Agent 字符串(制表符分隔;后续列如使用权重等被忽略)。 ### 无缝回退 - 在部分下载模式下,如果服务器没有广告文件大小(`Content-Length`),脚本将自动切换到单个 GET 请求并继续标准下载。 ## 安装 1. **安装 Python 3**(推荐 3.7+)。 2. **安装依赖项:** pip install -r requirements.txt 3. **确保您有多个 SOCKS5 代理**(例如,端口 `5000..5019` 上的 Tor 实例),或者根据您的设置修改代码。 ## 使用 ### 准备 `URLs.txt` - 将您想要下载的 URL(每行一个)放入名为 `URLs.txt` 的文件中。 ### 运行脚本: ``` python3 OnionAccelerator.py --mode [--retries N] [--external] ``` - `--mode`: - `multi`:`URLs.txt` 中所有 URL 的并行下载,每个工作线程使用自己的 SOCKS5 代理。 - `partial`:每个 URL 的并行基于块的下载,自动合并块。 - `speedtest`:使用 `URLs.txt` 中的第一个 URL 测试每个 SOCKS5 代理的下载速度和基本健康情况。 - `--retries N`:设置下载失败时重试的次数(默认:3)。 - `--external`:使用从公共列表获取的远程 `ip:port` SOCKS5 代理(请参阅下面的 **外部代理列表**)。与任何 `--mode` 兼容。 ### 示例 ``` # 多下载模式,最多重试3次: python3 OnionAccelerator.py --mode multi --retries 3 # 部分下载模式,并行将每个文件分割成20个块: python3 OnionAccelerator.py --mode partial # 速度测试模式,检查每个代理端口: python3 OnionAccelerator.py --mode speedtest # 使用外部代理列表进行多下载,而不是本地Docker Tor: python3 OnionAccelerator.py --mode multi --external ``` ## 项目结构 - `OnionAccelerator.py`:包含所有模式(多下载、部分下载、速度测试)的主要脚本。 - `requirements.txt`:Python 依赖项。 - `URLs.txt`:每行一个 URL 的文本文件。 - `UserAgents.tsv`:制表符分隔的文件;第一列是 User-Agent 字符串。 - `logs/`:存储时间戳日志文件的目录。 - `downloads//`:多模式下的输出目录,按主机名组织。 - `partials//`:部分模式下的输出目录;临时块文件在此合并。 ## 要求 - Python 3.7+ - `requests[socks]` 或 `PySocks` 用于 SOCKS5 支持 - `tqdm` 用于进度条 ## 使用 Bash 一行命令将多个 Tor 代理包装到 docker 中 ``` for port in {5000..5020}; do docker run -d --name "torproxy_$port" -p 127.0.0.1:$port:9050 dperson/torproxy; done ``` ## 外部代理列表 (`--external`) 而不是启动本地 Docker Tor 实例,传递 `--external` 以拉取一个现成的远程 `ip:port` SOCKS5 代理列表: ``` python3 OnionAccelerator.py --mode multi --external ``` - **每次运行时都刷新。** 列表在每次调用时从公共源下载,因此每次执行都使用最新的代理集。 - **限制在 100 个代理。** 如果列表更大,则选择 100 个随机子集(这也是工作线程的硬限制)。 - **在开始任何工作之前进行连接性检查。** 通过从 `URLs.txt` 获取随机 URL 并并行测试每个候选代理来测试每个候选代理的连接性;只有成功返回数据的代理才会使用。如果没有代理通过,则运行中止。 ## 贡献 欢迎拉取请求和改进建议。如果您遇到任何问题或有关高级 Tor 配置的疑问,请随时打开一个问题。
标签:DNS枚举, Docker, SOCKS5代理, Tor网络, 下载优化, 下载优化软件, 下载加速软件, 下载器, 下载管理, 下载管理软件, 健康检查, 匿名下载, 多线程下载, 字节范围下载, 安全下载, 安全防御评估, 并行下载, 情报分析, 文件下载加速, 文件分割, 文件处理, 碰撞避免, 端口测试, 系统分析, 系统工具, 网络下载工具, 网络优化, 网络分析, 网络加速, 网络加速器, 网络加速工具, 网络加速软件, 网络安全, 网络安全工具, 网络工具, 网络应用, 网络性能, 网络文件下载, 网络文件下载工具, 网络文件下载工具软件, 网络文件下载应用, 网络文件下载应用工具, 网络文件下载应用工具软件, 网络文件下载应用软件, 网络文件下载软件, 网络文件传输, 网络文件传输工具, 网络文件传输工具软件, 网络文件传输应用, 网络文件传输应用工具, 网络文件传输应用工具软件, 网络文件传输应用软件, 网络文件传输软件, 网络文件处理, 网络文件处理工具, 网络文件处理工具软件, 网络文件处理应用, 网络文件处理应用工具, 网络文件处理应用工具软件, 网络文件处理应用软件, 网络文件处理软件, 网络文件管理, 网络文件管理工具, 网络文件管理工具软件, 网络文件管理应用, 网络文件管理应用工具, 网络文件管理应用工具软件, 网络文件管理应用软件, 网络文件管理软件, 网络测试, 网络维护, 网络编程, 网络诊断, 请求拦截, 进度条显示, 逆向工具, 速度测试, 重试逻辑, 隐私保护