QQ 数字邮箱通过 K 码获取 QQ 头像

LMS
2.4K+ 13

可以通过 PHP 判断,让博客留言使用 QQ 数字邮箱的用户直接显示 QQ 头像,不过 QQ 提供显示头像的方法有两种,一种直接显示 QQ 号码,这个暴露留言者的个人隐私信息不好,还有一种是通过 QQ 提供的 API,将 QQ 号转换为 K 码,能更好的保护留言者隐私。

如果这 K 码不能逆推的话,反正我是看不懂是啥。

提取 K 码头像地址

$mailLower = strtolower($mail);
$reg='/^([0-9]{5,11})@qq.com$/';
if(preg_match($reg,$mailLower)){
    $qq = str_replace('@qq.com', '', $mailLower);
    $qqapi = 'https://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq;
    $qquser = file_get_contents($qqapi);
    $str1 = explode('sdk&k=', $qquser);
    $str2 = explode('&s=', $str1[1]);
    $k = $str2[0]; //获取到的 K 码
    $avatar_link = '//q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
}

QQ 好像只提供 100 和 40 两种大小的头像格式,其他大小都是 404。

K 码头像问题

因为代码中通过 QQ API 地址,用 file_get_contents 获取内容,本地测试会导致网站打开速度变慢,也不知道是这个函数慢,还是 QQ API 打开的慢。

如果有其他方法获取 K 码,就能避开这个影响速度的问题了。

经过老司机线上测试,貌似不影响速度……

文章目录
THE END

评论 13

  1. 会暴露QQ号,最好还是想办法处理一下

  2. 大佬折腾一篇最新的 wp 评论回复邮件提醒教程出来呗

    1. 惭愧,我不是大佬啊。
      我自己博客的邮件评论提醒都废了,用的是qq自定义域名企业邮箱的smtp。。。

  3. 我之前遇到过直接使用QQ调用头像图片的,不敢评论了,我现在用字母的邮箱了。

  4. 我都是用的同一个头像,所以也看不出区别

发表评论

Submit