签名机制是现在App和网站反采集常见的手段,我们先来看一下什么是签名机制。

我们以永辉生活微信小程序为例(我们曾做过一个采集永辉超市超级物种所有店铺商品的项目),当我们抓包分析时会发现其所有的HTTPS请求中都有一个sign参数(如下图所示)。


如果我们尝试修改其它参数,构造一个自己的请求,会发现无法得到有效的数据(如下图所示)。


APP服务端是如何知道我们篡改了这个请求呢?

实际上这个sign参数是一个校验值,它是根据HTTP请求中其它参数计算出来的,算法是App开发者自己定义的。App服务端接收到HTTP请求后会根据特定算法计算出该请求的校验值,如果与提交的校验值sign参数不一致,那么就认为这是一个无效的请求。

对于我们来说这个校验算法是未知的,所以我们无法构造出有效的HTTP请求。这样就算我们抓包分析出了数据接口,也是“无能为力”,这样就达到的反采集的目的。

不光是App,一些Web网站也在使用签名机制来反采集,比如京东到家(https://daojia.jd.com/html/index.html,我们曾采集过京东到家全国店铺的数据)这个网站,所有的Ajax请求都有一个signKey参数,如下图所示。

再比如京东掌柜宝(http://zgb.m.jd.com/category.html ,我们曾采集过京东掌柜宝全品类的数据),所有的Ajax请求都有一个sign参数,如下图所示。

那么如何采集这类有签名机制的App或者网站呢?

鲲之鹏的技术人员结合自己的项目经历,总结出如下两个思路:

  1. 找到校验算法。

    一旦我们知道了校验算法,就能根据需要修改请求中的各项参数(例如 关键词、经纬度、翻页),构造出有效的请求。只要App或者网站没有改版(校验算法没变),就能一直对其进行采集。

    对于安卓APP,我们可以反编译APK文件,通过阅读Java源码找到算法。对于网站来说,我们可以通过阅读其JS代码掌握算法。

    不过难度往往都会很大,因为APK通常会将算法隐藏在.so二进制库内,网站也将JS进行混淆处理。所以,这个思路实现成本往往较高。

  2. 模拟操作App或网站。

    让其自动发出有效的请求,然后通过自动化抓包模块(比如 mitmproxy)拦截HTTP(S)请求,再从应答数据中解析出感兴趣的数据。

    有的校验算法是和参数没有关系的,只是校验值有有效期。一个典型的例子就是蔚蓝地图这个App(我们曾采集过蔚蓝地图的企业监管记录文书),它的每个数据请求中都有一个叫做miyao的参数(如下图所示),其有效期约为10分钟。
    也就是说我们拿到一个miyao值可以在10分钟之内构造出有效的请求(其它参数都可以修改),10分钟之后就需要再获取一个新的校验值。对于这种情况我们可以通过模拟操作App让其不断产生新的miyao值,再通过自动化抓包模块获取并交由采集程序使用。

    对于模拟App操作,我们可以使用AndroidViewClient或者直接调用adb命令。对于模拟网站(浏览器)操作,我们可以使用Selenium、Slimerjs或者Chrome DevTools Protocol。这些技术在我们之前的文章里都曾做过介绍,这里不再赘述。

    这个思路实现成本相对较低。

如何采集有签名机制的App或网站的数据相关推荐

  1. iOS app签名机制

    前言 在移动开发中,iOS系统下的app和andorid系统下的app一个很大的区别是:android系统下,app的安装很方便,可以从多个应用商店下载(小米应用商店.华为应用商店),也可以直接下载a ...

  2. 【Android安全】Android app开发者证书和代码签名机制

    参考链接: 安卓证书相关验证机制: https://duanqz.github.io/2017-09-01-Android-Digital-Signature (部分内容不准确) 关于META-INF ...

  3. Android签名机制介绍:生成keystore.签名.查看签名信息等方法

    为什么80%的码农都做不了架构师?>>>    Android独有的安全机制,除了权限机制外,另外一个就是签名机制了.签名机制主要用在以下两个主要场合起到其作用:升级App和权限检查 ...

  4. Andriod Studio两种签名机制V1和V2的区别

    Android Studio 2.2以上版本打包apk的时候,我们会发现多了个签名版本(v1.v2)选择,如下图红色方框所示 问题描述(v1和v2) Android 7.0中引入了APK Signat ...

  5. ios keychain 不被清理_iOS签名机制和说明文件【ios企业签名吧】

    IOS签名机制和配置文件.iOS签名机制的作用:保证安装在手机上的应用程序经苹果公式验证和许可.无论是真机调试还是发布App,开发人员都必须经过一些复杂的步骤.以下广州贝壳技术将详细说明. 贝壳科技( ...

  6. Android签名机制:生成keystore、签名、查看签名信息

    2019独角兽企业重金招聘Python工程师标准>>> Android独有的安全机制,除了权限机制外,另外一个就是签名机制了.签名机制主要用在以下两个主要场合起到其作用:升级App和 ...

  7. iOS App 签名的原理 App 重签名(三)

    目录 iOS App 重签名 - 准备工作 iOS App 重签名 - 手动重签名 iOS App 重签名 - 使用脚本重签名 iOS App 重签名 - 使用 XCode 重签名 注意 iOS Ap ...

  8. Android 签名机制原理解析和V1 、V2签名区别

    一.什么是签名? 是确保消息来源的真实性 是确保消息不会被第三方篡改 1.基本信息基础必备 1.1 消息摘要 消息摘要,又称数字摘要 或 数字指纹.  简单来说,消息摘要就是在消息数据上,执行一个单向 ...

  9. 『iOS开发』iOS 签名机制

    iOS 签名机制 对称加密(Symmetric Cryptography) 对称加密指的是发送端和接收端使用同一种算法对 明文(Plain Text) 进行 加密(Encrypt) 或对 密文(Cip ...

最新文章

  1. linux系统photoshop安装教程,在ubuntu中安装photoshop cs6
  2. Android中Bitmap和Drawable
  3. gflags调试访问越界
  4. 学习 SQL 语句 - Select(3): 条件查询与模糊查询
  5. 获取inout框中未改变值的数据_数据分析10——数据分析的基本过程(02)
  6. 20155307 实验四 Android程序设计
  7. ajax常见的面试题
  8. python迷宫小游戏代码_课内资源 - 基于python实现的迷宫游戏
  9. java设计模型 解析工厂模式、proxy-agent模式、templete模式
  10. eclipse data source explorer 编辑触发器
  11. filmimpact安装教程,PR插件『FilmImpact.net』下载与安装教程
  12. a标签去掉下划线_怎么去掉html a超链接下划线
  13. 认识计算机拓扑结构图,认识计算机网络拓扑结构
  14. 在CentOS 7 安装Calamari
  15. tar解压时提示Cannot open: File exists
  16. python项目:打印输出平行四边形和三角形(多种样式)
  17. 跨专业考研应该怎么做?
  18. 【车辆计数】基于matlab GUI背景差分法道路行驶多车辆检测【含Matlab源码 1911期】
  19. 进阶光照与材质之光照和反射模型
  20. 【Bug】HTC Vive Pro定位发生偏移或倾斜解决办法

热门文章

  1. 中国移动网络支付漏洞
  2. Tensorflow object detection API应用大致流程
  3. 【GIS | celestrak】高分卫星系列TLE
  4. IPv6地址格式和分类详解
  5. 利用函数“逆序字符串”的三种解法
  6. 【vue | 路由】路由的基本概念与原理
  7. 高级软件工程作业2-1
  8. 什么样的云计算服务,才能为企业“出海”保驾护航?
  9. AWS STS - 以正确的方式设计IAM用户密钥
  10. 一个月备考通过PMP