加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

PHP实现微信模仿登岸并给用户发送动静的要领【笔墨,图片,图文】

发布时间:2021-01-24 17:21:37 所属栏目:编程 来源:网络整理
导读:本篇章节讲授PHP实现微信模仿登岸并给用户发送动静的要领。供各人参考研究详细如下: '公家平台帐号','password

本篇章节讲授PHP实现微信模仿登岸并给用户发送动静的要领。分享给各人供各人参考,详细如下:

'公家平台帐号','password' => '暗码' ); $w = new Weixin($arr); $w->getAllUserInfo();//获取全部用户信息 $w->getUserInfo($groupid,$fakeid);//获取全部用户信息,假如默认分组,则$groupid传0 $w->sendMessage('群发内容'); //群发给全部用户 $w->sendMessage('群发内容',$userId); //群发给特定用户,这里的$userId就是用户的fakeid,数组方法转达 */ $w = new Weixin(array('account'=>'771948524@qq.com','password'=>'1259012345')); $w->sendMessage('hello','oXLujjp9y1311QldQKht7iyq83RM'); exit; class Weixin { public $userFakeid;//全部粉丝的fakeid private $_account;//用户名 private $_password;//暗码 private $url;//哀求的网址 private $send_data;//提交的数据 private $getHeader = 0;//是否表现Header信息 private $token;//民众帐号TOKEN private $host = 'mp.weixin.qq.com';//主机 private $origin = 'https://mp.weixin.qq.com'; private $referer;//引用地点 private $cookie; private $pageSize = 100000;//每页用户数(用于读取全部用户) private $userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'; public function __construct($options){ $this->_account = isset($options['account'])?$options['account']:''; $this->_password = isset($options['password'])?$options['password']:''; $this->login(); } //登录 private function login(){ $url = 'https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN'; $this->send_data = array( 'username' => $this->_account,'pwd' => md5($this->_password),'f' => 'json' ); $this->referer = "https://mp.weixin.qq.com/"; $this->getHeader = 1; $result = explode("n",$this->curlPost($url)); //print_r($result);exit; foreach ($result as $key => $value) { $value = trim($value); if (preg_match('/token=(d+)/i',$value,$match)){ //获取token $this->token = trim($match[1]); } if (preg_match('/"ret":(.*)/i',$match)){//获取token switch ($match[1]) { case -1: die(json_encode(array('status'=>1,'errCode'=>$match[1],'msg'=>"体系错误"))); case -2: die(json_encode(array('status'=>1,'msg'=>"帐号或暗码错误"))); case -3: die(urldecode(json_encode(array('status'=>1,'msg'=>urlencode("暗码错误"))))); case -4: die(json_encode(array('status'=>1,'msg'=>"不存在该帐户"))); case -5: die(json_encode(array('status'=>1,'msg'=>"会见受限"))); case -6: die(json_encode(array('status'=>1,'msg'=>"必要输入验证码"))); case -7: die(json_encode(array('status'=>1,'msg'=>"此帐号已绑定私家微信号,不行用于公家平台登录"))); case -8: die(json_encode(array('status'=>1,'msg'=>"邮箱已存在"))); case -32: die(json_encode(array('status'=>1,'msg'=>"验证码输入错误"))); case -200: die(json_encode(array('status'=>1,'msg'=>"因频仍提交卖弄资料,该帐号被拒绝登录"))); case -94: die(json_encode(array('status'=>1,'msg'=>"请行使邮箱登岸"))); case 10: die(json_encode(array('status'=>1,'msg'=>"该公家集会会议号已经逾期,无法再登录行使"))); case 0: //$this->userFakeid = $this->getUserFakeid(); break; } } if(preg_match('/^set-cookie:[s]+([^=]+)=([^;]+)/i',$match)){//获取cookie $this->cookie .=$match[1].'='.$match[2].'; '; } } } //单动员静 private function send($fakeid,$content){ $url = 'https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN'; $this->send_data = array( 'type' => 1,'f' => 'json','action' => 'sync','content' => $content,'tofakeid' => $fakeid,'token' => $this->token,'ajax' => 1,); $this->referer = 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token='.$this->token.'&fromfakeid='.$fakeid.'&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN'; return $this->curlPost($url); } //单动员静 private function sendimg($fakeid,$mediaid){ $url = 'https://mp.weixin.qq.com/cgi-bin/singlesend?t=ajax-response&lang=zh_CN'; $this->send_data = array( 'type' => 2,'file_id'=>$mediaid,'fileid'=>$mediaid,); $this->referer = 'https://mp.weixin.qq.com/cgi-bin/singlemsgpage?token='.$this->token.'&fromfakeid='.$fakeid.'&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_CN'; return $this->curlPost($url); } //群动员静 public function sendMessage($content='',$userId='') { if(!empty($userId)){ $json = json_decode($this->sendimg($userId,'304019426')); /*if($json->ret!=0){ $errUser[] = $v; }*/ /*foreach($userId as $v){ $json = json_decode($this->send($v,$content)); if($json->ret!=0){ $errUser[] = $v; } }*/ }else{ foreach($this->userFakeid as $v){ $json = json_decode($this->send($v['fakeid'],$content)); if($json->ret!=0){ $errUser[] = $v['fakeid']; } } } //共发送用户数 //$count = count($this->userFakeid); //发送失败用户数 //$errCount = count($errUser); //发送乐成用户数 //$succeCount = $count-$errCount; /*$data = array( 'status'=>0,'count'=>$count,'succeCount'=>$succeCount,'errCount'=>$errCount,'errUser'=>$errUser ); return json_encode($data);*/ } //获取全部用户信息 public function getAllUserInfo(){ foreach($this->userFakeid as $v){ $info[] = $this->getUserInfo($v['groupid'],$v['fakeid']); } return $info; } //获取用户信息 public function getUserInfo($groupId,$fakeId){ $url = "https://mp.weixin.qq.com/cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=zh_CN&fakeid={$fakeId}"; $this->getHeader = 0; $this->referer = 'https://mp.weixin.qq.com/cgi-bin/contactmanagepage?token='.$this->token.'&t=wxm-friend&lang=zh_CN&pagesize='.$this->pageSize.'&pageidx=0&type=0&groupid='.$groupId; $this->send_data = array( 'token'=>$this->token,'ajax'=>1 ); $message_opt = $this->curlPost($url); return $message_opt; } //获取全部用户fakeid private function getUserFakeid(){ ini_set('max_execution_time',600); $pageSize = 100; $this->referer = "https://mp.weixin.qq.com/cgi-bin/home?t=home/index&lang=zh_CN&token={$this->token}"; $url = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize={$pageSize}&pageidx=0&type=0&groupid=0&token={$this->token}&lang=zh_CN"; $user = $this->vget($url); //print_r($user);exit; //$preg = "/"id":(d+),"nick_name"/"; //preg_match_all($preg,$user,$b); $user = str_replace(array(" "," ","t","n","r"),'',$user); preg_match_all('%id:"(.*?)",%si',$b); $i = 0; foreach($b[1] as $v){ $arr[$i]['fakeid'] = $v; $arr[$i]['groupid'] = 0; $i++; } return $arr; } /** * curl模仿登录的post要领 * @param $url request地点 * @param $header 模仿headre头信息 * @return json */ private function curlPost($url) { $header = array( 'Accept:*/*','Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3','Accept-Encoding:gzip,deflate,sdch','Accept-Language:zh-CN,zh;q=0.8','Connection:keep-alive','Host:'.$this->host,'Origin:'.$this->origin,'Referer:'.$this->referer,'X-Requested-With:XMLHttpRequest' ); $curl = curl_init(); //启动一个curl会话 curl_setopt($curl,CURLOPT_URL,$url); //要会见的地点 curl_setopt($curl,CURLOPT_HTTPHEADER,$header); //配置HTTP头字段的数组 curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,0); //对认证证书来历的搜查 curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,1); //从证书中搜查SSL加密算法是否存在 curl_setopt($curl,CURLOPT_USERAGENT,$this->userAgent); //模仿用户行使的赏识器 curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1); //行使自动跳转 curl_setopt($curl,CURLOPT_AUTOREFERER,1); //自动配置Referer curl_setopt($curl,CURLOPT_POST,1); //发送一个通例的Post哀求 curl_setopt($curl,CURLOPT_POSTFIELDS,$this->send_data); //Post提交的数据包 curl_setopt($curl,CURLOPT_COOKIE,$this->cookie); //读取储存的Cookie信息 curl_setopt($curl,CURLOPT_TIMEOUT,30); //配置超时限定防备死轮回 curl_setopt($curl,CURLOPT_HEADER,$this->getHeader); //表现返回的Header地区内容 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); //获取的信息以文件流的情势返回 $result = curl_exec($curl); //执行一个curl会话 curl_close($curl); //封锁curl return $result; } private function vget($url){ // 模仿获取内容函数 $header = array( 'Accept: */*','Connection: keep-alive','Host: mp.weixin.qq.com','Referer: '.$this->referer,'X-Requested-With: XMLHttpRequest' ); $useragent = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'; $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl,$url); // 要会见的地点 curl_setopt($curl,0); // 对认证证书来历的搜查 curl_setopt($curl,1); // 从证书中搜查SSL加密算法是否存在 curl_setopt($curl,$useragent); // 模仿用户行使的赏识器 curl_setopt($curl,1); // 行使自动跳转 curl_setopt($curl,1); // 自动配置Referer curl_setopt($curl,CURLOPT_HTTPGET,1); // 发送一个通例的GET哀求 curl_setopt($curl,$this->cookie); // 读取上面所储存的Cookie信息 curl_setopt($curl,30); // 配置超时限定防备死轮回 curl_setopt($curl,$this->getHeader); // 表现返回的Header地区内容 curl_setopt($curl,1); // 获取的信息以文件流的情势返回 $tmpInfo = curl_exec($curl); // 执行操纵 if (curl_errno($curl)) { // echo 'Errno'.curl_error($curl); } curl_close($curl); // 封锁CURL会话 return $tmpInfo; // 返回数据 } }

更多关于PHP相干内容感乐趣的读者可查察本站专题:《》、《》、《》、《》、《》、《》及《》

但愿本文所述对各人PHP措施计划有所辅佐。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读