Replaced wikitext dataset links with SQuAD dataset links in the README to reflect the new data source.
Xget
一个高性能、安全的代理服务,专为加速 GitHub、GitLab 和 Hugging Face 的文件下载和 Git 操作而设计。
🎯 快速使用
公共实例:xget.xi-xu.me - 开箱即用,无需部署!
🌟 特性
⚡ 全球边缘分发与性能加速
- Cloudflare 全球 CDN:利用遍布全球 200+ 个城市的边缘节点,就近响应用户请求
- HTTP/3 支持:启用最新的 HTTP/3 协议,显著降低连接延迟和传输时间
- 智能压缩:自动启用 gzip、deflate、brotli 多重压缩算法,最大化传输效率
- 预连接优化:通过连接预热和保持活跃连接,减少握手开销
- Range 请求支持:完整支持分片下载和断点续传,适配各种下载工具
🌐 多平台深度集成
- GitHub 生态:完美支持 Releases、Archives、Raw 文件和完整的 Git 协议操作
- GitLab 兼容:全面适配 GitLab.com 的文件下载和版本控制功能
- Hugging Face 优化:针对大型模型文件和数据集进行专门优化,支持模型和数据集的高速下载
- 路径智能转换:自动识别平台前缀(/gh/、/gl/、/hf/)并转换为目标平台的正确 URL 结构
🔒 企业级安全保障
- 多层安全标头:
Strict-Transport-Security:强制 HTTPS 传输,预防中间人攻击X-Frame-Options: DENY:防止点击劫持攻击X-XSS-Protection:内置 XSS 防护机制Content-Security-Policy:严格的内容安全策略Referrer-Policy:控制引用信息泄露
- 请求验证机制:
- HTTP 方法白名单:常规请求限制为 GET/HEAD,Git 操作动态允许 POST
- 路径长度限制:防止超长 URL 攻击(最大 2048 字符)
- 输入清理:防止路径遍历和注入攻击
- 超时保护:30 秒请求超时,防止资源耗尽和恶意请求
🚀 现代架构与可靠性
- 智能重试机制:
- 最大 3 次重试,线性延迟策略(1000ms × 重试次数)
- 自动错误恢复,提高下载成功率
- 超时检测和中断处理
- 高效缓存策略:
- 1800 秒(30 分钟)默认缓存时长,显著减少源站压力
- Git 操作跳过缓存,确保实时性
- 基于 Cloudflare Cache API 的边缘缓存
- 性能监控系统:
- 内置
PerformanceMonitor类,实时追踪请求各阶段耗时 - 通过
X-Performance-Metrics响应头提供详细性能数据 - 支持缓存命中率统计和优化建议
- 内置
🎯 Git 协议完全兼容
- 智能协议检测:
- 自动识别 Git 特定端点(
/info/refs、/git-upload-pack、/git-receive-pack) - 检测 Git 客户端 User-Agent 模式
- 支持
service=git-upload-pack等查询参数
- 自动识别 Git 特定端点(
- 完整操作支持:
git clone:完整仓库克隆,支持浅克隆和分支指定git push:代码推送和分支管理git pull/fetch:增量更新和远程同步git submodule:子模块递归克隆
- 协议优化:
- 保持 Git 专用请求头和认证信息
- 智能 User-Agent 处理(默认
git/2.34.1) - 支持 Git LFS 大文件传输
📱 生态系统集成
- 专用浏览器扩展:Xget for Chromium 提供无缝体验
- 自动链接重定向,无需手动修改 URL
- 支持自定义 Xget 实例域名
- 多平台偏好设置和黑白名单管理
- 本地处理,确保隐私安全
- 下载工具兼容:完美支持 wget、curl、aria2、IDM 等主流下载工具
- CI/CD 集成:可直接在 GitHub Actions、GitLab CI 等环境中使用
🚀 部署选择
Cloudflare Workers 一键部署
部署后,你的 Xget 服务将在 your-worker-name.your-subdomain.workers.dev 上可用。
手动部署
如果你更喜欢手动部署或需要自定义配置:
前置要求
- 注册 Cloudflare 账户
- 安装 Node.js
部署步骤
-
克隆存储库
git clone https://github.com/xixu-me/Xget.git cd Xget -
安装依赖并认证
npm install npx wrangler auth login -
自定义配置(可选)
编辑
wrangler.toml文件设置你的项目名称:name = "你的-xget-项目名" -
部署
npm run deploy
部署完成后,你的 Xget 服务将在 your-worker-name.your-subdomain.workers.dev 上可用。
📖 链接转换规则
使用公共实例 xget.xi-xu.me 或你自己部署的实例,只需简单替换域名并添加平台前缀:
转换格式
原始链接:https://[平台域名]/[路径]
加速链接:https://[Xget域名]/[平台前缀]/[路径]
各平台转换示例
GitHub
# 原始链接
https://github.com/microsoft/vscode/archive/refs/heads/main.zip
# 转换后(添加 /gh/ 前缀)
https://xget.xi-xu.me/gh/microsoft/vscode/archive/refs/heads/main.zip
GitLab
# 原始链接
https://gitlab.com/gitlab-org/gitlab/-/archive/master/gitlab-master.zip
# 转换后(添加 /gl/ 前缀)
https://xget.xi-xu.me/gl/gitlab-org/gitlab/-/archive/master/gitlab-master.zip
Hugging Face
# 模型文件原始链接
https://huggingface.co/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
# 转换后(添加 /hf/ 前缀)
https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
# 数据集文件原始链接
https://huggingface.co/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet
# 转换后(添加 /hf/ 前缀)
https://xget.xi-xu.me/hf/datasets/rajpurkar/squad/resolve/main/plain_text/train-00000-of-00001.parquet
🎯 应用场景
Git 版本控制操作
Xget 完全兼容 Git 协议,支持所有标准 Git 操作:
# 克隆仓库
git clone https://xget.xi-xu.me/gh/microsoft/vscode.git
# 克隆指定分支
git clone -b main https://xget.xi-xu.me/gh/facebook/react.git
# 浅克隆(仅最新提交)
git clone --depth 1 https://xget.xi-xu.me/gh/torvalds/linux.git
# 添加远程仓库
git remote add upstream https://xget.xi-xu.me/gh/original/repo.git
# 拉取更新
git pull https://xget.xi-xu.me/gh/microsoft/vscode.git main
# 子模块递归克隆
git clone --recursive https://xget.xi-xu.me/gh/project/with-submodules.git
主流下载工具集成
wget 下载
# 下载单个文件
wget https://xget.xi-xu.me/gh/microsoft/vscode/releases/download/1.85.0/VSCode-linux-x64.tar.gz
# 断点续传
wget -c https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.bin
# 批量下载
wget -i urls.txt # urls.txt 包含多个 Xget 链接
curl 下载
# 基本下载
curl -L -O https://xget.xi-xu.me/gh/golang/go/archive/refs/tags/go1.21.5.tar.gz
# 显示进度条
curl -L --progress-bar -o model.bin https://xget.xi-xu.me/hf/openai/whisper-large-v3/resolve/main/pytorch_model.bin
# 设置用户代理
curl -L -H "User-Agent: MyApp/1.0" https://xget.xi-xu.me/gl/gitlab-org/gitlab-runner/-/archive/main/gitlab-runner-main.zip
aria2 多线程下载
# 多线程下载大文件
aria2c -x 16 -s 16 https://xget.xi-xu.me/hf/microsoft/DialoGPT-large/resolve/main/pytorch_model.bin
# 断点续传
aria2c -c https://xget.xi-xu.me/gh/microsoft/vscode/releases/download/1.85.0/VSCode-win32-x64.zip
# 批量下载配置文件
aria2c -i download-list.txt # 包含多个 Xget 链接的文件
Python 环境中的应用
作为 Hugging Face 镜像
# 设置环境变量使用 Xget 作为 Hugging Face 镜像
import os
os.environ['HF_ENDPOINT'] = 'https://xget.xi-xu.me/hf'
# 或者在代码中直接指定
from transformers import AutoTokenizer, AutoModel
# 下载模型时会自动通过 Xget 加速
tokenizer = AutoTokenizer.from_pretrained('microsoft/DialoGPT-medium')
model = AutoModel.from_pretrained('microsoft/DialoGPT-medium')
直接文件下载
import requests
from urllib.parse import urlparse
def download_with_xget(original_url, save_path):
"""使用 Xget 加速下载文件"""
# 自动转换链接
if 'github.com' in original_url:
xget_url = original_url.replace('https://github.com', 'https://xget.xi-xu.me/gh')
elif 'gitlab.com' in original_url:
xget_url = original_url.replace('https://gitlab.com', 'https://xget.xi-xu.me/gl')
elif 'huggingface.co' in original_url:
xget_url = original_url.replace('https://huggingface.co', 'https://xget.xi-xu.me/hf')
else:
xget_url = original_url
# 下载文件
response = requests.get(xget_url, stream=True)
response.raise_for_status()
with open(save_path, 'wb') as f:
for chunk in response.iter_content(chunk_size=8192):
f.write(chunk)
print(f"文件已下载到: {save_path}")
# 使用示例
download_with_xget(
'https://github.com/microsoft/vscode/archive/refs/heads/main.zip',
'vscode-main.zip'
)
CI/CD 环境集成
GitHub Actions
name: Download Dependencies
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Download model files
run: |
# 使用 Xget 加速下载大型模型文件
wget https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
- name: Clone dependency repo
run: |
# 使用 Xget 加速 Git 克隆
git clone https://xget.xi-xu.me/gh/dependency/repo.git
- name: Download release assets
run: |
# 批量下载发布文件
curl -L -O https://xget.xi-xu.me/gh/project/releases/download/v1.0.0/asset1.tar.gz
curl -L -O https://xget.xi-xu.me/gh/project/releases/download/v1.0.0/asset2.zip
GitLab CI
stages:
- download
- build
download_dependencies:
stage: download
script:
# 使用 Xget 加速下载
- wget https://xget.xi-xu.me/gl/gitlab-org/gitlab-runner/-/archive/main/gitlab-runner-main.zip
- git clone https://xget.xi-xu.me/gh/external/dependency.git
# 下载 Hugging Face 数据集
- curl -L -O https://xget.xi-xu.me/hf/datasets/wikitext/resolve/main/wikitext-103-v1/wiki.train.tokens
artifacts:
paths:
- "*.zip"
- "*.json"
- dependency/
Docker 构建优化
FROM ubuntu:22.04
# 在 Docker 构建中使用 Xget 加速下载
RUN apt-get update && apt-get install -y wget curl git
# 下载大型文件
RUN wget https://xget.xi-xu.me/gh/microsoft/vscode/releases/download/1.85.0/code_1.85.0-1702462158_amd64.deb
# 克隆源码
RUN git clone https://xget.xi-xu.me/gh/project/source.git /app
# 下载模型文件
RUN curl -L -o /models/model.bin https://xget.xi-xu.me/hf/microsoft/DialoGPT-medium/resolve/main/pytorch_model.bin
WORKDIR /app
开发环境配置
配置 Git 全局加速
# 为特定域名配置 Git 使用 Xget
git config --global url."https://xget.xi-xu.me/gh/".insteadOf "https://github.com/"
git config --global url."https://xget.xi-xu.me/gl/".insteadOf "https://gitlab.com/"
# 验证配置
git config --global --get-regexp url
# 现在所有 git clone https://github.com/... 都会自动使用 Xget 加速
git clone https://github.com/microsoft/vscode.git # 自动转换为 Xget 链接
IDE 集成
# VS Code 中配置 Git 使用 Xget
# 在 settings.json 中添加:
{
"git.defaultCloneDirectory": "~/Projects",
"terminal.integrated.env.linux": {
"GIT_CONFIG_GLOBAL": "~/.gitconfig-xget"
}
}
# 创建专用的 Git 配置文件
echo '[url "https://xget.xi-xu.me/gh/"]' > ~/.gitconfig-xget
echo ' insteadOf = https://github.com/' >> ~/.gitconfig-xget
🔧 配置
环境变量
你可以通过修改 src/config/index.js 来自定义配置:
export const CONFIG = {
TIMEOUT_SECONDS: 30, // 请求超时时间(秒)
MAX_RETRIES: 3, // 最大重试次数
RETRY_DELAY_MS: 1000, // 重试延迟时间(毫秒)
CACHE_DURATION: 1800, // 缓存持续时间(1800秒 = 30分钟)
SECURITY: {
ALLOWED_METHODS: ["GET", "HEAD"], // 允许的 HTTP 方法(Git 操作会动态允许 POST)
ALLOWED_ORIGINS: ["*"], // 允许的 CORS 源
MAX_PATH_LENGTH: 2048, // 最大路径长度(字符)
},
};
性能调优建议
- 缓存优化:根据使用模式调整
CACHE_DURATION,频繁更新的仓库可适当降低 - 超时设置:网络条件较差时可适当增加
TIMEOUT_SECONDS - 重试策略:高延迟环境下可增加
MAX_RETRIES和RETRY_DELAY_MS
添加新平台
要添加对新平台的支持,编辑 src/config/platforms.js:
export const PLATFORMS = {
// 现有平台...
// 新平台示例
custom: {
base: "https://example.com",
transform: (path) => path.replace(/^\/custom\//, "/"),
},
};
🚧 开发
-
项目设置
git clone https://github.com/xixu-me/Xget.git cd Xget npm install npx wrangler auth login # 首次使用 -
本地开发
npm run dev # 启动开发服务器 (http://localhost:8787) npm test # 运行测试 npm run deploy # 部署到生产
🔍 故障排除
常见问题
Q: 下载速度没有明显提升?
A: 检查源文件是否已经在 CDN 边缘节点缓存,首次访问可能较慢,后续访问会显著提升。
Q: Git 操作失败?
A: 确认使用了正确的 URL 格式,且 Git 客户端版本支持 HTTPS 代理。
Q: 部署后无法访问?
A: 检查 Cloudflare Workers 域名是否正确绑定,确认 wrangler.toml 配置正确。
Q: 出现 400 错误?
A: 检查 URL 路径格式,确认平台前缀(/gh/、/gl/、/hf/)正确使用。
性能监控
服务会在响应头中返回性能指标:
X-Performance-Metrics: 包含请求各阶段的耗时统计X-Cache-Status: 显示缓存命中状态
日志调试
在开发环境中,你可以通过 Cloudflare Workers 控制台查看详细日志:
npx wrangler dev --log-level debug
⚠️ 免责声明
- 合法使用:本项目仅用于加速合法的公开文件下载和 Git 操作,请遵守相关平台的使用条款和当地法律法规
- 服务可用性:公共实例
xget.xi-xu.me为免费服务,不保证 100% 可用性,建议生产环境部署自己的实例 - 数据安全:虽然 Xget 不存储或记录用户数据,但请谨慎处理敏感信息的下载
- 责任限制:使用本服务造成的任何直接或间接损失,开发者不承担责任
- 第三方平台:请尊重 GitHub、GitLab、Hugging Face 等平台的服务条款和速率限制
📝 许可证
本存储库采用 GPL-3.0 许可证 - 查看 LICENSE 文件了解详情。