花了一天时间搞了下 公司需求的web 端网站 本以为很简单 没想到还是做了一些烦人的反爬

需求就是抓取某个商品的价格变动

不多说 开始

首先 你会发现 按F12 没有反应 是网站做了反调试
解决方法 :1. 选择浏览器右上方三个点 在选择开发者工具即可
2. 鼠标选中url栏,在按F12

好继续
你会发现 又是这种debugger 看下调用栈 找下触发的代码
找到了 发现是一个定时器 每2s启动一次 然后一直启动
这里有个问题 就是 如果你选中 never parse here 它会内存爆破
导致浏览器无限卡 根本没法调试
可以发现a是个数组 里面就有debugger关键词

解决办法:
打断点进入 函数 修改变量a的值为[] 或者 重置函数c为空函数

解决好内存爆破 反调试之后 先不急

我们先抓包看看

这里有两个请求 第一个是options请求
第二个是post请求

看到第二个请求 post 你会发现

卧槽 怎么没有from data 参数呢?
可以看到 右下角 有个json-rpc 哦哦 说明是通过json-rpc方式调用的
我们只需要 将上面那个json格式当作参数就行
javascript就是参数

既然参数找到了 就分析下参数

{"method": "serverless.function.runtime.invoke","params": "{\"functionTarget\":\"getDetail\",\"functionArgs\":{\"time\":1652757446041,\"sign\":\"AMeEAtilAv97A5fgAvWMAF\",\"GoodsId\":\"100513858\",\"platform\":\"ibox\",\"timeType\":\"list10Min\",\"v\":\"4\",\"clientInfo\":{\"PLATFORM\":\"h5\",\"OS\":\"windows\",\"APPID\":\"__UNI__BF29E64\",\"DEVICEID\":\"16526908775569593634\",\"CLIENT_SDK_VERSION\":\"1.0.21\",\"LOCALE\":\"zh-Hans\"}}}","spaceId": "04f58204-a7de-4dc2-8197-8d63c873a510","timestamp": 1652757446050,"token": "8790cb4d-ef7d-4865-99ed-d6d8b2b4a117"
}

很明显 这个timestamp 是时间戳 *1000 取整 这个token 和spaceId经过我调式发现 是个固定值 但有几分钟时间限制
这里我主要讲解 params参数和另一个请求头里面的参数加密

观察params 可以里面有个time ,sign time就是时间戳 sign就是我们需要破解的 其他的参数都是一些固定值和商品的id 不用管

接下来 继续调式
跟进调用栈 发现这里 有个getlist 点进去看看
这里有个sign 我们继续看
sign是通过把时间戳当参数 生成的 继续
可以发现这个this.m.b就是加密函数
我们进这个函数看看

这里又是把 时间戳 拼接上 一个固定字符串str_test当作参数给另一个函数经过一系列加密
既然已经知道参数是什么,这里就没有必要还原算法了,直接调用他这个b函数就行

把js代码保存到本地


用python调下函数 试试 看看有没有坑

发现是一样的。
那么sign的解密就完了

接下来试试模拟下请求

然后发现 什么鬼 我不是已经带了sign去请求吗 怎么还是说没有sign

。。。

接着分析下请求


这里请求头里面还有一个sign
接着继续吧。。。

直接搜索这个参数吧
然后发现这里生成了这个sign
然后看看这个W.sign是什么 首先分析参数

第一个参数n是一个对象 其实就是我们post请求里面的参数
第二个参数是个字符串
直接搜索这个参数的值 发现是个固定值
这里先不管 继续分析下W.sign函数

sign函数 里面发现 把第一个参数经过一系列转化成字符串赋值给n
然后再调用y函数,把n和t传进去再通过toString方法返回字符串

我们看下这个n

"method=serverless.function.runtime.invoke&params={"functionTarget":"getDetail","functionArgs":{"time":1652758341791,"sign":"AhI/AlaIAY2JAc+zAHVRAU","GoodsId":"100513782","platform":"ibox","timeType":"list10Min","v":"4","clientInfo":{"PLATFORM":"h5","OS":"windows","APPID":"__UNI__BF29E64","DEVICEID":"16526908775569593634","CLIENT_SDK_VERSION":"1.0.21","LOCALE":"zh-Hans"}}}&spaceId=04f58204-a7de-4dc2-8197-8d63c873a510&timestamp=1652759013657&token=8790cb4d-ef7d-4865-99ed-d6d8b2b4a117"

其实就是把这个对象里面通过&符号拼接成字符串
那看下这个t参数
还是之前那个固定字符串 没变

接下来看下 y这个函数


一进来 吓一跳 这是什么?怎么还new了下?萌新到这里 应该已经蒙了 这tm啥啊
不急 这里有个关键字 HMAC

HMAC是个加密算法
不妨猜测下 使用的HMAC加密 key就是那个固定字符串 观察发现它的长度是32位那么很有可能是md5
我们用python模拟下

import hashlib
import hmackey = 'HPa3a69OmRrLM7E8nFpUqw=='.encode()
text = 'method=serverless.function.runtime.invoke&params={"functionTarget":"getDetail","functionArgs":{"time":1652758341791,"sign":"AhI/AlaIAY2JAc+zAHVRAU","GoodsId":"100513782","platform":"ibox","timeType":"list10Min","v":"4","clientInfo":{"PLATFORM":"h5","OS":"windows","APPID":"__UNI__BF29E64","DEVICEID":"16526908775569593634","CLIENT_SDK_VERSION":"1.0.21","LOCALE":"zh-Hans"}}}&spaceId=04f58204-a7de-4dc2-8197-8d63c873a510&timestamp=1652759013657&token=8790cb4d-ef7d-4865-99ed-d6d8b2b4a117'.encode()
mac = hmac.new(key, text, hashlib.md5)
mac.digest()
s=mac.hexdigest()
print(s)



