使用时, 传入base64加密的订阅即可, 如
订阅地址: https://123.xyz/api/v1/client/subscribe?token=ffffffffffffffffffffffffff&flag=clash
则获取链接为:
https://example.com/this.php?url=aHR0cHM6Ly8xMjMueHl6L2FwaS92MS9jbGllbnQvc3Vic2NyaWJlP3Rva2VuPWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmJmZsYWc9Y2xhc2g=
*注意 php 要 php-yaml 模块
<?php
$url = base64_decode($_GET['url']);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'clash.meta');
$response = curl_exec($ch);
$header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE);
$header = substr($response, 0, $header_size);
$body = substr($response, $header_size);
curl_close($ch);
if (preg_match('/^subscription-userinfo: (.*)$/mi', $header, $matches)) {
$user_info = trim($matches[1]);
header("Subscription-Userinfo: $user_info");
//header("Content-Type: text/html; charset=UTF-8"); //如果显示有乱码就把这行打开
}
$yaml = yaml_parse($body);
$proxies = $yaml['proxies'];
echo yaml_emit(['proxies' => $proxies]);
?>
中间那段 subscription-userinfo 的作用是, 如果订阅中 (v2board) 有这个请求头, 会一并获取回来, 可以获取剩余流量信息, 最终效果是能在客户端中展示, 如我用 metacubexd 面板, 就会展示在其中.
使用脚本获取订阅的原因是, 有些机场写了大量规则, 好几兆, 自己有写rules所以根本用不到, 所以用php做一个过滤, 感谢老友帮忙写php
0 条评论:
发表评论