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 相关文章推荐
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
Jun 23 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
解析smarty模板中类似for的功能实现
Jun 18 PHP
PHP实现变色验证码实例
Jan 06 PHP
PHP与MYSQL中UTF8 中文排序示例代码
Oct 23 PHP
PHP中大于2038年时间戳的问题处理方案
Mar 03 PHP
PHP数据库操作Helper类完整实例
May 11 PHP
PHP工厂模式、单例模式与注册树模式实例详解
Jun 03 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 PHP
PHP学习记录之常用的魔术常量详解
Dec 12 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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编程开发“虚拟域名”系统
2006/10/09 PHP
php数组删除元素示例
2014/03/21 PHP
PHP获取指定月份第一天和最后一天的方法
2015/07/18 PHP
phalcon框架使用指南
2016/02/23 PHP
用javascript实现自定义标签
2007/05/08 Javascript
Js 中debug方式
2010/02/07 Javascript
JavaScript学习历程和心得小结
2010/08/16 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
详谈jQuery操纵DOM元素属性 attr()和removeAtrr()方法
2015/01/22 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
jQuery插件FusionCharts实现的2D柱状图效果示例【附demo源码下载】
2017/03/06 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
swiper实现导航滚动效果
2020/12/13 Javascript
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
生产总经理岗位职责
2013/12/19 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
晚归检讨书
2014/02/19 职场文书
企业后勤岗位职责
2014/02/28 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
2014年网管工作总结
2014/12/11 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
Nginx速查手册及常见问题
2022/04/07 Servers