热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpQQ登陆-PHP源码

QQ登陆
代码

class qq {

    public $sid;
    public $http;
    public $qq_num;

    function __construct() {
        $this->http = new http_no_COOKIE;
    }

    function login($qq_num, $qq_pwd) {
       echo  $data = $this->http->get("http://pt.3g.qq.com/");
        $action = preg_match("/action=\"(.+)?\"/", $data, $matches);
        $action = $matches[1];
        $params = array();
        $params["login_url"] = "http://pt.3g.qq.com/s?aid=nLogin";
        $params["sidtype"] = 1;
        $params["loginTitle"] = "手机腾讯网";
        $params["bid"] = 0;
        $params["qq"] = $qq_num;
        $params["pwd"] = $qq_pwd;
        $params["loginType"] =1;
        echo $data = $this->http->post($action, http_build_query($params));
		if(preg_match("/http:\/\/vc.gtimg.com\//",$data,$matches)){
			echo "需要输入验证码";
			return 0;
			exit;
		}

		if(preg_match("/密码错误/",$data,$matches)){
		    echo "密码错误";
			return 1;
			exit;
		}
        $action = preg_match("/sid=(.+?)&/", $data, $matches);
        $this->sid = $matches[1];
		return $this->sid;
    }

    function sendMsg($to_num, $msg, $sid = 0) {
        $sid = $sid ? $sid : $this->sid;
        if (!$sid)
            exit("sid值未传入进去");
        $params = array();
        $params["msg"] = $msg;
        $params["u"] = $to_num;
        $params["saveURL"] = 0;
        $params["do"] = "send";
        $params["on"] = 1;
        $params["aid"] = "发送";
        $url = "http://q16.3g.qq.com/g/s?sid=" . $sid;
        echo $data = $this->http->post($url, http_build_query($params));
		return $data;
    }

    function getMsg($qq_num = 0, $sid = 0) {
        $qq_num = $qq_num ? $qq_num : $this->qq_num;
        if (!$qq_num)
            exit("qq_num值未传入进去");
	    $sid = $sid ? $sid : $this->sid;
        if (!$sid)
            exit("sid值未传入进去");
        $url = "http://q16.3g.qq.com/g/s?sid=" . $sid . "&3G_UIN=" . $qq_num . "&saveURL=0&aid=nqqChat";
        $data = $this->http->get($url);
        preg_match("/name=\"u\" value=\"(\d+)\"/", $data, $matches);
        $result["qq"] = $matches[1];
        $data = explode("(.+)?<\/p>/", $data, $matches);
        unset($matches[1][0]);
        $result["content"] = $matches[1];
        return $result;
    }
	function logout($sid){
		$url="http://pt.3g.qq.com/s?sid=".$sid."&aid=nLogout";
		echo $url;
		echo $this->http->get($url);
	}
	function getFriendsList($qq_num = 0, $sid = 0){
	    $result=array();

		$qq_num = $qq_num ? $qq_num : $this->qq_num;
        if (!$qq_num)
            exit("qq_num值未传入进去");
        $sid = $sid ? $sid : $this->sid;
        if (!$sid)
            exit("sid值未传入进去");
		$url="http://q16.3g.qq.com/g/s?aid=nqqchatMain&sid=".$sid."&myqq=".$qq_num;
		while(true){
	    $i=1;
		$url.="&p=".$i;
		$data=$this->http->get($url);
		preg_match_all("/u=(.+?)&/",$data,$matches);
		foreach($matches[1] as $key=>$value){
			$result[]=$value;
		}
		if(count($matches[1])<13)
			break;
		$i++;
	   }
	   return $result;
	}
}

2. http.class.php

curl = curl_init();
        curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 20);
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_HEADER, 1);
        curl_setopt($this->curl, CURLOPT_USERAGENT, $this->user_agent);
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($this->curl);
        curl_close($this->curl);
        return $data;
    }
    public function post($url, $params) {
        $this->curl = curl_init();
        curl_setopt($this->curl, CURLOPT_CONNECTTIMEOUT, 20);
        curl_setopt($this->curl, CURLOPT_URL, $url);
        curl_setopt($this->curl, CURLOPT_HEADER, 1);
        //curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($this->curl, CURLOPT_POST, 1);
        curl_setopt($this->curl, CURLOPT_USERAGENT, $this->user_agent);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $params);
        curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($this->curl);
        curl_close($this->curl);
        return $data;
    }
}
?>

推荐阅读
  • 目录爬虫06scrapy框架1.scrapy概述安装2.基本使用3.全栈数据的爬取4.五大核心组件对象5.适当提升scrapy爬取数据的效率6.请求传参爬虫06scrapy框架1. ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • ECMA262规定typeof操作符的返回值和instanceof的使用方法
    本文介绍了ECMA262规定的typeof操作符对不同类型的变量的返回值,以及instanceof操作符的使用方法。同时还提到了在不同浏览器中对正则表达式应用typeof操作符的返回值的差异。 ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • Scrapy 爬取图片
    1.创建Scrapy项目scrapystartprojectCrawlMeiziTuscrapygenspiderMeiziTuSpiderhttps:movie.douban.c ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 使用chrome编辑器实现网页截图功能的方法
    本文介绍了在chrome浏览器中使用编辑器实现网页截图功能的方法。通过在地址栏中输入特定命令,打开控制台并调用命令面板,用户可以方便地进行网页截图操作。 ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • 这个问题发生在重新安装系统后,丢失了之前的privatekey等。所以解决方法就是提示的revokeandrequest。到developercenter中找到certificat ... [详细]
  • 前端提高篇(七十):SVG基本使用、基本样式、路径path
    SVG是使用XML来描述二维图形和绘图程序的语言。SVG遵循的是xml的规范,与html5的使用有所区别SVG绘制出来的是矢量图,放大之后不会失真官方文 ... [详细]
  • 博主使用代理IP来自于网上免费提供高匿IP的这个网站用到的库frombs4importBeautifulSoupimportrandomimporturllib.re ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
author-avatar
Edgar__一峰
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有