0

0

PHP获取QQ邮箱好友的具体代码讲解_PHP教程

php中文网

php中文网

发布时间:2016-07-15 13:28:27

|

1689人浏览过

|

来源于php中文网

原创

目前,大家都在使用qq,并且还将qq附带的一些其他软件当做自己的日常使用工具。今天我们就向大家介绍有关如何运用具体的php获取qq邮箱好友的代码如下:

  1. php
  2. /**
  3. * @file class.qqhttp.php
  4. * qq邮箱登陆获取类
  5. * @author wc<cao8222@gmail.com>
  6. * @date 2009-04-27
  7. */
  8. class QQHttp {
  9. var $cookie = '';
  10. function __cunstrut() {
  11. }
  12. function makeForm() {
  13. $form = array(
  14. 'url' => "http://mail.qq.com/cgi-bin/loginpage",
  15. );
  16. $data = $this->curlFunc($form);
  17. preg_match('/name="ts"svalue="(d+)"/',$data['html'], $tspre);
  18. $ts = $tspre[1];
  19. preg_match('/action="http://(md+).mail.qq.com/',$data['html'], $server);
  20. $server_no = $server[1];
  21. /* login.html 载入 */
  22. $html = file_get_contents(dirname(__FILE__).'/login.htm');
  23. $html = str_replace('{_ts_}',$ts, $html);
  24. $html = str_replace('{_server_no_}',$server_no, $html);
  25. return $html;
  26. }
  27. function curlFunc($array)
  28. {
  29. $ch = curl_init();
  30. curl_setopt($ch, CURLOPT_URL, $array['url']);
  31. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  32. if( isset($array['header']) && $array['header'] ) {
  33. curl_setopt($ch, CURLOPT_HEADER, 1);
  34. }
  35. if(isset($array['httpheader'])) {
  36. curl_setopt($ch, CURLOPT_HTTPHEADER, $array['httpheader']);
  37. }
  38. if(isset($array['referer'])) {
  39. curl_setopt($ch, CURLOPT_REFERER, $array['referer']);
  40. }
  41. if( isset($array['post']) ) {
  42. curl_setopt($ch, CURLOPT_POST, 1 );
  43. curl_setopt($ch, CURLOPT_POSTFIELDS, $array['post']);
  44. }
  45. if( isset($array['cookie']) ){
  46. curl_setopt($ch, CURLOPT_COOKIE, $array['cookie']);
  47. }
  48. $r['erro'] = curl_error($ch);
  49. $r['errno'] = curl_errno($ch);
  50. $r['html'] = curl_exec($ch);
  51. $r['http_code'] = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  52. curl_close($ch);
  53. return $r;
  54. }
  55. /**
  56. * 获取验证码图片和cookie
  57. * @param Null
  58. *
  59. * @return array('img'=>String, 'cookie'=>String)
  60. */
  61. function getVFCode ()
  62. {
  63. $vfcode = array(
  64. 'header' => true,
  65. 'cookie' => false,
  66. 'url'=>'http://ptlogin2.qq.com/getimage?aid='.$_GET['aid'].'&'.@$_GET['t'],
  67. );
  68. $r = $this->curlFunc($vfcode);
  69. if ($r['http_code'] != 200 ) return false;
  70. $data = split("n", $r['html']);
  71. preg_match('/verifysession=([^;]+);/',$data[5], $temp);
  72. $cookie = trim($temp[1]);
  73. $img = $data[9];
  74. return array('img'=>$img,'cookie'=>$cookie);
  75. }
  76. /**
  77. * 登陆qq邮箱
  78. *
  79. * @param $cookie getvfcode中生成的cookie
  80. *
  81. * @return array(
  82. * sid=>String , //用户认证的唯一标示
  83. * login => Boolean, //true 登陆成功 ,false 登陆失败
  84. * server_no => String // 服务器编号
  85. * active => Boolean //true 已开通 ,false 未开通 邮箱
  86. * cookie => String // 获取数据cookie
  87. *
  88. * );
  89. */
  90. function login($cookie)
  91. {
  92. /* 生成参数字符串 */
  93. $post = array();
  94. foreach($_POST as $k => $v) {
  95. $post[] = $k.'='.urlencode($v);
  96. }
  97. $poststr = implode('&',$post);
  98. $r['server_no'] = $_GET['server_no'];
  99. $login = array(
  100. 'url'=>'http://'.$r['server_no'].'.mail.qq.com/cgi-bin/login?sid=0,2,zh_CN',
  101. 'header' => true,
  102. 'cookie' => 'verifysession='.$cookie,
  103. 'referer' => 'http://mail.qq.com/cgi-bin/loginpage',
  104. 'httpheader'=>array(
  105. "Host: " . $r['server_no'] . '.mail.qq.com',
  106. "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 FirePHP/0.2.4",
  107. "Content-Type: application/x-www-form-urlencoded",
  108. ),
  109. 'post' => $poststr ,
  110. );
  111. $data = $this->curlFunc($login);
  112. $data['html'] = iconv("gb2312", "UTF-8", $data['html']);
  113. if ($data['http_code'] != 200) {
  114. $this->error($data);
  115. return false;
  116. }
  117. /* 测试数据 */
  118. //$data['html'] =file_get_contents('./r.txt');
  119. $r['uin'] = $_POST['uin'];
  120. /* 登陆错误的判断 */
  121. if (preg_match('|errtype=(d)|', $data['html'], $temp_err)) {
  122. $r['login'] = false;
  123. if ($temp_err[1] == 1) {
  124. $r['msg'] = '账号和密码错误';
  125. } elseif ($temp_err[1] == 2) {
  126. $r['msg'] = '验证码错误';
  127. }
  128. return $r;
  129. }
  130. /* 登陆成功 */
  131. preg_match('|urlHead="([^"]+)"|i',$data['html'],$temp_url);
  132. $urlhead = $temp_url[1];
  133. if (preg_match('|frame_html?sid=([^"]+)"|i',$data['html'],$temp_sid) ) {
  134. $r['sid'] = $temp_sid[1];
  135. $r['active'] = true;
  136. } elseif (preg_match('|autoactivation?sid=([^&]+)?&|i',$data['html'],$temp_sid) ) {
  137. $r['sid'] = $temp_sid[1];
  138. $r['active'] = false;
  139. }
  140. /* 登录后cookie的获取 ,在后续操作中用到 */
  141. if (preg_match_all('|Set-Cookie:([^=]+=[^;]+)|i', $data['html'], $new_cookies) ) {
  142. $cookiestr = implode('; ', $new_cookies[1]);
  143. $cookiestr .= '; verifysession='.$cookie;
  144. }
  145. $r['login'] = true;
  146. $r['cookie'] = $cookiestr;
  147. return $r;
  148. }
  149. function openEmail($param)
  150. {
  151. $openEmail = array(
  152. 'url'=>'http://'.$param['server_no'].'.mail.qq.com/cgi-bin/autoactivation?actmode=6&sidsid='.$param['sid'],
  153. 'header' => true,
  154. 'cookie' => $param['cookie'],
  155. 'referer' => 'http://'.$param['server_no'].'mail.qq.com/cgi-bin/autoactivation?sid='.$param['sid'].'&action=reg_activate&actmode=6',
  156. 'httpheader'=>array(
  157. "Host: " . $param['server_no'] . '.mail.qq.com',
  158. 'Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7',
  159. "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 FirePHP/0.2.4",
  160. ),
  161. );
  162. $data = $this->curlFunc($openEmail);
  163. if (preg_match('|Set-Cookie:qqmail_activated=0|i', $data['html'])) {
  164. $param['active'] = true;
  165. $param['cookie'] = $param['cookie'] .'; qqmail_activated=0; qqmail_alias=';
  166. }
  167. return $param;
  168. }
  169. /**
  170. *
  171. * 获取friends数据
  172. *
  173. * @param $param = array(
  174. * sid=>String , //用户认证的唯一标示
  175. * login => Boolean, //true 登陆成功 ,false 登陆失败
  176. * server_no => String // 服务器编号
  177. * active => Boolean //true 已开通 ,false 未开通 邮箱
  178. * cookie => String // 获取数据cookie
  179. *
  180. * );
  181. * @return Array(
  182. * key=>value, // key:qq号,value: nickname
  183. * );
  184. */
  185. function getFriends($param)
  186. {
  187. $friend = array(
  188. 'url'=>'http://'.$param['server_no'].'.mail.qq.com/cgi-bin/addr_listall?type=user&&category=all&sidsid='.$param['sid'],
  189. 'header' => true,
  190. 'cookie' => $param['cookie'],
  191. 'referer' => 'http://m151.mail.qq.com/cgi-bin/addr_listall?sid='.$param['sid'].'&sorttype=null&category=common',
  192. 'httpheader'=>array(
  193. "Host: " . $param['server_no'] . '.mail.qq.com',
  194. 'Accept-Charset:utf-8;q=0.7,*;q=0.7',
  195. "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 FirePHP/0.2.4",
  196. ),
  197. );
  198. $r = $this->curlFunc($friend);
  199. if ($r['http_code'] != 200) {
  200. $this->error($r);
  201. return false;
  202. }
  203. $data = $r['html'];
  204. $preg = preg_match_all('|<p class="L_n"><span><img class="L_q" name=qqplusimg key="(d+)"[^>]+/> ([^<]+)span>p>|i', $data, $temp_list);
  205. if ($preg == 0) return array();
  206. $list = array_combine($temp_list[1],$temp_list[2]);
  207. return $list;
  208. }
  209. /**
  210. * 错误显示
  211. *
  212. * @param $str array
  213. *
  214. * @return
  215. */
  216. function error($str) {
  217. $str['html'] = str_replace('script','', $str['html']);
  218. var_dump($str);
  219. exit;
  220. }
  221. }
  222. ?>

