Skip to content

blurmood/media-proxy-worker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Media Proxy Worker

一个基于 Cloudflare Workers 的媒体代理服务,专门用于代理小红书和抖音视频,支持流式传输和范围请求。

🚀 功能特性

  • 多平台支持: 支持小红书和抖音视频代理
  • 流式传输: 支持大文件的流式传输,无需完整下载
  • 范围请求: 支持 HTTP Range 请求,实现视频拖拽播放
  • 智能重试: 支持备用URL自动切换
  • CORS支持: 完整的跨域资源共享支持
  • 缓存优化: 智能缓存策略,提升访问速度
  • 错误处理: 完善的错误处理和用户友好的错误页面

📦 技术栈

  • 运行时: Cloudflare Workers
  • 语言: TypeScript
  • 构建工具: Wrangler
  • 部署: Cloudflare Edge Network

🛠️ 安装和部署

前置要求

  • Node.js 16+
  • npm 或 yarn
  • Cloudflare 账户

本地开发

  1. 克隆项目
git clone https://github.com/blurmood/media-proxy-worker.git
cd media-proxy-worker
  1. 安装依赖
npm install
  1. 启动开发服务器
npm run dev

部署到生产环境

  1. 配置 Wrangler
npx wrangler login
  1. 部署到 Cloudflare Workers
npm run deploy

📖 使用方法

API 端点

代理视频请求

GET /proxy/v1/{base64_metadata}[.mp4]

其中 base64_metadata 是经过 Base64 编码的 JSON 元数据,包含以下字段:

interface ProxyMetadata {
  original: string;        // 原始视频URL
  filename: string;        // 文件名
  timestamp: number;       // 时间戳
  source: 'xiaohongshu' | 'douyin';  // 来源平台
  backupUrls?: string[];   // 备用URL列表(可选)
  signature?: string;      // 签名(可选)
}

健康检查

GET /health

使用示例

  1. 准备元数据
const metadata = {
  original: "https://example.com/video.mp4",
  filename: "sample_video.mp4",
  timestamp: Date.now(),
  source: "xiaohongshu",
  backupUrls: ["https://backup1.com/video.mp4", "https://backup2.com/video.mp4"]
};
  1. 编码元数据
const encodedMetadata = btoa(JSON.stringify(metadata));
  1. 构建代理URL
const proxyUrl = `https://your-worker.your-subdomain.workers.dev/proxy/v1/${encodedMetadata}.mp4`;

⚙️ 配置

平台配置

项目支持不同平台的特定配置:

  • 小红书: 不支持范围请求,使用特定的请求头
  • 抖音: 支持范围请求,包含URL转换逻辑

缓存策略

  • 小红书视频: 2小时缓存
  • 抖音视频: 1小时缓存

🔧 开发

项目结构

media-proxy-worker/
├── src/
│   └── index.ts          # 主要逻辑
├── package.json          # 项目配置
├── wrangler.toml         # Wrangler配置
├── tsconfig.json         # TypeScript配置
└── README.md            # 项目文档

可用脚本

  • npm run dev - 启动开发服务器
  • npm run deploy - 部署到生产环境
  • npm run deploy:prod - 部署到生产环境(带环境标识)
  • npm run tail - 查看实时日志
  • npm run build - 构建检查(dry run)

🚨 注意事项

  1. 合规使用: 请确保遵守相关平台的服务条款和版权规定
  2. 流量限制: Cloudflare Workers 有请求频率和带宽限制
  3. 缓存策略: 根据实际需求调整缓存时间
  4. 错误处理: 建议在客户端实现重试机制

📄 许可证

MIT License

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📞 支持

如有问题,请通过以下方式联系:

  • 提交 GitHub Issue
  • 发送邮件至项目维护者

注意: 本项目仅供学习和研究使用,请遵守相关法律法规和平台服务条款。

About

CDN代理Worker,支持小红书和抖音视频流式传输

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published