当前位置: 首页 > news >正文

device_fingerprint、device_id、hmac生成

文章目录

  • 1. 写在前面
  • 2. 设备信息
  • 3. 数美指纹

【🏠作者主页】:吴秋霖
【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作!
【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关注《爬虫JS逆向实战》《深耕爬虫领域》
未来作者会持续更新所用到、学到、看到的经验与技术知识!包括但不限于:各类验证码突防、爬虫APP与JS逆向分析、RPA自动化、分布式爬虫、Python领域等相关文章

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

1. 写在前面

  好久没更新文章了,随笔记录一下。APP端目前更新之后的风控貌似丝毫不下于Web的强度,Web端的话目前作者没有测试验证过,但是貌似是有一个xsce-tk的参数。其他应该都是差不多的。APP端作者用自己的sid进行了测试,数据如下(仅供参考):

NoteDetail: 不Sleep的情况下连续请求 >= 1500(次) 强制对账号进行下线处理
CommentDetail: 比较稳定,好像测试了几个过W+的Comment期间不Sleep未出现异常

部分例如主页作品列表搜索测试就算是携带风控参一样对协议的行为有直接的管控!基本请求1~3次就会出现频繁账号异常

采集的话目前大部分接口都只需要签名参数shield。目前就算是个人使用的账号针对上面提到的接口一样只能请求几次,所以从风控对抗的研究角度来看某一些场景下是可以使用某版本游客的方案进行访问的。生成游客的sid是可以访问上述提到的一些接口信息

上面请求头参数中,大致可以分风控参签名参。其实大部分的场景API只需要用到签名参就能够验签通过。但是往往很多平台或者APP它们请求头多的能够达到几十个参数,其中或多或少都会有设备信息、指纹信息..等不为人知的埋点,用以甄别非正常用户的请求

在这里插入图片描述

2. 设备信息

首先为什么要生成设备信息,采集的场景中固定一个设备信息在持续的采集中,会出现风控异常。这个异常即对设备信息进行了检测,更新设备信息就会解除!这里除了自动到对应的接口生成hmac、device_id信息外,就是手动提取了hmac了,device_id的话抓包获取对应的就行。Android设备的话装一个MT管理器/data/data/com.xingin.xhs/shared prefs/s.xml路径下获取即可,如下所示:

在这里插入图片描述
在这里插入图片描述

IOS的提取方案是一样的,去到对应的文件拿就行。只是方式跟文件的路径有一些差异

这里我们需要借助filza去到根目录。之后按照这个路径private/var/mobile/containers/shared/appgroup/group.com.xingin.discover/library/preferences

然后打开group.com.xingin.discover.plist文件,如下所示:

在这里插入图片描述

除了上面提到的手动提取设备中的hmac信息外,我们还可以通过激活的方式来自动生成,did是一个uuid算法生成的,而hmac的话在/api/sns/v2/user/teenager/status接口中请求获取,实现大致如下所示:

import uuiddef get_hmac():did = str(uuid.uuid4()).lower()headers = {'xy-common-params': '', # 自行获取'xy-platform-info': '', # 自行获取'x-mini-mua': '','x-mini-sig': '','x-mini-gid': ''}response = requests.get(url, headers=headers)hmac = response.headers['Xy-Ter-Str']return hmac

在这里插入图片描述

上面headers中x-mini-*系列的参数mua是必须要的,然后另外两个非必需(不带就是设备异常),实际场景中的话这三个风控参最好都走动态是比较理想的,生成如下所示:

在这里插入图片描述

上面session的话是游客接口出来的,了解过web的应该很熟悉activate接口,然后请求参数的话跟授权接口部分参数一样!主要就是idfaidfv,如下所示:

在这里插入图片描述

上述提到的游客hmac生成都需要shield签名请求才会成功

3. 数美指纹

62位的device_fingerprint参数它在旧版本中在某些场景是需要解决的,头部参数重是动态的!一长串如下所示:

20250418213816b9547c11c3cd5b9d3d7ae81a378503de00b51469a59b18af

前面一看就知道是时间信息、中间则是device_id进行MD532位字符,在拼接00字符生成一个48位字符,可以发现末尾还有14位字符。这里则是shumei_sec_*_key_关键字符拼接上面第一次得到的MD5结果再次进行了一个MD5得到了新的一串32位字符。最后用之前48位取最后这次加数美字符生成的前14位得到完整的device_fingerprint参数结果,如下所示:

在这里插入图片描述

最后,我们通过自动生成device_idhmac并激活。然后生成device_fingerprint参数搭配shield动态签名以及动态x-mini系统的参数进行测试。来验证游客的sid是否可以正常请求一些接口,如下所示:

在这里插入图片描述

正常我们个人的sid信息请求主页信息基本都是会触发风控的,由此可见这个策略方案虽然可能在持续稳定的情况还需要更加深度的分析与研究,但是至少该方案是可以走通流程的

相关文章:

  • 2d深度预测
  • MQ基础篇
  • 深度学习3.1 线性回归
  • 前端基础之《Vue(6)—组件基础(2)》
  • 1.Linux基础指令
  • MATLAB 控制系统设计与仿真 - 37
  • Linux:命令行参数、环境变量
  • [经验总结]Linux双机双网卡Keepalived高可用配置及验证细节
  • 大数据赋能,全面提升‘企业服务平台’实际效能!
  • 浏览器的存储机制 - Storage
  • NO.97十六届蓝桥杯备战|数论板块-最大公约数和最小公倍数|欧几里得算法|秦九韶算法|小红的gcd(C++)
  • 爬虫学习——Scrapy
  • Java编程语言 1.打印数组元素 2.Student类 StudentTest类
  • 【go】什么是Go语言中的GC,作用是什么?调优,sync.Pool优化,逃逸分析演示
  • alertManager部署安装、告警规则配置详解及告警消息推送
  • 华为openEuler操作系统全解析:起源、特性与生态对比
  • 机器学习模型(2/4课时):损失函数
  • 深度学习中的卷积神经网络
  • 命令行工具kubectl
  • 密码学中的盐值是什么?
  • 沙龙 | 新书分享:中国电商崛起的制度密码
  • 全球南方声势卓然壮大的历史逻辑——写在万隆会议召开70周年之际
  • 收藏家尤伦斯辞世,曾是中国当代艺术的推手与收藏者
  • “不可见社会”:一周城市生活
  • 长沙岳麓警方通报“女子疑被性侵”:正在进一步侦办
  • 译者手记|如何量化家庭历史