博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众账户模拟登陆后的一系列操作
阅读量:5127 次
发布时间:2019-06-13

本文共 5459 字,大约阅读时间需要 18 分钟。

'公众账户名称','password'=>'密码'); * $obj=new wx_mass($user); * $obj->mass('感谢您关注优乐购物,这条消息是由测试程序发出,给你带来不便,敬请谅解!'); * * @package wxdl * @author 我好笨 * @copyright 2014 * @version $Id$ * @access public */class wx_mass{ private $_cookiefile; private $_cookieexpired = 3600; private $_account; private $_password; private $_token; public function __construct($options) { $this->_account = isset($options['account'])?$options['account']:''; $this->_password = isset($options['password'])?$options['password']:''; //必须使用绝对路径 $this->_cookiefile=dirname(__FILE__).'/temp/'.md5($this->_account);//此处需要创建一个文件夹装cookie文件 $this->getCookie(); } /** * wx_mass::mass() * * 微信群发功能 * * @param mixed $content 群发内容 * @return 成功返回ture,失败返回fasle */ public function mass($content) { $refer="https://mp.weixin.qq.com/cgi-bin/masssendpage?t=mass/send&token=".$this->_token."&lang=zh_CN"; $submit="https://mp.weixin.qq.com/cgi-bin/masssend"; $post['ajax']=1; $post['city']=''; $post['content']=$content; $post['country']=''; $post['f']='json'; $post['groupid']=-1; $post['imgcode']=''; $post['lang']='zh_CN'; $post['province']=''; $post['random']=$this->randomFloat(0,1); $post['sex']=0; $post['synctxnews']=0; $post['synctxweibo']=0; $post['t']='ajax-response'; $post['token']=$this->_token; $post['type']=1; $tmpInfo=$this->curl($submit,$refer,false,true,$post); $result = json_decode($tmpInfo,true); if (!isset($result['base_resp']) || $result['base_resp']['ret'] != 0) { return false; } return true; } /** * wx_mass::getUserList() * * 根据分组ID获取用户列表 * * @param integer $page * @param integer $pagesize * @param integer $groupid * @return */ public function getUserList($page=0,$pagesize=10,$groupid=100) { $t = time().strval(mt_rand(100,999)); $referer = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=".$pagesize."&pageidx=".$page."&type=0&groupid=0&lang=zh_CN&token=".$this->_token; $submit = "https://mp.weixin.qq.com/cgi-bin/contactmanage?t=user/index&pagesize=".$pagesize."&pageidx=".$page."&type=0&groupid=$groupid&lang=zh_CN&f=json&token=".$this->_token; $result=$this->curl($submit,$referer); $json = json_decode($result,true); if(isset($json['contact_list'])) { $json = json_decode($json['contact_list'],true); if(isset($json['contacts'])) { return $json['contacts']; } } return false; } /** * wx_mass::login() * * 模拟登陆 * * @return void */ private function login() { $submit = "https://mp.weixin.qq.com/cgi-bin/login?lang=zh_CN"; $refer = "https://mp.weixin.qq.com/"; $post["username"] = $this->_account; $post["pwd"] = md5($this->_password); $post["f"] = "json"; $post["imgcode"] = ""; $tmpInfo=$this->curl($submit,$refer,true,true,$post); $result = json_decode($tmpInfo,true); if (!isset($result['base_resp']) || $result['base_resp']['ret'] != 0) { return false; } preg_match("/token=(\d+)/i",$result['redirect_url'],$matches); if($matches) { $this->_token = $matches[1]; } } /** * wx_mass::curl() * * @param mixed $submit curl访问目标URL * @param mixed $refer 伪造的refer * @param bool $write_cookie 读写cookie,true为保存,false为读取 * @param bool $is_post 是否post提交数据,true为提交数据,提交数据时,$post为提交的值 * @param mixed $post is_post为真时,提交的数据 * @return 返回curl执行结果 */ private function curl($submit,$refer,$write_cookie=false,$is_post=false,$post=array()) { $ch = curl_init(); // 启动一个CURL会话 curl_setopt($ch, CURLOPT_URL, $submit); // 要访问的地址 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 curl_setopt($ch, CURLOPT_SSLVERSION, 3); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 curl_setopt($ch, CURLOPT_REFERER, $refer); if($is_post) { curl_setopt($ch, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); // Post提交的数据包 } curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 if($write_cookie && file_exists($this->_cookiefile)) { @unlink($this->_cookiefile); } if($write_cookie) { curl_setopt($ch,CURLOPT_COOKIEJAR,$this->_cookiefile); } else { curl_setopt($ch, CURLOPT_COOKIEFILE, $this->_cookiefile); } curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $tmpInfo = curl_exec($ch); // 执行操作 var_dump($tmpInfo); if(curl_errno($ch)) { $tmpInfo='Errno'.curl_error($ch);//捕抓异常 } curl_close($ch); // 关闭CURL会话 return $tmpInfo; } /** * wx_mass::getCookie() * * 获取cookie,检测cookie有效性 * * @return void */ private function getCookie() { //登录获取cookie及token $this->login(); } private function randomFloat($min = 0, $max = 1) { return $min + mt_rand() / mt_getrandmax() * ($max - $min); }}$arr = array("account"=>"公众账户名称","password"=>"密码");$aar = new wx_mass($arr); $abc = $aar -> getUserList(); var_dump($abc);?>  

  

转载于:https://www.cnblogs.com/xingli-php/p/3970558.html

你可能感兴趣的文章
akoj-1272-字母统计
查看>>
Python_scrapyRedis零散
查看>>
“耐撕”2016.04.13站立会议
查看>>
通过adb启动app应用
查看>>
第十九章 排查和调试Web程序 之 防止和排查运行时问题
查看>>
STM32/GD32上内存堆栈溢出探测研究
查看>>
浅谈 C# ref 和 out 的使用方法
查看>>
css鼠标样式
查看>>
线段树
查看>>
安卓源代码----安卓系统启动过程(初次研究源代码,表述不当还请见谅)
查看>>
hadoop-mapreduce中reducetask执行分析
查看>>
Thinking in UML 学习笔记(三)——UML核心视图之类图
查看>>
插件收藏
查看>>
http响应状态码301和302
查看>>
urp
查看>>
Python3——嵌套函数
查看>>
JUnit中的设计模式:组合模式 Composite
查看>>
Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误
查看>>
MySql unique的实现原理简析
查看>>
Oracle get column/comment definitions for a table
查看>>