怎么样,通过以上对于PHP获取QQ邮箱好友的代码的介绍,大家是否已经完全掌握了呢?

蝉镜
蝉镜

AI数字人视频创作平台,100+精品数字人形象库任您选择

下载

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/446439.htmlTechArticle目前,大家都在使用QQ,并且还将QQ附带的一些其他软件当做自己的日常使用工具。今天我们就向大家介绍有关如何运用 具体的PHP获取QQ邮箱...

相关文章

QQ邮箱
QQ邮箱

QQ邮箱是腾讯公司推出的一款专业、安全、便捷的手机邮箱应用。QQ邮箱整合了QQ社交网络的优势,并结合了电子邮件的功能,为用户提供了一个全方位的邮件管理平台,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

29

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

20

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

37

2025.12.25

word转换成ppt教程大全
word转换成ppt教程大全

本专题整合了word转换成ppt教程,阅读专题下面的文章了解更多详细操作。

6

2025.12.25

msvcp140.dll丢失相关教程
msvcp140.dll丢失相关教程

本专题整合了msvcp140.dll丢失相关解决方法,阅读专题下面的文章了解更多详细操作。

2

2025.12.25

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

6

2025.12.25

微信调黑色模式教程
微信调黑色模式教程

本专题整合了微信调黑色模式教程,阅读下面的文章了解更多详细内容。

5

2025.12.25

ps入门教程
ps入门教程

本专题整合了ps相关教程,阅读下面的文章了解更多详细内容。

4

2025.12.25

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

218

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 7.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号