前言
在配置简单图床(EasyImages2.0)的图片文件缓存规则时候,发现图片链接被加密隐藏后不容易配置缓存规则,由于需要动态请求 hide.php?key= 后才能得到图片,这使得缓存规则失效,导致每次请求都需回源,占用多余源服务器资源。为修改之前已加密过的图片链接地址,需要将加密后的链接进行解密,根据官方function.php中加解密代码,写了以下php脚本。代码支持主流的php版本,需要配置php的环境变量,仅在cli环境下运行,可自行添加http服务的支持,仅支持单链接解密,如需批量解密还需自行修改代码,或者借助AI工具修改代码。
使用
新建一个php文件,将文件命名为parse.php ,然后复制文末的php代码,写入其中。
在代码中找到 $key = crc32('这里填写你的key'); 并填写对应的值,key 在简单图床后台设置-账号密码 中获取。
在终端运行:
php parse.php "https://i.051214.xyz/app/hide.php?key=UUlpMW9qbDhSdlYwL1FjeUxtcFB1a0lEOTQvLzdrWnpPdz09"
显示结果如下:
https://i.051214.xyz/i/2023/12/23/sxnb71.webp
解密成功。
脚本代码
<?php
if ($argc != 2) {
echo "Usage: php parse.php <URL>\n";
exit(1);
}
$url = $argv[1];
// 解析 key 参数
$parsed_url = parse_url($url);
parse_str($parsed_url['query'] ?? '', $query);
$encoded = $query['key'] ?? '';
if (!$encoded) {
echo "错误:URL 中未包含有效的 key 参数\n";
exit(1);
}
// 解密 key
$key = crc32('这里填写你的key');
$iv = 'sciCuBC7orQtDhTO';
$decoded = base64_decode($encoded);
$decrypted = openssl_decrypt($decoded, 'AES-128-XTS', $key, 0, $iv);
// 检查是否以 /i/ 开头(兼容 PHP < 8)
if ($decrypted !== false && strpos($decrypted, '/i/') === 0) {
$scheme = $parsed_url['scheme'] ?? 'https';
$host = $parsed_url['host'] ?? '';
echo "{$scheme}://{$host}{$decrypted}\n";
} else {
echo "解密失败\n";
}