Home  >  Article  >  php教程  >  PHP飞信接收短信类

PHP飞信接收短信类

PHP中文网
PHP中文网Original
2016-05-25 17:06:551403browse

代码

<?php
/*
*Author:Cplushua
*URI:http://weibo.com/sdnugonghua*/
Class PHPFetionRobot{
	private $tel;
	private $pwd;
	private $cookie;
	private $option = array(
		CURLOPT_URL=>&#39;&#39;,
		CURLOPT_POST=>false,
		CURLOPT_RETURNTRANSFER=>true,
		CURLOPT_REFERER=>&#39;http://f.10086.cn/im5/login/login.action&#39;,

	 );
	function __construct ($tel,$pwd){
		$this->tel=$tel;
		$this->pwd=$pwd;
	}
	function cookielogin(){
		$this->cookie=$this->readCookie();
	}
	function login($tel=null,$pwd=null){
		if(empty($tel)||empty($pwd)){
			$tel=$this->tel;
			$pwd=$this->pwd;
		}
		$option = array(
			CURLOPT_URL=> &#39;http://f.10086.cn/im5/&#39;,
			CURLOPT_REFERER=>&#39;http://f.10086.cn/wap2.jsp&#39;,
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_HEADER=>true,
			CURLOPT_POST=>false,
			CURLOPT_USERAGENT=>&#39;Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17&#39;
		);
		$result=$this->exec($option);
		preg_match_all(&#39;/Location:\s{1}(.*)\n/&#39;, $result, $matches);
		@$url=$matches[1][0];
		if(null==$url) $url=&#39;http://f.10086.cn/im5/login/login.action&#39;;
		preg_match_all(&#39;/Set-Cookie:\s(UUID.*;)\spath.*\nSet-Cookie:\s(JSESSIONID.*;)\spath.*\n/&#39;,$result,$matches);//print_r($matches);
		$this->cookie=$matches[1][0].&#39; &#39;.$matches[2][0].&#39; path=/; HttpOnly; &#39;;
		$post_data =&#39;m=&#39;.$tel.&#39;&pass=&#39;.$pwd.&#39;&captchaCode=&checkCodeKey=null&#39;; 
		$option = array(
			CURLOPT_URL=> &#39;http://f.10086.cn/im5/login/loginHtml5.action?t=&#39;.time().&#39;780&#39;, 
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_REFERER=>$url,//&#39;http://f.10086.cn/im5/login/login.action&#39;,
			CURLOPT_POST=>true,
			CURLOPT_POSTFIELDS=>$post_data,
			CURLOPT_HEADER=>true,
			CURLOPT_USERAGENT=>&#39;Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17&#39;,
			CURLOPT_COOKIESESSION=>true,
			CURLOPT_COOKIE=>$this->cookie,
		);
		$result=$this->exec($option);  //echo $result;
		preg_match_all(&#39;/({.*})/&#39;, $result, $data); //print_r($data);
		preg_match_all(&#39;/Set-Cookie:\s(.*)\sHttpOnly\s\n/&#39;, $result, $matches);
		$this->cookie.=&#39;HttpOnly&#39;;
		foreach ($matches[1] as  $value) {
			$this->cookie.=&#39;; &#39;.$value;
		}
		//echo $this->cookie;
		$user_info=json_decode($data[1][0]);
		//print_r($user_info);
		$this->saveCookie($this->cookie);//echo $this->cookie;
	}
	function getonlineuser(){
		$option = array(
			CURLOPT_URL=>&#39;http://f.10086.cn/im5/index/onlineUsers.action?t=&#39;.time().&#39;017&#39;,
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_REFERER =>&#39;http://f.10086.cn/im5/login/login.action&#39; , 
			CURLOPT_POST=>true,
			CURLOPT_POSTFIELDS=>&#39;gender=2&#39;,
			CURLOPT_COOKIESESSION=>true,
			CURLOPT_COOKIE=>$this->cookie,
		);
		$result=$this->exec($option);
		return  $result;
	}
	function getmsg(){echo $this->cookie;
		$option = array(
			CURLOPT_URL=>&#39;http://f.10086.cn/im5/box/alllist.action?t=&#39;.time().&#39;151&#39; ,
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_REFERER=>&#39;http://f.10086.cn/im5/login/login.action?mnative=0&t=&#39;.time().&#39;561&#39;,
			CURLOPT_POST=>false,
			CURLOPT_HEADER=>false,
			CURLOPT_USERAGENT=>&#39;Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17&#39;,
			CURLOPT_COOKIESESSION=>true,
			CURLOPT_COOKIE=>$this->cookie,
			);
		$result=$this->exec($option);
		if(!empty($result)){
			//这里写如果有消息了,怎么处理
			$msg=json_decode($result);
            return $msg->chat_messages;
		}
	}
	function getmsgover($msgid){
		$option = array(
			CURLOPT_URL=>&#39;http://f.10086.cn/im5/chat/queryNewMsg.action?t=&#39;.time().&#39;151&_=&#39;.time().&#39;151&idMsgs=&#39;.$msgid.&#39;&t=&#39;.time().&#39;151&#39; ,
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_REFERER=>&#39;http://f.10086.cn/im5/login/login.action?mnative=0&t=&#39;.time().&#39;561&#39;,
			CURLOPT_POST=>false,
			CURLOPT_HEADER=>false,
			CURLOPT_USERAGENT=>&#39;Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17&#39;,
			CURLOPT_COOKIESESSION=>true,
			CURLOPT_COOKIE=>$this->cookie,
		);
		$result=$this->exec($option);
		if(&#39;{"returnCode":200}&#39;==$result) return true;
		return false;
	}
	function sendSMS($aimtel,$msg){
		//需要将用户手机号码转为userid
		$userid=$this->teltouid($aimtel);
		$post_data=&#39;touserid=&#39;.$userid.&#39;&msg=&#39;.$msg;echo $post_data;
		$option = array(
			CURLOPT_URL =>&#39;http://f.10086.cn/im5/chat/sendNewMsg.action&#39; ,
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_REFERER=>&#39;http://f.10086.cn/im5/login/login.action?mnative=0&t=&#39;.time().&#39;561&#39;,
			CURLOPT_POST=>true,
			CURLOPT_HEADER=>false,
			CURLOPT_USERAGENT=>&#39;Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17&#39;,
			CURLOPT_POSTFIELDS=>$post_data,
			CURLOPT_COOKIESESSION=>true,
			CURLOPT_COOKIE=>$this->cookie,
		);
		$result=$this->exec($option);
		if($result==&#39;{"sendCode":"true","info":"消息发送成功"}&#39;) return true;
		else return false;
	}
	function teltouid($tel){
		$option = array(
			CURLOPT_URL =>&#39;http://f.10086.cn/im5/index/searchFriendsByQueryKey.action&#39; ,
			CURLOPT_REFERER=>&#39;http://f.10086.cn/im5/login/login.action?mnative=0&t=&#39;.time().&#39;192&#39;,
			CURLOPT_POST=>true,
			CURLOPT_RETURNTRANSFER=>true,
			CURLOPT_POSTFIELDS=>&#39;queryKey=&#39;.$tel,
			CURLOPT_HEADER=>false,
			CURLOPT_USERAGENT=>&#39;Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17&#39;,
			CURLOPT_COOKIE=>$this->cookie,
			CURLOPT_COOKIESESSION=>true
		);
		$obj=json_decode($this->exec($option));echo $obj->contacts[0]->idFetion; print_r($obj);
		//echo $obj->contacts[0]->idContact;
		return $obj->contacts[0]->idContact ;
	}
	function exec($option){
		$c=curl_init();
		curl_setopt_array($c,$option);
		$result=curl_exec($c);
		curl_close($c);
		return $result;
	}
	 function sae_saveCookie($string){
		$mmc=memcache_init();
	    if($mmc==false){
	        echo "mc init failed\n"; return 0;	    	
	    }
	    else
	    {
	        return memcache_set($mmc,$this->tel,$string);
	    }
	}
	function sae_readCookie(){
		$mmc=memcache_init();
	    if($mmc==false){
	        echo "mc init failed\n"; return 0;
	    }
	    else
	    {
	        echo $res=memcache_get($mmc,$this->tel);
                return $res;
	    }

	}
	function saveCookie($string){
		if(!empty($_SERVER[&#39;HTTP_APPNAME&#39;])&&!empty($_SERVER[&#39;HTTP_APPVERSION&#39;])) return $this->sae_saveCookie($string);
		$f=fopen($this->tel.&#39;.txt&#39;, &#39;w&#39;);
		return fwrite($f, $string);
	}
	function readCookie(){
          if(isset($_SERVER[&#39;HTTP_APPNAME&#39;])&&isset($_SERVER[&#39;HTTP_APPVERSION&#39;])){  $this->cookie= $this->sae_readCookie(); return 1;}
		if(file_exists($this->tel.&#39;.txt&#39;)&&filesize($this->tel.&#39;.txt&#39;)){
			$f=fopen($this->tel.&#39;.txt&#39;, &#39;r&#39;);
			$cookie=fread($f, filesize($this->tel.&#39;.txt&#39;));
			if(!empty($cookie)) return $this->cookie=$cookie;
		}
	}
}
$f=new PHPFetionRobot(&#39;13312312311&#39;,wpwd&#39;);
$f->login(&#39;13312312311&#39;,&#39;pwd&#39;);//$f->getonlineuser();
$f->cookielogin();
$f->getonlineuser();
//$res=$f->sendSMS(&#39;1234567890&#39;,&#39;测试吧发短信&#39;);
//if($res) echo &#39;成功&#39;;
//else echo &#39;失败&#39;;
//$f->keeponline();
//$msg=$f->getmsg();
//foreach($msg as $m) print_r($m);
print_r($f->getmsg());  // 返回的是数组对象
foreach ($f->getmsg() as  $msgobj) {
	echo $f->getmsgover($msgobj->idMessage);//已经读取完毕
}
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn