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使之能同时支持GIF和JPEG
Oct 09 PHP
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
php多重接口的实现方法
Jun 20 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
Feb 15 PHP
php字符串操作针对负值的判断分析
Jul 28 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
ThinkPHP中create()方法自动验证实例
Apr 26 PHP
php 广告点击统计代码(php+mysql)
Feb 21 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 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
杏林同学录(六)
2006/10/09 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
JS 统计时间
2021/03/09 Javascript
关闭时刷新父窗口两种方法
2014/05/07 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
终于实现了!精彩的jquery弹幕效果
2016/07/18 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
详解node服务器中打开html文件的两种方法
2017/09/18 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
vue组件横向树实现代码
2018/08/02 Javascript
使用express来代理服务的方法
2019/06/21 Javascript
createObjectURL方法实现本地图片预览
2019/09/30 Javascript
[34:39]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#1COL VS EG第二局
2016/03/05 DOTA
使用python Django做网页
2013/11/04 Python
python中黄金分割法实现方法
2015/05/06 Python
django初始化数据库的实例
2018/05/27 Python
python创建文件备份的脚本
2018/09/11 Python
python进行文件对比的方法
2018/12/24 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
使用python模拟高斯分布例子
2019/12/09 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
Django调用百度AI接口实现人脸注册登录代码实例
2020/04/23 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
德国消费电子产品购物网站:Guter Kauf
2020/09/15 全球购物
成绩单公证书
2014/04/10 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
公司员工活动策划方案
2014/08/20 职场文书
民事诉讼代理委托书
2014/10/08 职场文书
合作意向书范本
2019/04/17 职场文书
利用Python实时获取steam特惠游戏数据
2022/06/25 Python