php获取qq用户昵称和在线状态(实例分析)


Posted in PHP onOctober 27, 2013

QQ通过返回不同的图片,来表示在线或离线,图标也随之变换,既然图片不同,那么,返回的HTTP头信息中的Content-Length 也一定不同,而且,彩色图片一定会比同样子的暗色图片要大,于是,找出某个样式的彩色与暗色图片的中间值,就能达到通过判断头部返回长度的方法来获取QQ在线状态
以下是代码

<?phpfunction get_qq_status($uin)
{
 error_reporting(0);
 $f=file_get_contents('http://wpa.qq.com/pa?p=1:'.$uin.':4');
 if(!$f) return(true);
 foreach($http_response_header as $val)
 {
  if(strpos($val,'Content-Length')!==false)
  {
   return(intval(substr($val,16,50))>1000);
  }
 }
}
?>

上面比较简单,下面来个更好的
<? 
function tphp_qq_online( $uin ) 
{ 
    $reques  = "GET /pa?p=1:".$uin.":1 HTTP/1.1rn"; 
    $reques .= "Host: wpa.qq.comrn"; 
    $reques .= "User-Agent: PHP_QQ_SPYrnrn";     if ( !( $socket = socket_create( AF_INET, SOCK_STREAM, SOL_TCP ) ) ) return(-1); 
    if ( !( socket_connect( $socket, "wpa.qq.com", 80 ) ) ) return(-1); 
    if ( !( socket_write( $socket, $reques ) ) ) return(-1); 
    if ( !( $respon = socket_read( $socket, 1024, PHP_BINARY_READ ) ) ) return(-1);; 
    socket_close( $socket ); 
    $field = explode( "rn", $respon );  
    for ( $i=0; $i<count($field); $i++ ) { 
        if ( strncasecmp($field[$i], "Location:", 9) == 0 ) { 
            if ( strpos( $field[$i], "online") ) { 
                $ret = 1; 
            } else if ( strpos( $field[$i], "offline") ) { 
                $ret = 0; 
            } else {  
                $ret = -1; 
            } // if 
            break; 
        } // if 
    } // for 
    return( $ret ); 
} 
/* }}} */ 
 

echo tphp_qq_online( 561272831 );
?>

例,qq用户昵称和在线状态
//获取QQ状态
function getQQState($qq){
    $url ='http://wpa.qq.com/pa?p=2:'.$qq.':41&r=' . time ();
 $headInfo = get_headers($url,1);
 $length = $headInfo['Content-Length'];
 if ($length==1243) {
  return true;
 }else {
  return false;
 }
}
//获取QQ昵称
function getQQNick($qq){
 $str = file_get_contents('http://r.qzone.qq.com/cgi-bin/user/cgi_personal_card?uin='.$qq);
 $pattern = '/'.preg_quote('"nickname":"','/').'(.*?)'.preg_quote('",','/').'/i';
 preg_match ( $pattern,$str, $result );
 return $result[1];
}
//获取QQ姓名
function getQQName($qq){
 //$qqArr = include 'friendArr.php';//预先设置的
 //$username = $qqArr[$qq];
 if (!$username) {
  $username = getQQNick($qq);
 }
 return $username;
}
PHP 相关文章推荐
PHP.MVC的模板标签系统(二)
Sep 05 PHP
PHP脚本的10个技巧(8)
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
Jun 08 PHP
PHP写MySQL数据 实现代码
Jun 15 PHP
PHP5中GD库生成图形验证码(有汉字)
Jul 28 PHP
神盾加密解密教程(三)PHP 神盾解密工具
Jun 08 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
Thinkphp5.0自动生成模块及目录的方法详解
Apr 17 PHP
thinkPHP+phpexcel实现excel报表输出功能示例
Jun 06 PHP
PHP实现百度人脸识别
May 06 PHP
php获取数组长度的方法(有实例)
Oct 27 #PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 #PHP
简单的php文件上传(实例)
Oct 27 #PHP
PHP 使用pcntl和libevent 实现Timer功能
Oct 27 #PHP
8个必备的PHP功能实例代码
Oct 27 #PHP
PHP生成Gif图片验证码
Oct 27 #PHP
php操作xml
Oct 27 #PHP
You might like
PHP安装攻略:常见问题解答(二)
2006/10/09 PHP
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
2007/03/15 PHP
PHP中如何实现常用邮箱的基本判断
2014/01/07 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
2015/01/09 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
浅谈javascript的调试
2015/01/28 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
JS实现的将html转为pdf功能【基于浏览器端插件jsPDF】
2018/02/06 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
Python中对象的比较操作==和is区别详析
2021/02/12 Python
意大利珠宝店:Luxury Zone
2019/01/05 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
学校后勤人员职责
2013/12/27 职场文书
淘宝好评语句大全
2014/12/31 职场文书
拾金不昧表扬稿大全
2015/05/05 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
golang中的空接口使用详解
2021/03/30 Python
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技