然后发现 果然就是这个值
完事

总结:此网站还是有一点点难度,需要点小技巧
,如果不熟悉HMAC加密的话 那就会绕进那个算法里面,那将是非常痛苦的。。。

某数字藏品监控网站HMAC相关推荐

  1. 数字藏品交易平台开发 数字藏品交易网站开发

    "数字藏品是运用电子信息技术促进文化艺术,尤其是传统式文化创意产业概率界限的移位,是推动文化创意产业使用价值和价值'活起來'的媒介."12月21日,河北省博物院副院长赵志良在&qu ...

  2. 区块链实战:发行自己的第一款NFT(Non-Fungible Token)数字藏品

    注意:该项目仅供学习区块链知识,不作为任何投资建议.市场有风险,投资需谨慎. 传送门:区块链入门:在本地网络开发自己的加密数字货币(Token)-傻瓜币(FoolCoin) 本文项目代码: GitHu ...

  3. IBOX NFT 数字藏品价格 监控 工具 科技

    IBOX NFT 数字藏品价格监控工具 科技 -7月25号 由于原来的pc版本的科技使用的web端口,迫于ibox关闭的web端下单接口 所有不得已又开发了一个android的科技自用 锁单.监控.公 ...

  4. 经营数字藏品网站,需要哪些资质?

    时下数字藏品已经成为热门话题,多家背景强大的企业推出了自己的数字藏品平台,例如鲸探.幻核.艺市界.百度超级链.网易星球等,同时,众多玩家也进场采购数字藏品,但关于数字藏品的这6个问题,玩家需要有足够的 ...

  5. 你知道吗?炒鞋的那帮人,现在去炒数字藏品了

    「炒鞋.炒手办潮玩早没那么火热了,现在圈子里都是炒数字藏品了.」球鞋玩家老刘介绍着. 在 2019 年 9 月,Supreme 19 FW 的开季赠品伞兵玩具在二级市场上被炒至 2000 多元的消息刷 ...

  6. 数字藏品开发平台-按需定制+提供源码

    如果说元宇宙是未来,那么数字藏品就是开启未来世界必不可少的一张门票,是连接现实世界和虚拟世界的重要载体.当下,数字藏品表现出巨大的的市场潜力,再加上各类营销玩法的助推,数字藏品为品牌们创造了可观的市场 ...

  7. 数字时代的“文艺复兴”?起底数字藏品,让人欢喜让人愁

    试问,当下国内持续火爆的产品是什么?常年混迹于互联网的时代弄潮儿毫无疑问会给出答案--非"数字藏品"莫属.每小时都有数起关于数字藏品的资讯不断刷新,各家大厂.私企.名人,甚至央企都 ...

  8. 数字网络监控系统解决方案1

    真正数字网络监控系统解决方案(全动态IP,局域网或广域网)   Post By:2004-9-11 12:05:00 数字网络监控系统解决方案 一.XM3216.NET系统特点近年来,网络信息业取得了 ...

  9. 数字藏品系统开发,APP小程序成品源码搭建开发

    项目开发最重要的是追求质量,通过测试.在系统开发领域,很多项目有量无质,忽悠一些不知情的企业.NFT发展目前相当有名.我们可以做些什么来提高NFT发展的质量? 首先,找一家专业的NFT开发公司 作为一 ...

最新文章

  1. java中路径中参数化_Azure数据工厂:参数化文件夹和文件路径
  2. 台式电脑计算机硬盘清理,台式电脑重装系统win7清理磁盘碎片的方法
  3. spring boot示例_Spring Boot完成示例
  4. 大数据自学——Spark
  5. xp系统服务器dns怎么设置在哪里设置,xp系统DNS怎么设置 DNS设置步骤
  6. 菜鸟新手们得福音纯css菜单导航
  7. php db2 页面乱码_DB2代码页设置乱码的处理方法
  8. python: os.walk() 相关操作
  9. Ubuntu18.04误删分区表,无法挂载U盘解决
  10. python3d绘图代码_python机器学习之3D Matplotlib绘图
  11. Installation of Requests
  12. 二手房房价影响因素分析
  13. CF140C.New Year Snowmen(优先队列+map)
  14. 前端程序员常用办公工具(持续更新)
  15. go牛刀小试:go的打点器ticker,可停止
  16. 解决IIS 6.0的200KB与下载4MB的限制
  17. 关于jupyter的故障重启(学习笔记)
  18. vs开发工具必备插件
  19. React Native学习-第一篇
  20. 帝国cms html5 编辑器,帝国CMS修改默认编辑器为百度编辑器UEditor的方法

热门文章

  1. 笔记本电脑没有声音可能的问题之一Windows Audio 登录账户
  2. 10张令人喷饭的程序员漫画
  3. “装箱”和“拆箱”操作(有详细的代码案例和说明);
  4. 书中自有黄金屋?其实你这样读书真的没用!
  5. 5k还要玩游戏?那就让他和游戏过吧!
  6. leetcode1049. 最后一块石头的重量 II
  7. OpenStack Mistral Workflow
  8. python项目简介_项目简介
  9. Unity脚本(2) --- 脚本生命周期以及脚本的控制台调试
  10. 速度超快,免驱动,不蓝屏的TL-XDS560V2仿真器