[分享创造] [开源自荐] 做了个 EgressKit,把 Clash 订阅里的节点变成 HTTP 代理池

写脚本、跑浏览器自动化时,有时需要轮换出口 IP ,有时又希望同一个任务一直用同一个 IP 。

我做了个 EgressKit 。导入 Clash/Mihomo 订阅后,它会识别其中的 VLESS 节点,检查出口 IP ,对外提供一个统一的 HTTP 代理地址。程序接入后,通过代理用户名选择出口策略。

项目地址:heyjunpenn/EgressKit

用 Docker 一条命令启动,把下面的 your-admin-token 换成自己的密码:

docker run -d \
  --name egresskit \
  --restart unless-stopped \
  -p 127.0.0.1:8787:8787 \
  -v egresskit-state:/var/lib/egresskit \
  -e EGRESSKIT_ADMIN_TOKEN='your-admin-token' \
  heyjunpenn/egresskit:latest

镜像支持 amd64 和 arm64 ,Mihomo 和 Web 控制台都打包在里面。启动后打开 http://127.0.0.1:8787,输入刚才设置的密码,导入自己的订阅,等出口检查完成就能用了。

比如,用 curl 发起请求。Proxy Token 初始与上面设置的密码相同,也可以在后台单独修改。

curl --proxy 'http://127.0.0.1:8787' \
  --proxy-user 'rotate:your-admin-token' \
  'https://www.cloudflare.com/cdn-cgi/trace'

下面是实际请求的结果,出口 IP 做了部分遮盖。截图中的 $EGRESSKIT_PROXY_TOKEN 填自己的 Proxy Token 即可。

curl HTTPS 请求

rotate 会为新连接选择最长未使用的出口 IP 。连续请求三次,可以看到出口发生了变化:

curl Rotate 轮换出口

如果希望同一个任务尽量保持出口不变,把用户名换成 sticky.task-01 就行。下面三次请求用了同一个会话,出口保持一致:

curl Sticky 固定出口

也支持严格固定出口和指定出口,具体用法放在了 README 里。

后台大概长这样,截图里的订阅和节点信息做了遮盖。首页能看到代理入口、可用节点和出口 IP 概况。

EgressKit 首页

订阅可以在页面里添加、编辑和删除,也会定时更新。导入后自动开始检查出口 IP 。

订阅管理

代理列表能查看出口 IP 、地区和检查时间,支持按 IP 筛选,也可以手动检查单个节点或全量检查。

代理管理

代码按 Apache-2.0 开源,更多接入示例放在 README 里。

有类似需求的 V 友可以试试,觉得有用的话,欢迎给个 Star 🙂

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论