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 相关文章推荐
php set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
php 文章调用类代码
Aug 11 PHP
PHP队列用法实例
Nov 05 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
Jan 07 PHP
php通过asort()给关联数组按照值排序的方法
Mar 18 PHP
非常实用的php验证码类
May 15 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
Jul 06 PHP
php格式化时间戳
Dec 17 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP date()格式MySQL中插入datetime方法
Jan 29 PHP
Laravel 微信小程序后端搭建步骤详解
Nov 26 PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 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 session 存储方式的详细介绍
2013/06/25 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
php需登录的文件上传管理系统
2020/03/21 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
2021/03/09 PHP
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
Angularjs 事件指令详细整理
2017/07/27 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
JavaScript实现QQ列表展开收缩扩展功能
2017/10/30 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
2019/12/30 jQuery
JavaScript实现简单的计算器
2020/01/16 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
python+mysql实现简单的web程序
2014/09/11 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
python ddt实现数据驱动
2018/03/14 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
python使用knn实现特征向量分类
2018/12/26 Python
用django设置session过期时间的方法解析
2019/08/05 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
详解Django配置JWT认证方式
2020/05/09 Python
Python面向对象实现方法总结
2020/08/12 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
入党积极分子对十八届四中全会期盼的思想汇报
2014/10/17 职场文书
新生儿未入户证明
2015/06/23 职场文书
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
Arthas排查Kubernetes中应用频繁挂掉重启异常
2022/02/28 MySQL