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措施计划有所辅佐。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |