基于 HTTP Range 分片并行下载,突破单连接带宽瓶颈。
支持断点续传、浏览器接管,极速体验高达 6+ MB/s。
专注下载加速这一件事,做到极致
将文件切成 N 个分片,通过多条独立 TCP 连接并行拉取数据,总吞吐量约为单连接的 8 倍,大幅提升下载速度。
实时保存每个分片的下载进度到本地文件。中断后重新启动,自动从上次断点处继续,绝不重复下载。
安装 Chrome 扩展后,自动接管浏览器下载任务,将 URL 发送到 ar bt 桌面端进行高速下载。
不信任服务器的 Accept-Ranges 声明,通过实际发送 Range 请求验证 206 状态码,避免重复下载导致的错误。
使用 seek + write 直接定位写入,每个线程只写自己负责的字节区间,互不阻塞,高效利用磁盘 I/O。
当服务器不支持 Range 请求时,自动降级为单线程下载模式,保证兼容性与稳定性。
用 HTTP Range 请求,把一个文件切成分片,多线程并行下载,再合并
发送 Range 请求探测服务器是否真正支持分片下载,检查响应状态码是否为 206 Partial Content。
根据文件大小和线程数,将文件均匀切割为 N 个分片,每个分片指定自己的字节范围 Range 头。
每个线程独立发起请求,使用 seek + write 将数据写入文件的对应位置,互不阻塞,零冲突。
实时将各分片下载进度持久化到本地文件,中断后可精确恢复,删除 .arbt 即完成下载。
简洁优雅的分片并行下载实现
# 分片计算 def calc_chunks(total_size, num_threads): chunk_size = total_size // num_threads chunks = [] for i in range(num_threads): start = i * chunk_size end = start + chunk_size - 1 if i == num_threads - 1: end = total_size - 1 chunks.append((start, end)) return chunks # 并行下载写入 fd = open("file.zip", "r+b", buffering=0) for chunk_data, chunk_start in download_chunk(url, start, end): fd.seek(chunk_start) fd.write(chunk_data) # 断点续传: 每秒持久化进度到 .arbt progress = { "url": "https://...", "total": 12345, "chunks": [ {"start": 0, "end": 1530, "downloaded": 800}, {"start": 1531, "end": 3060, "downloaded": 1529}, ] }
桌面端 + 浏览器扩展,完整生态
Python 多线程下载引擎,内置 BaseHTTPRequestHandler HTTP 服务,监听 127.0.0.1:16888 接收下载任务。
监听 chrome.downloads.onCreated,自动取消浏览器下载并将 URL 转发到桌面端。
每秒将下载进度写入 .arbt JSON 文件,支持精确到字节的断点续传恢复。
利用 Range: bytes=start-end 请求头实现分片下载,配合 Connection: keep-alive 复用连接。
使用 seek(start) + write(data) 直接定位写入,每个线程负责不重叠区间,线程安全无锁。
桌面端未启动时,扩展会通过 chrome.notifications 提醒用户启动服务。