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 相关文章推荐
改变Apache端口等配置修改方法
Jun 05 PHP
PHP面向对象法则
Feb 23 PHP
Yii PHP Framework实用入门教程(详细介绍)
Jun 18 PHP
destoon复制新模块的方法
Jun 21 PHP
Yii学习总结之安装配置
Feb 22 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
smarty中改进truncate使其支持中文的方法
May 30 PHP
php获取ajax的headers方法与内容实例
Dec 27 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 PHP
Linux下源码包安装Swoole及基本使用操作图文详解
Apr 02 PHP
php的命名空间与自动加载实现方法
Aug 25 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
10个实用的PHP代码片段
2011/09/02 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
小议javascript 设计模式 推荐
2009/10/28 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
详解Javascript中的Object对象
2016/02/28 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
原生js二级联动效果
2017/06/20 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
微信开发之微信jssdk录音功能开发示例
2018/10/22 Javascript
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
对python-3-print重定向输出的几种方法总结
2018/05/11 Python
浅析python参数的知识点
2018/12/10 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
python openCV获取人脸部分并存储功能
2019/08/28 Python
详解使用Python下载文件的几种方法
2019/10/13 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
2020/01/10 Python
python实现简单坦克大战
2020/03/27 Python
django haystack实现全文检索的示例代码
2020/06/24 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
2021/02/19 Python
html5 Canvas画图教程(8)—canvas里画曲线之bezierCurveTo方法
2013/01/09 HTML / CSS
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
《一本男孩子必读的书》教学反思
2014/02/19 职场文书
社区交通安全实施方案
2014/03/22 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
赡养老人协议书范本
2015/08/06 职场文书
小学英语教学随笔
2015/08/14 职场文书
学习委员竞选稿
2015/11/20 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
MySQL 用 limit 为什么会影响性能
2021/09/15 MySQL