请注意,本文编写于 893 天前,最后修改于 885 天前,其中某些信息可能已经过时。
引入
腾讯留的头像接口有很多,大部分都是需要传入QQ参数,例如:
https://q.qlogo.cn/headimg_dl?dst_uin=1804655669
&spec=0
这个接口,需要跟QQ参数才能显示QQ头像,这样会暴露用户隐私
那么为了安全和隐私,我们需要隐藏这些,腾讯也留了几个不会暴露QQ的接口
比如https://ptlogin2.qq.com/getface?&imgtype=1&uin=1804655669 会返回json数据,后面即为QQ头像直链
Echo的修改方法
修改地址usr/themes/Echo/functions.php
大概在第85行
// 解析头像
function getAvatar($mail)
{
$a='https://gravatar.echo.so/avatar/';//gravatar头像源
$mail = strtolower(trim($mail));
$qq = str_replace('@qq.com', '', $mail);
if (strstr($mail, "qq.com") && is_numeric($qq) && strlen($qq) < 11 && strlen($qq) > 4) {
$geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq;
$qq = file_get_contents($geturl);
$str1 = explode('sdk&k=', $qq);
$str2 = explode('&t=', $str1[1]);
$k = $str2[0];
$url = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
} else {
$url = $gravatar . md5($mail) . '?s=40&r=G&d=';
}
return $url;
}
handsome的修改方法(版本为8.4.1,其他未知)
修改地址 usr/themes/handsome/libs/Utils.php
大概356到372行替换为一下内容
public static function getAvator($email, $size)
{
$options = mget();
$cdnUrl = $options->CDNURL;
if (@ in_array('emailToQQ', Utils::checkArray($options->featuresetup))) {
$str = explode('@', $email);
if (@$str[1] == 'qq.com' && @ctype_digit($str[0]) && @strlen($str[0]) >= 5
&& @strlen($str[0]) <= 11) {
$geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$str[0];
$qq = file_get_contents($geturl);
$str1 = explode('sdk&k=', $qq);
$str2 = explode('&t=', $str1[1]);
$k = $str2[0];
$avatorSrc = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
//$avatorSrc = 'https://q2.qlogo.cn/g?b=qq&nk=' . $str[0] . '&s=100';
} else {
$avatorSrc = Utils::getGravator($email, $cdnUrl, $size);
}
} else {
$avatorSrc = Utils::getGravator($email, $cdnUrl, $size);
}
return $avatorSrc;
}
刷新 f12查看,成功。
到此结束QWQ
1 条评论
很不错的方法,学到了