js+php获取qq昵称及头像
[ 2017/01/07, JavaScript , 9130阅, 6评 ]

网上找了很多获取qq昵称和头像的接口,然而时过境迁,很多都不能用了。功夫不负有心人,还是被我从控制台挖出了几个能用的,O(∩_∩)O哈哈哈~

一、获取昵称

http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=qq号
https://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=qq号

返回数据格式如下(注:返回的编码是gbk)

portraitCallBack({"qq号":["http://qlogo4.store.qq.com/qzone/qq号/qq号/100",927,-1,0,0,0,"qq昵称",0]})

二、获取qq头像

http://q.qlogo.cn/headimg_dl?dst_uin=qq号&spec=100
http://q1.qlogo.cn/headimg_dl?dst_uin=qq号&spec=100
http://q2.qlogo.cn/headimg_dl?dst_uin=qq号&spec=100
http://q3.qlogo.cn/headimg_dl?dst_uin=qq号&spec=100
http://q4.qlogo.cn/headimg_dl?dst_uin=qq号&spec=100

上面的5种方法都暴露了qq号,下面两种返回的数据将qq号加密了:

http://ptlogin2.qq.com/getface?appid=716027402&imgtype=3&uin=qq号
http://ptlogin2.qq.com/getface?appid=1006102&imgtype=3&uin=qq号

返回数据格式如下:

pt.setHeader({"qq号":"http:\/\/q4.qlogo.cn\/g?b=qq&k=m1Hlmek4KOJ9ukevInNDJw&s=100&t=1483333237"});

三、js获取qq昵称及头像

const qqNum = 'qq号码';
$.ajax({
  type: 'get',
  url: 'https://r.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins='+qqNum,
  dataType: 'jsonp',
  jsonpCallback: 'portraitCallBack',
  scriptCharset: 'gbk',
  success(result) {
    console.log('头像:'+result[qqNum][0])
    console.log('昵称:'+result[qqNum][6])
  },
})

四、js+php获取qq昵称及头像

js+php获取qq昵称及头像.gif

注:需要引入jquery库及php环境

html和js代码如下:

<dl>qq<input type="text" name="" id="qqnum" value="" /></dl>
<dl>昵称<input type="text" name="" id="comname" value="" /></dl>
<dl>邮箱<input type="text" name="" id="commail" value="" /></dl>
<div id="avatar"></div>
<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
<script>
$("#qqnum").blur(function(){
	var qq=$("#qqnum").val();
	$("#commail").val(qq+"@qq.com");
	$.ajax({
		type: "get",
		url: "getqqinfo.php?a=getqqnickname&qq="+qq,
		dataType: "jsonp",
		jsonp: "callback",
		jsonpCallback: "portraitCallBack",
		success: function(data) {
			$("#comname").val(data[qq][6]);
		},
		error: function() {
			$("#comname").val("获取失败");
		}
	});
	$.ajax({
		type: "get",
		url: "getqqinfo.php?a=getqqavatar&qq="+qq,
		dataType: "jsonp",
		jsonp: "callback",
		jsonpCallback: "qqavatarCallBack",
		success: function(data) {
			$("#avatar").html("<img src='"+data[qq]+"'>");
		},
		error: function() {
			alert("获取头像失败啦");
		}
	});
})
//var str = "599580031@qq.com";
//str = str.substr(0, str.indexOf('@'));
//alert(str);
</script>

getqqinfo.php文件代码如下:

<?php
header("content-Type: text/html; charset=Utf-8");
$a = @$_GET['a'] ? $_GET['a'] : '';
if(empty($a)){
	header("Location: ../");
	exit;
}
if($a == "getqqnickname"){
	$qq = isset($_GET['qq']) ? addslashes(trim($_GET['qq'])) : '';
	if(!empty($qq) && is_numeric($qq) && strlen($qq) > 4 && strlen($qq) < 13){
		$qqnickname = file_get_contents('http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins='.$qq);
		if($qqnickname){
			$qqnickname = mb_convert_encoding($qqnickname, "UTF-8", "GBK");
			echo $qqnickname;
		}
	}
}
if($a == "getqqavatar"){
	$qq = isset($_GET['qq']) ? addslashes(trim($_GET['qq'])) : '';
	if(!empty($qq) && is_numeric($qq) && strlen($qq) > 4 && strlen($qq) < 13){
		$qqavatar = file_get_contents('http://ptlogin2.qq.com/getface?appid=1006102&imgtype=3&uin='.$qq);
		if($qqavatar){
			echo str_replace("pt.setHeader","qqavatarCallBack",$qqavatar);
		}
	}
}
?>

在线演示 示例下载:http://pan.baidu.com/s/1boz63wz 密码:23tq

有朋自远方来...评论一下呗O(∩_∩)O

  • 评论(6)

    泽泽社长 [ 回复 ]
    2019-04-09 13:28

    file_get_contents太慢没法投入实际用途(评论列表头像)

    Angle、小陌 [ 回复 ]
    2018-04-06 17:56

    不错不错支持

    心已成佛 [ 回复 ]
    2017-06-02 08:57

    博主你好,如何与EM的评论框相结合呢?请不吝赐教,万分感激,我的邮箱138388616@qq.com,我的评论框是这样的http://www.ymldh.net/ebook。

    苏总 [ 回复 ]
    2017-05-30 00:15

    不错哦,支持下

    也就这样 [ 回复 ]
    2017-05-26 22:56

    测试一下不错

    白先生白先生 [ 回复 ]
    2017-03-17 19:41

    不错哦