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通过文件头检测文件类型通用代码类(zip,rar等)
Oct 19 PHP
php中explode与split的区别介绍
Oct 03 PHP
php读取csv实现csv文件下载功能
Dec 18 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
php实现以只读方式打开文件的方法
Mar 16 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
PHP终止脚本运行三种实现方法详解
Sep 01 PHP
phpstudy隐藏index.php的方法
Sep 21 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中date.timezone设置分析
2011/07/29 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
php开发文档 会员收费1期
2012/08/14 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
Jquery作者John Resig自己封装的javascript 常用函数
2009/11/09 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
遍历jquery对象的代码分享
2011/11/02 Javascript
在JavaScript中实现类的方式探讨
2013/08/28 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
layer弹出层自适应高度,垂直水平居中的实现
2019/09/16 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
解决Vue中使用keepAlive不缓存问题
2020/08/04 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
Python学习_几种存取xls/xlsx文件的方法总结
2018/05/03 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
法国票务网站:Ticketmaster法国
2018/07/09 全球购物
英国网上自行车商店:Tredz Bikes
2019/10/29 全球购物
答谢会策划方案
2014/05/12 职场文书
临床专业自荐信
2014/06/22 职场文书
党校个人总结
2015/03/04 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
2015年度优秀员工获奖感言
2015/07/31 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle