普通 URL 转迅雷地址 (thunder://)
将普通 HTTP/HTTPS/FTP 等下载链接转换为迅雷专用链接,核心原理是在原链接前后添加特定标识符("AA" 和 "ZZ"),然后进行 Base64 编码,最后加上 "thunder://" 前缀。
<?php
function ThunderEncode($url) {
// 迅雷链接的固定前缀和尾缀
$thunderPrefix = "AA";
$thunderSuffix = "ZZ";
$thunderTitle = "thunder://";
// 拼接:AA + 原始URL + ZZ,然后进行Base64编码,最后加上迅雷协议头
$thunderUrl = $thunderTitle . base64_encode($thunderPrefix . $url . $thunderSuffix);
return $thunderUrl;
}
?>
使用示例:
<?php
echo ThunderEncode("https://example.com/file.zip");
// 输出类似:thunder://QUFodHRwczovL2V4YW1wbGUuY29tL2ZpbGUuemlwWlo=
?>
迅雷地址 (thunder://) 转普通 URL
将迅雷专用链接还原为原始下载地址,过程是上述编码的逆操作:去除协议头、Base64 解码、去除标识符。
<?php
function ThunderDecode($thunderUrl) {
$thunderPrefix = "AA";
$thunderSuffix = "ZZ";
$thunderTitle = "thunder://";
// 1. 去除字符串两端的空白字符
$url = trim($thunderUrl);
// 2. 去除 "thunder://" 协议头(共10个字符)
$url = substr($url, 10);
// 3. 对剩余部分进行Base64解码
$url = base64_decode($url);
// 4. 去除解码后字符串开头的 "AA" (2字符) 和结尾的 "ZZ" (2字符)
$url = substr($url, 2, -2);
return $url;
}
?>
使用示例:
<?php
echo ThunderDecode("thunder://QUFodHRwczovL2V4YW1wbGUuY29tL2ZpbGUuemlwWlo=");
// 输出:https://example.com/file.zip
?>
注意事项与改进建议
- 错误处理: 上述基础函数缺乏错误处理。在实际应用中,应添加对输入格式、Base64 解码有效性以及字符串长度的检查。
- 编码问题: 确保你的 PHP 环境字符编码设置正确,避免处理包含非 ASCII 字符的 URL 时出现问题。
- 安全性: 此转换仅用于地址格式处理,不涉及下载行为本身。请确保转换的 URL 来源可信。
- 函数优化: 可以将固定的前缀、后缀和协议头定义为类常量或配置文件,提高代码可维护性。
技术原理说明: 迅雷的 thunder:// 协议是一种私有协议,通过在原始地址前后添加 "AA" 和 "ZZ" 作为标记,然后进行 Base64 编码生成。这种方式本身不提供加密或安全性,只是一种地址格式的封装,便于迅雷客户端识别和接管下载任务。