<?php
header("content-type:text/html;charset=utf-8");/*** wx_mass* * 完成微信公众账户模拟登陆后的一系列操作* mass($content) 调用微信群发接口,群发文本信息* getUserList($page,$pagesize,$group) 获取用户信息* * 群发demo* * $user=array('account'=>'公众账户名称','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

微信公众账户模拟登陆后的一系列操作相关推荐

  1. 微信公众平台模拟登陆和发送消息详解

    腾讯过于坑爹,看起来叫开放平台,其实有很多限制,为了实现某些功能,本人也只好铤而走险,从此踏上了模拟登陆的不归路,百度了无数的网页,不过由于腾讯的不停调整,那些代码都已经失效了,看过了不少风格迥异的代 ...

  2. Python3 微信公众平台模拟登陆 requests模拟请求

    声明此代码仅供技术交流学习,擅自用于其他,一切后果与本人无关 目标网址: https://mp.weixin.qq.com/ 所谓模拟登陆,就是自己模拟构造请求发送给服务器,然后服务器返回认证的信息过 ...

  3. 微信公众平台模拟登录自动群发图文消息工具包

    无需微信认证即可实现微信公众号自动群发图文消息. 使用 npm i wechat-mp-hack --save const Wechat = require('wechat-mp-hack'); co ...

  4. 微信公众号自动回复服务器数据,[终极方案]解决微信公众号服务器配置启用后无法自动回...

    在配置服务器配置时Token验证通过后,遇到给公众号发信息,提示:提示该公众号提供的服务出现故障,请稍后再试 的问题,一直实现不了自动回复的功能.百度了大量的资料,参考了开发文档,尝试了n种办法,检查 ...

  5. 如何设置微信公众号粉丝关注后自动推送小程序

    关于微信公众号粉丝关注后自动推送小程序实现,第三方工具微号帮提供了功能粉丝关注定时推送实现,支持微信公众号设置粉丝关注后自动推送小程序,小程序可以以卡片.链接的形式展现给关注粉丝;公众号设置关注推送小 ...

  6. 腾讯音乐 知乎 微信公众账户 搜狗

    腾讯音乐的评论里面有了知乎 微信公众账户搜索是搜狗 微信公众账户能搜出 知乎内容 知乎的指数 知乎的流量来源 转载于:https://www.cnblogs.com/freedommovie/p/64 ...

  7. 微信公众号添加关注后自动回复图文信息(素材)

    公众号在被添加关注后其实不仅可以回复单纯的文字,还有一个效果更好的方式是直接回复图文,在图文信息中传达你的感谢和说明一些公众号的情况.那么微信公众号添加关注后怎么自动回复图文信息?下面小编就为大家介绍 ...

  8. UI测试框架:playwright-python + pytest 模拟登陆后保持登录状态进行测试,避免重复登陆

    playwright-python + pytest 模拟登陆后进行测试 playwright-python + pytest 模拟登陆后进行测试 1. 初始(遇到的问题) 2. 问题的解决方法 1. ...

  9. 海外微信公众号被关注后不能自动回复消息的解决方案

    海外版微信 有过相关业务联系的人或许知道,微信公众平台存在两个版本:国内版和海外版.而这两个版本的功能是不一样的.看看对比图,海外版连最基本的 "被关注回复" 和 "收到 ...

最新文章

  1. python【数据结构与算法】分治算法之大整数乘法
  2. linux命令:vmstat
  3. 【docker常用镜像命令总结,持续更新中... 建议收藏!】
  4. [leetcode]509. 斐波那契数
  5. 找不到要去的声明_老汉将行李袋交由他人看管 去了一趟卫生间找不到人了.........
  6. 爆款专栏《Python 黑科技》目录导航丨进度:12/50
  7. JBox2D For Android - hello box2d
  8. Jquery 同个类名中点击的显示其他隐藏的效果
  9. 中移互联网副总:创新技术如何赋能企业变现突破
  10. ggplot2分面柱状图柱子比例一致_R语言柱状图
  11. 使用wordpress的心得
  12. CNN训练Cifar-10技巧
  13. 不同文件格式打开的方法
  14. 图灵奖得主亲授!深度学习视频课程精选
  15. Java学习笔记(17)
  16. WEEK5 周记 作业——差分数组_TT的魔法猫
  17. STM32F103RC
  18. windows下 python 使用 pip 安装TA-Lib报错的原因及解决方法
  19. 求最长公共子序列长度
  20. 冥想的重大功能——人类21在21世纪的伟大发现

热门文章

  1. 表单提交中的input、button、submit的区别
  2. C++处理一个动态规划的问题
  3. Perl学习笔记(六)--文件(一)
  4. 内存数据库和关系数据库之间的数据同步原理
  5. Configuate Mac OSX $PATH
  6. linux下统计文件的数目,Linux下如何统计文件数目
  7. 模拟微信自动化发送(微信公众号文章自动点击)
  8. 并发编程之多线程线程安全(上)
  9. data:image data url 文件上传
  10. java栈API_Java中的堆栈API——Stack