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 相关文章推荐
中国站长站 For Dede4.0 采集规则
May 27 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
PHP备份数据库生成SQL文件并下载的函数代码
Feb 05 PHP
php遍历数组的方法分享
Mar 22 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
PHP小技巧之函数重载
Jun 02 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
thinkPHP订单数字提醒功能的实现方法
Dec 01 PHP
PHP长网址与短网址的实现方法
Oct 13 PHP
php中文语义分析实现方法示例
Sep 28 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
Extended CHM PHP 语法手册之 DIY
2006/10/09 PHP
介绍几个array库的新函数 php
2006/12/29 PHP
PHP的SQL注入过程分析
2012/01/06 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
解析javascript 实用函数的使用详解
2013/05/10 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
Vue核心概念Getter的使用方法
2019/01/18 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
小程序使用watch监听数据变化的方法详解
2019/09/20 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
写一个Vue loading 插件
2020/11/09 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
Python实现统计文本文件字数的方法
2017/05/05 Python
python 实现在Excel末尾增加新行
2018/05/02 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
工程业务员工作职责
2013/12/07 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
作风建设年活动总结
2014/08/27 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
师德师风心得体会(2016精选篇)
2016/01/12 职场文书
护士心得体会范文
2016/01/25 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
python在package下继续嵌套一个package
2022/04/14 Python