码迷,mamicode.com
首页 > 移动开发 > 详细

--hook,某电商(bao)app签名实现数据采集,欢迎交流

时间:2019-10-01 11:42:01      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:版本   ssi   电商   访问   消息   方法   改版   获取对象   sid   

一、什么是 Hook 技术

  Hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序就先捕获该消息,钩子函数先得到控制权,这时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来变成我们自己执行代码片段。
  要实现钩子函数,有两个步骤:
  1. 利用系统内部提供的接口,通过实现该接口,然后注入进系统(特定场景下使用)
  2.动态代理(使用所有场景)

二、Hook 技术实现的步骤

  Hook 技术实现的步骤也分为两步
  1.找到 hook 点(Java 层),该 hook 点必须满足以下的条件:需要 hook 的方法,所属的对象必须是静态的,因为我们是通过反射来获取对象的,我们获取的是系统的对象,所以不能够 new 一个新的对象,必须用系统创建的那个对象,所以只有静态的才能保证和系统的对象一致。
  2.将 hook 方法放到系统之外执行(放入我们自己的逻辑)

三、hook数据采集

因为该app需要兼容老版本,所以改版也不会影响老版本的数据采集。

提供接口:

1. 首页关键词的搜索。(搜索“袜子”,会出现袜子的所有分页商品,提供接口,并返回json串)

2. 店铺详情(包括店铺里面的所有商品简单信息)

3. 商品详情(提供接口,并返回json串)

4. 商品所有评论(提供接口并返回json串)

四、接口采集效率

正常情况下,一分钟多机器采集,最少可达到200次/分。硬件条件跟的上,那么数据ok。

五、hook思路

mou bao--app请求分为两部分:url+header,不用登陆,其中几个关键参数:sid、rn、appkey、api等,因为是hook,所以不用知道sign的具体算法,只需将参数的json对象,传入底层invoke方法(参数一定写的一致,保证是一次请求),部署后开放一个自己的接口进行访问。机器压力承受力决定采集效率。

六、实战

稳定,比web端稳定太多了(吃过很多亏),还有一小处session失效问题,没有解决,欢迎交流讨论。评论区回复我。谢谢。

--hook,某电商(bao)app签名实现数据采集,欢迎交流

标签:版本   ssi   电商   访问   消息   方法   改版   获取对象   sid   

原文地址:https://www.cnblogs.com/luruihua/p/11614915.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!