vvbbnn00 / WARP-Clash-API

该项目可以让你通过订阅的方式使用Cloudflare WARP+,自动获取流量。This project enables you to use Cloudflare WARP+ through subscription, automatically acquiring traffic.
GNU General Public License v3.0
8.52k stars 1.15k forks source link
clash cloudflare docker docker-compose flask shadowrocket warp warp-plus

WARP Clash API

GitHub License Codacy Badge GitHub Repo stars

中文 | English

Warning

本项目是完全非商业项目,仅供学习交流使用,请勿用于非法用途,否则后果自负。

🤔 这是什么?

该项目可以让你通过订阅的方式使用WARP+,支持ClashShadowrocket等客户端。项目内置了 刷取WARP+流量的功能,可以让你的WARP+流量不再受限制(每18秒可获得1GB流量),同时, 配备了IP选优功能。支持Docker compose 一键部署,无需额外操作,即可享受你自己的WARP+私 有高速节点!

💡 特色功能

🚀 快速上手

1. 安装DockerDocker compose

2. 下载项目

git clone https://github.com/vvbbnn00/WARP-Clash-API.git

3. [可选] 配置SECRET_KEY

若您需要在公网上部署该项目,建议您配置SECRET_KEYPUBLIC_URL。在项目目录下创建 .env.local文件,写入如下内容:

SECRET_KEY=your_secret_key

关于环境变量的更多信息,请参考环境变量

4. 编译并运行

docker-compose up -d

5. 获取订阅链接

访问http://你的IP:21001,输入SECRET_KEY(若没有配置,则可以留空),即可获取订阅链接。

🎉 大功告成

🌏 手动IP选优

项目本身包含了一个选优过的IP列表,但是由于WARPIP 是动态的,所以可能会出现IP不可用的 情况。若您需要手动选优,可以遵循以下步骤:

若您通过docker-compose部署,可以在项目目录下通过以下命令手动执行IP选优:

docker-compose exec warp-clash python3 app.py optimize

否则,可以在项目目录下执行以下命令:

python3 app.py optimize

🔧 环境变量

没错,您可以通过环境变量来配置该项目,在配置时,只需新建一个.env.local文件,写入您需要的环境 变量即可。

以下是可用的环境变量:

变量名 默认值 说明
DELAY_THRESHOLD 500 延迟阈值,超过该阈值的IP将被剔除
DO_GET_WARP_DATA True 是否刷取WARP+流量,若不需要刷取流量,则设置为False即可
GET_WARP_DATA_INTERVAL 18 刷取WARP+流量的时间间隔,单位为秒,每隔该时间间隔会刷取一次WARP+流量,不建议间隔设置过短。
LOSS_THRESHOLD 10 丢包率阈值,超过该阈值的IP将被剔除
PROXY_POOL_URL https://getproxy.bzpl.tech/get/ IP代理池地址,用于刷取WARP+流量,您可以自行搭建,参照proxy_pool
PUBLIC_URL 部署在公网上时,填写公网IP或域名,用于生成订阅链接,比如 https://subs.zeabur.app
RANDOM_COUNT 10 每次更新订阅随机节点的数量
REOPTIMIZE_INTERVAL -1 重新选优的时间间隔,单位为秒,若小于等于0,则不会重新选优,否则每隔该时间间隔会重新选优一次,不建议间隔设置过短。
REQUEST_RATE_LIMIT 0 限制X秒一次请求,该功能不太稳定,建议不要开启
SECRET_KEY 用于保护订阅链接,若不配置,则不需要输入SECRET_KEY即可获取订阅链接
SHARE_SUBSCRIPTION False 若您的站点想要向社区分享订阅,但不想让自己的账户信息被公开或修改,可以设置为True,此时,访问订阅链接时,不需要输入SECRET_KEY即可获取,而对于其他的操作,仍然需要输入SECRET_KEY

📝 配置示例

例如,您设置SECRET_KEY123456,并打算将订阅分享给社区,那么您的.env.local 文件应该 如下:

SECRET_KEY=123456
SHARE_SUBSCRIPTION=True

🧰 进阶操作

请注意,如果您设置了SECRET_KEY,需要在URL的末尾添加key参数,例如:

http://your_IP:21001/some/api/actions?key=your_secret_key

重置账户的PublicKeyPrivateKey

项目支持您通过请求以下接口来重置PublicKeyPrivateKey

curl -X POST http://host:port/api/account/reset_key

重置过后,需要重新获取订阅内容,否则可能无法使用。

设置自己的LicenseKey

若您已经拥有了WARP+LicenseKey,可以通过以下接口来设置:

curl -X POST http://host:port/api/account/update_license -H "Content-Type: application/json" -d "{\"license_key\": \"your_license_key\"}"

请注意,当您设置了LicenseKey后,其PublicKeyPrivateKey将会被重置,需要重新获取订阅 内容。

使用 IPv6 优选

从原理上来看,本服务通过读取config/result_v6.csv文件获取IPv6地址,因此您可以在支持 IPv6的服务器上运行IP选优功能来获得IPv6地址。获取到的接入地址列表只需写入 config/result_v6.csv文件中,相比在Docker容器中运行IP选优功能,此方法更为简便。

如果您需要在Docker容器中运行IP选优功能,可以使用docker-compose_ipv6.yaml 文件来让Docker镜像支持IPv6。在运行前,请确保您的服务器支持IPv6,并在Docker服务的 /etc/docker/daemon.json中添加以下内容,并重启Docker服务:

{
  "experimental": true,
  "ip6tables": true,
  "ipv6": true,
  "fixed-cidr-v6": "2001:db8:1::/64"
}

若您在先前已经运行过Docker服务,在运行之前,请先停止之前的服务:

docker-compose down

然后,您可以通过以下命令来运行Docker服务:

docker-compose -f docker-compose_ipv6.yaml up -d

🗂️ 引用项目

本项目的开发参照了以下项目,感谢这些开源项目的作者: