QQ 爹の博客 QQ 爹の博客

获取 QQ 头像地址,并且不暴露 QQ 号

in Typecho,代码相关 文章转载请注明来源!

需求

因为最近回归原生评论,所以评论头像如果单纯的引用 gravatar 头像,会有一部分 low bee 们头像会变成 gravatar 默认头像,为了解决这个问题,我想对于qq号@qq.com这样的邮箱地址就行个处理来提取 QQ 头像,然后问题是怎么获取 QQ 头像地址。

尝试

最初想到获取 QQ 头像地址就是下面这样

https://q.qlogo.cn/g?b=qq&nk=腻的扣扣号&s=100

当随之而来的问题就是暴露了别人的 QQ 号码,这点对于保护他人隐私上来说不太好。

于是想到了这样的 QQ 头像地址

https://q1.qlogo.cn/g?b=qq&k=0n5AZ9Ne4h3em8iboKu3sHg&s=100

上面的地址,中没有 QQ 号,却获取了某人的 qq 头像,里面的重要参数就是 K 的值,那么如何获取 K 值呢?

探索

上各种搜索利器,百度 30 分钟无果,必应一下就找到了线索。
访问下面的地址就能得到一个 json

http://ptlogin2.qq.com/getface?appid=101382166&imgtype=1&encrytype=0&devtype=0&keytpye=0&uin=扣扣号&r=0.17780657206333406

简化下无用参数,变成

http://ptlogin2.qq.com/getface?&imgtype=1&uin=扣扣号

访问上述地址得到的 json

pt.setHeader({"扣扣号":"http:\/\/q3.qlogo.cn\/g?b=qq&k=对应的K值&s=40&t=1483323281"});

解决

知道怎么获取就好处理了,上全世界最好的语言 php

$qq = '你的扣扣号码';
$geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq;
$qquser = file_get_contents($geturl);
$str1 = explode('&k=', $qquser);
$str2 = explode('&s=', $str1[1]);
$k = $str2[0];
$qqimg = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
echo $qqimg

由于我 php 渣,不会解析 json,所以用了个简单粗暴的方法来获取想要的字符串。

扩展 typecho

typecho 函数,其实和上边的 php 没啥区别。

function  qqgravatar ($qq){
$geturl = 'http://ptlogin2.qq.com/getface?&imgtype=1&uin='.$qq;
$qquser = file_get_contents($geturl);
$str1 = explode('qq&k=', $qquser);
$str2 = explode('&s=', $str1[1]);
$k = $str2[0];
$qqimg = 'https://q1.qlogo.cn/g?b=qq&k='.$k.'&s=100';
return $qqimg;
}

需要提取 qq 头像地址时调用

<?php echo qqgravatar('QQ号'); ?>

最后

Hran 说影响效率,测试了下,有评论里有 QQ 头像的文章,加载确实慢了,所以,可能弃坑

20170808 规则稍有变动,文章已修正 php 部分代码
jrotty WeChat Pay

微信打赏

jrotty Alipay

支付宝打赏

文章二维码

扫描二维码,在手机上阅读!

本文基于《 署名 - 非商业性使用 - 相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
文章链接:https://qqdie.com/archives/get-qq-avatar-no-qq-number.html (转载时请注明本文出处及文章链接)

phpQQgravatar
发表新评论
已有 48 条评论
  1. 十一
    十一iPhone OSQQ浏览器
    回复

    具体代码加到哪里呢

  2. 尚寂新
    尚寂新Android L谷歌浏览器
    回复

    那个加密串感觉有点像md5 不知道是不是...

  3. 1
    1Windows 7谷歌浏览器
    回复

    请问怎么添加到留言页面上去?

    1. Jrotty
      Jrotty本文作者Windows 10谷歌浏览器
      回复

      @1 你的提问过于模糊,没办法理解,所以不予回答

  4. 山神
    山神Android LUC浏览器
    回复

    感觉我对typecho的爱火重燃,完全因为你的一个模板。

    1. Jrotty
      Jrotty本文作者Linux谷歌浏览器
      回复

      @山神 你现在用的是我移植的hexo博客程序的模板,我现在的主题也是参考那个布局重写的

  5. 狂放
    狂放Windows 10谷歌浏览器
    回复

    我想问一下,QQ又英文邮箱,会粗错不

    1. Jrotty
      Jrotty本文作者iPhone OSUC浏览器
      回复

      @狂放 会的,所以一定要判断下是不是纯数学,数字长度是否大于4小于11

      1. 狂放
        狂放AndroidQQ浏览器
        回复

        @Jrotty

  6. 年华似水
    年华似水Windows 10谷歌浏览器
    回复

    能转走不?

    1. Jrotty
      Jrotty本文作者Windows 10谷歌浏览器
      回复

      @年华似水 注明文章出处地址就可以

      1. 年华似水
        年华似水Windows 10谷歌浏览器
        回复

        @Jrotty 就不标 我要魔改

PREVIOUS NEXT
雷姆
拉姆