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 相关文章推荐
Smarty+QUICKFORM小小演示
Feb 25 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
php查询whois信息的方法
Jun 08 PHP
PHP和MySql中32位和64位的整形范围是多少
Feb 18 PHP
总结对比php中的多种序列化
Aug 28 PHP
PHP连接MySQL进行增、删、改、查操作
Feb 19 PHP
PHP简单实现遍历目录下特定文件的方法小结
May 22 PHP
Linux系统下安装PHP7.3版本
Jun 26 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删除数组中特定元素的两种方法
2013/07/02 PHP
yii操作cookie实例简介
2014/07/09 PHP
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
模拟select的代码
2011/10/19 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
2013/06/06 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
javascript定时器完整实例
2015/02/10 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
全面接触神奇的Bootstrap导航条实战篇
2016/08/01 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
phantomjs导出html到pdf的方法总结
2017/10/19 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
在axios中使用params传参的时候传入数组的方法
2018/09/25 Javascript
Vue实现本地购物车功能
2018/12/05 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Python基于OpenCV实现视频的人脸检测
2018/01/23 Python
Django添加bootstrap框架时无法加载静态文件的解决方式
2020/03/27 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
信息技术专业大学生个人的自我评价
2013/10/05 职场文书
科研先进个人典型材料
2014/01/31 职场文书
出纳试用期自我鉴定
2014/04/07 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
客户答谢会致辞
2015/07/30 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书
Python&Matlab实现灰狼优化算法的示例代码
2022/03/21 Python