PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析


Posted in PHP onJanuary 02, 2020

本文实例讲述了PHP配合fiddler抓包抓取微信指数小程序数据的实现方法。分享给大家供大家参考,具体如下:

这两天研究了下微信指数这个东西。要抓取呢,按照一般思路的话,那就是使用fiddler抓取手机包,然后进行分析获取地址然后请求就可以了。

这么想你是没错,如果你果断这么做了,那就是too yang too simple了。大家可以看下,微信抓取有以下几个步骤:

1、开始登陆小程序

2、获取访问需要的令牌

3、那这令牌去获取数据

首先的难点就是小程序的登陆那一步。你得先登陆了微信之后才可以访问小程序,因为小程序是基于微信来运行的。所以,你登录的时候需要用到一个微信内部生成的js_code这个值。光是这一步就是一个深不见底的巨坑。

好吧,亿分之一概率的情况下,你获取了这个值,之后就是获取search_key这个值,还有就是一个UNIX时间戳。

完事你就可以尽情的获取你想要的数据了??????

少年,做人还是要稳重点的。。。微信有一个访问限制的系统。请求到一定的频次,会提示操作频繁的。所以你费好大劲完事之后,还是没有什么太实际的结果。

网上有一个解决方案是这样的,就是用lua语言配合触动精灵写一个操作微信的脚本,类似自动抢红包那样的。完事用这个脚本来自动输入关键词进行查询,完事再使用抓包工具获取这些请求内容。

关于使用抓包工具获取请求内容不太清楚的亲们,可以参考:https://3water.com/article/177679.htm

先不说这种方案的成功率。咱们先来说说效率问题。难不成,你这样做,微信就不会限制你的请求???

还有就是学习一门语言的各种成本。。。

所以,本人使用PHP结合fiddler抓包工具,设计了一个简单,易学的抓取数据的方案。容我一一道来:

首先就是配置fiddler可以把抓取的数据保存到本地。

参考链接:https://3water.com/article/177679.htm

这是用来获取访问令牌的,核心PHP代码如下:

function get_search_key($path)
{
  $file = fopen($path, "r");
  $user=array();
  $i=0;
  while(! feof($file))
  {
    $user[$i]= mb_convert_encoding ( fgets($file), 'UTF-8','Unicode');
    $i++;
  }
  fclose($file);
  $user=array_filter($user);
  foreach ($user as $item_u => $value_u) {
    if(strstr($value_u,"search_key=")){
      $temp[] = $value_u;
    }
  }
  $end_url = end($temp);
  $reg = "#openid=[a-zA-Z0-9]++_[a-zA-Z0-9]++&search_key=\d++_\d++#isU";
  preg_match_all($reg,$end_url,$time);
  return $time[0][0];
}

输入保存文件的地址,得到返回值,拿着这个返回值,来进行请求,就可以获取你想要的数据了。

不过,这玩意也是有缺陷。首先就是配置手机连接电脑,关于这个,我后期会在评论里补充上。再来就是配置fiddler保存包到本地文件。还有就是需要手机访问小程序之后程序才能运行成功。比较麻烦。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php 正则表达式小结
Aug 31 PHP
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
Jun 20 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
Dec 15 PHP
php调用KyotoTycoon简单实例
Apr 02 PHP
php数组函数array_walk用法示例
May 26 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
详解Yii2 rules 的验证规则
Dec 02 PHP
php获取微信共享收货地址的方法
Dec 21 PHP
使用Zookeeper分布式部署PHP应用程序
Mar 15 PHP
Yii框架函数简单用法分析
Sep 09 PHP
Laravel 框架路由原理与路由访问实例分析
Apr 14 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 #PHP
PHP CURL实现模拟登陆并上传文件操作示例
Jan 02 #PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
Dec 31 #PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 #PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 #PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 #PHP
PHP单元测试配置与使用方法详解
Dec 27 #PHP
You might like
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
AngularJS中使用three.js的实例详解
2017/07/21 Javascript
Vue2.0 axios前后端登陆拦截器(实例讲解)
2017/10/27 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
vue组件添加事件@click.native操作
2020/10/30 Javascript
python中合并两个文本文件并按照姓名首字母排序的例子
2014/04/25 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python用sndhdr模块识别音频格式详解
2018/01/11 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
销售所有的狗狗产品:Dog.com
2016/10/13 全球购物
墨西哥巴士车票在线购买:ClickBus
2018/03/27 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
法制宣传标语集锦
2014/06/25 职场文书
2014年建筑工作总结
2014/11/26 职场文书
考试作弊检讨书怎么写?
2014/12/21 职场文书
体育教师个人工作总结
2015/02/09 职场文书
化工生产实习心得体会
2016/01/22 职场文书
MySQL时间设置注意事项的深入总结
2021/05/06 MySQL