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” 彩蛋进行敏感信息获取
Aug 07 PHP
php比较两个绝对时间的大小
Jan 31 PHP
PHP防止表单重复提交的几种常用方法汇总
Aug 19 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
Nov 17 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
Sep 20 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP常量define和const的区别详解
May 18 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
如何在Laravel5.8中正确地应用Repository设计模式
Nov 26 PHP
Laravel框架使用技巧之使用url()全局函数返回前一个页面的地址方法详解
Apr 06 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处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
使用正则替换变量
2007/05/05 Javascript
javaScript Array(数组)相关方法简述
2009/07/25 Javascript
原生javaScript做得动态表格(注释写的很清楚)
2013/12/29 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
Javascript中的对象和原型(二)
2016/08/12 Javascript
jQuery实现微信长按识别二维码功能
2016/08/26 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
vue数据双向绑定的注意点
2017/06/23 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python+adb命令实现自动刷视频脚本案例
2020/04/23 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
中专毕业生个人职业生涯规划
2014/02/19 职场文书
《锄禾》教学反思
2014/04/08 职场文书
中秋节活动总结
2014/08/29 职场文书
教师个人师德总结
2015/02/06 职场文书
重阳节简报
2015/07/20 职场文书
golang在GRPC中设置client的超时时间
2021/04/27 Golang
Python图片检索之以图搜图
2021/05/31 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python