PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解


Posted in PHP onDecember 20, 2019

简介:

分析接口知道要获取文章阅读数和点赞数必须有key和uin这两个关键参数,不同公众号key不一样(据说有万能微信key,不懂怎么搞到),同一个公众号key大概半小时会过期

提交链接获取文章阅读量api

思路:

1.将客户端请求阅读量接口的请求拦截转发到自己服务器,这样就可以获取到key ,用__biz关联缓存半小时

2.提交文章链接进行查询时,服务器从文章链接里获取__biz,查询是否缓存了当前公众号对应的key,有的话进行第3步,没有进行第4步。

3.curl请求https://mp.weixin.qq.com/mp/getappmsgext? 接口获取数据

4.key不存在时,通知客户端重定向到该url(通知用websocket通知或者客户端ajax轮询,需要用抓包工具修改文章详情页代码让其跳转到中间页面待命,打开文章页面后隔几秒跳回中间页)并暂停程序几秒等待客户端更新key,此时客户端提交了新的key,用其进行查询

实现

1.抓包

此接口就是获取阅读量的接口,参数如下图

PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

2.将此接口拦截转发到自己服务器,点击 rules- customize rules  在OnBeforeRequest(正式请求之前执行的函数)加上

if (oSession.fullUrl.Contains("mp.weixin.qq.com/mp/getappmsgext"))
 {
  oSession.oRequest["Host"]= 'ccc.aaa.com' ;
 }

PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

效果,可以看到此接口已经被转发

PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

3.服务端缓存key,代码以PHP为例

public function saveKey(Request $request)
  {
    $__biz = $request->param('__biz',0);
    $data['uin'] = $request->param('uin',0);
    $data['key'] = $request->param('key',0);
    Cache::set($__biz,$data,30 * 60);
    return 'ok';
  }

4.提交文章链接查询API代码

public function getReadNum(Request $request)
  {
    $url = $request->param('url');
    parse_str(parse_url($url)['query'], $param);
    $__biz = $param['__biz'];
    $key_data = Cache::get($__biz);
    if (empty($key_data))
      return 'no key';
    $uin = $key_data['uin'];
    $key = $key_data['key'];
    $param['uin'] = $uin;
    $param['key'] = $key;
    $param['wxtoken'] = "777";
    $wechat_url = "https://mp.weixin.qq.com/mp/getappmsgext?" . http_build_query($param);
    //dump($wechat_url);
    $data = array(
      'is_only_read' => 1,
      'is_temp_url' => 0,
      'appmsg_type' => 9,
    );
    $res = $this->get_url($wechat_url,$data);
    return $res;
  }
function get_url($url,$data)
  {
    $ifpost = 1;//是否post请求
    $datafields = $data;//post数据
    $cookiefile = '';//cookie文件
    $cookie = '';//cookie变量
    $v = false;
 
    //模拟http请求header头
    $header = array("Connection: Keep-Alive","Accept: text/html, application/xhtml+xml, */*", "Pragma: no-cache", "Accept-Language: zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3","User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1278.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 WindowsWechat");
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $v);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
    $ifpost && curl_setopt($ch, CURLOPT_POST, $ifpost);
    $ifpost && curl_setopt($ch, CURLOPT_POSTFIELDS, $datafields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $cookie && curl_setopt($ch, CURLOPT_COOKIE, $cookie);//发送cookie变量
    $cookiefile && curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile);//发送cookie文件
    $cookiefile && curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile);//写入cookie到文件
    curl_setopt($ch,CURLOPT_TIMEOUT,60); //允许执行的最长秒数
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    $ok = curl_exec($ch);
    curl_close($ch);
    unset($ch);
    return $ok;
  }

5.通知客户端重定向页面(这部分没写,看参考我的其他关于文本socket文章)

6.用fiddler修改微信文章也jsj脚本,

在OnBeforeResponse(返回给客户端之前执行的方法),加上跳转到中间页的代码

效果

PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解

总结

以上所述是小编给大家介绍的PHP+fiddler抓包采集微信文章阅读数点赞数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

PHP 相关文章推荐
多文件上传的例子
Oct 09 PHP
透析PHP的配置文件php.ini
Oct 09 PHP
php set_time_limit(0) 设置程序执行时间的函数
May 26 PHP
一个完整的PHP类包含的七种语法说明
Jun 04 PHP
PHP面试常用算法(推荐)
Jul 22 PHP
PHP导出带样式的Excel示例代码
Aug 28 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
php 中奖概率算法实现代码
Jan 25 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP获取对象属性的三种方法实例分析
Jan 03 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
php中yar框架实例用法讲解
Dec 27 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
Dec 20 #PHP
Laravel框架处理用户的请求操作详解
Dec 20 #PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 #PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 #PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 #PHP
PHP中用Trait封装单例模式的实现
Dec 18 #PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 #PHP
You might like
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
JavaScript 面向对象之命名空间
2010/05/04 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
页面使用密码保护代码
2013/04/10 Javascript
javascript中直接引用Microsoft的COM生成Word
2014/01/20 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
纯js实现隔行变色效果
2017/11/29 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
vue cli安装使用less的教程详解
2019/07/12 Javascript
vue实现表单未编辑或未保存离开弹窗提示功能
2020/04/08 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
Python加速程序运行的方法
2020/07/29 Python
python如何爬取动态网站
2020/09/09 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
乐高奥地利官方商店:LEGO Shop AT
2019/07/16 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
仓库管理专业个人的自我评价
2013/12/30 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
初中中等生评语
2014/12/29 职场文书
幼儿园教师师德承诺书
2015/04/28 职场文书
致创业您:正能量激励人心句子(48条)
2019/08/15 职场文书
零基础学java之方法的定义与调用详解
2022/04/10 Java/Android