文章目录

  • 前言
  • 一、列表页分析
    • 1.请求分析
    • 2.请求参数分析
      • 2.1 cookie参数
      • 2.2 请求参数
    • 3. 请求参数破解
      • 3.1 下断点调试
      • 3.2 加密参数解析
      • 3.3 解密参数mw-sign
    • 4. 获取数据
  • 二、详情页分析
    • 1.请求分析
    • 2.请求参数分析
    • 3. 参数mw-sign解密
    • 4. 获取数据
  • 三、cookie的获取
  • 总结

前言

目标网址:https://list.mogu.com/search/goods?q=%E5%B8%BD%E5%AD%90&ptp=31.nXjSr.0.0.Lu7TXQ23&platform=pc&page=1&ppath={}

注:本次内容不详细说明,只表达破解方法和加密位置,具体流程可自己分析,这样才会有进步嘛~


一、列表页分析

1.请求分析

2.请求参数分析

2.1 cookie参数

这两个cookie必须携带才能请求到数据,怎么获取后面会说

2.2 请求参数

  1. data里的参数是一些搜索的参数,没有加密,内容应该都看到懂吧
  2. mw-ckey、mw-appkey、mw-ttid、mw-uuid、mw-h5-os、callback 这几个是固定参数
  3. mw-t、_ 13位的时间戳
  4. mw-sign主要加密参数,加密类型是MD5,主要是加密数据的获取,比较多

3. 请求参数破解

3.1 下断点调试

主要加密参数是mw-sign,直接搜索好吧,


出来一个,找到加密位置,下断点调试,重新请求网页,这里注意,第一下断点的数据不是列表页,需要捕获第二次断点

3.2 加密参数解析

这里把this.buildQuery(e)数据抠出来看看,可知道是有多组数据用&符拼接的。

"100028&pc-search-wall&unknown&1605079173471&NMMain@mgj_pc_1.0&8348efe7-c649-4aa6-a2fe-693f612b1808&mwp.pagani.search&19&4223703e712b06a1a2abdf3a33a14b3a&fc7a01e7b579b7fb4324ace80c7a2c5a_1605001442502"

这里还有个z()方法是我们未知的,只要断点调试下就知道他是一个MD5加密了,这里就不扣了,知道方法就好,有兴趣的可以自己扣一下。

3.3 解密参数mw-sign

下面两图可以看出this.buildQuery(e)的组成部分,上面几个参数已经显示,下面的几个参数我们自己扣

参数解析:

 1. t.version = "19"2. t.api = "mwp.pagani.search"3. z(t.getDataString()) = Md5(‘{"page":"1","pageSize":24,"sort":"pop","ratio":"3:4","cKey":"pc-search-wall","q":"%E5%B8%BD%E5%AD%90","ptp":"31.nXjSr.0.0.Lu7TXQ23","platform":"pc","ppath":"{}"}’ )4. O.instance().mState.getToken() = _mwp_h5_token(cookie里的值) = "fc7a01e7b579b7fb4324ace80c7a2c5a_1605001442502"

最终组成参数:

"100028&pc-search-wall&unknown&1605079604437&NMMain@mgj_pc_1.0&8348efe7-c649-4aa6-a2fe-693f612b1808&mwp.pagani.search&19&4223703e712b06a1a2abdf3a33a14b3a&fc7a01e7b579b7fb4324ace80c7a2c5a_1605001442502"

4. 获取数据


二、详情页分析

1.请求分析

随便点个商品进去 https://shop.mogu.com/detail/1mut1ms(地址后缀被我去了),方法跟列表页的差不多

2.请求参数分析

主要注意下 iid和mw-sign这俩个参数,cookie跟其他参数方式跟列表页差不多,iid是从列表页获取的商品id,列表页的商品id字段是tradeItemId,mw-sign就是所有参数加一个cookie组成的MD5加密。

3. 参数mw-sign解密

看下详情页mw-sign参数未加密前的组成

"100028&unknown&1605082036373&NMMain@mgj_pc_1.0&8348efe7-c649-4aa6-a2fe-693f612b1808&mwp.darwin.multiget&3&b0113484d22f2dbbfb073a607f269942&fc7a01e7b579b7fb4324ace80c7a2c5a_1605001442502"

主要变得是以下几个参数:

 1. t.version  = "1"2. t.api= "http.detail.api"3. z(t.getDataString()) = Md5(‘{"iid":"1mut1ms","activityId":"","fastbuyId":"","template":"1-1-detail_normal-1.0.0"}’)4. O.instance().mState.getToken() = _mwp_h5_token(cookie里的值) = "fc7a01e7b579b7fb4324ace80c7a2c5a_1605001442502"

4. 获取数据

三、cookie的获取

import requests,redef get_cookies():headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36','referer': 'https://shop.mogu.com/','accept-language': 'zh-CN,zh;q=0.9',}res = requests.get('https://api.mogu.com/h5/mwp.darwin.multiget/3/?data=%7B%22pids%22%3A%22132244%2C138852%2C138851%22%7D&mw-appkey=100028&mw-ttid=NMMain%40mgj_pc_1.0&mw-t=1605002244481&mw-uuid=8348efe7-c649-4aa6-a2fe-693f612b1808&mw-h5-os=unknown&mw-sign=9616c3228f4d36a57ba96b13527427b1&callback=mwpCb2&_=1605002509140', headers=headers)txt = res.textcookies = dict()cookies['_mwp_h5_token_enc'] = re.compile('"encToken":"(.*?)",').findall(txt)[0]cookies['_mwp_h5_token'] = re.compile('"token":"(.*?)",').findall(txt)[0]return cookiesprint(get_cookies())

总结

博主写作不易,大家都是打工人,就别为难自己人,来个三连,点赞加关注也行

【2020-11-11】JS逆向之蘑菇街商品数据接口解密相关推荐

  1. 淘宝关键词搜索商品接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集商品数据接口)接口代码对接教程

    淘宝关键词搜索商品接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集商品数据接口)接口代码对接教程如下: 1.公共参数 名称 类型 必须 描述(接口教程wx199701080 ...

  2. 淘宝关键词搜索采集商品价格销量接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集精准商品数据接口)接口代码对接流程

    淘宝关键词搜索采集商品价格销量接口分析商品价格走势(商品列表接口,商品销量接口,商品价格接口,分类ID采集精准商品数据接口)接口代码对接流程如下: 1.公共参数 名称 类型 必须 描述(接口代码教程w ...

  3. 淘特商品详情API接口(商品列表接口,商品销量接口,商品价格接口,商品价格排序接口,商品销量排序接口,专享价接口,已售商品数据接口,APP商品详情接口)

    淘特商品详情API接口(商品列表接口,商品销量接口,商品价格接口,商品价格排序接口,商品销量排序接口,专享价接口,已售商品数据接口,APP商品详情接口)代码对接如下: 1.公共参数 名称 类型 必须 ...

  4. 淘宝关键词搜索分析商品价格走势(商品列表接口,销量接口,价格接口,分类ID精准商品数据接口)接口代码对接

    淘宝 OpenAPI(Open application programming interface)是一套 REST 方式的开放应用程序编程接口.淘宝网根据自己提供的电子商务基础服务,抽象并做成一系列 ...

  5. 01、爬虫js逆向之-七麦数据

    目标网址:aHR0cHM6Ly93d3cucWltYWkuY24vcmFuay9pbmRleC9icmFuZC9hbGwvZGV2aWNlL2lwaG9uZS9jb3VudHJ5L2NuL2dlbnJ ...

  6. js逆向系列:企名片,获取js逆向后的真实数据!

    一.进入企名片创业项目 我们需要爬取如下数据 首先,对该网页进行抓包,发现这些数据是通过post请求获得的. 这是网站给我们返回的数据,为什么和网页上显示的不一样呢?分析后得出,这是经过js加密后的数 ...

  7. vue获取商品数据接口_基于 request cache 请求缓存技术优化批量商品数据查询接口...

    Hystrix command 执行时 8 大步骤第三步,就是检查 Request cache 是否有缓存. 首先,有一个概念,叫做 Request Context 请求上下文,一般来说,在一个 we ...

  8. 拼多多关键词搜索采集商品数据接口,拼多多分类ID搜索采集商品销量接口,拼多多上货接口,拼多多商品列表API接口

    可以通过关键词搜索接口采集商品列表详情页各项数据或者是用分类ID搜索采集商品列表数据,包含商品标题,skuid.价格.优惠价,收藏数.销量.SKU图.标题.详情页图片等页面上有的数据均可以拿到,大家都 ...

  9. 拼多多关键词搜索采集商品数据接口,拼多多分类ID搜索采集商品销量接口,拼多多上货接口

    可以通过关键词搜索接口采集商品列表详情页各项数据,包含商品标题,skuid.价格.优惠价,收藏数.月销售量.SKU图.标题.详情页图片等页面上有的数据均可以拿到,大家都知道,拼多多的反爬虫机制十分严, ...

最新文章

  1. HTTPS网络加密双向验证-使用AFNetworking封装
  2. linux mysql 清空缓存吗_linux 缓存手动清除
  3. 静态路由_在Android中模拟静态方法:让我们总结一下
  4. 前端求职-htmlcss
  5. mac电脑开机出现客人用户,没有输入密码框,其他键都点不动,重启也不好使
  6. 《Python 数据分析》笔记——pandas
  7. 使用ASP.NET Core 3.x 构建 RESTful API - 2. 什么是RESTful API
  8. mysql动态代理_超全MyBatis动态代理详解(绝对干货)
  9. C++之指针探究(十九):typedef和const指针
  10. javascript中实现动画是settimeout(递归)还是用setinterval好?
  11. Atitit v3项目快速推进的推荐技术标准化 规范 流程
  12. java 发送邮件(亲测有效)
  13. 二项式展开 matlab,二项式造句_造句大全
  14. 基于团队的持续优化之道
  15. Python使用struct处理二进制(pack和unpack用法)
  16. 关于微信小程序的基本介绍以及下载注意
  17. 原生64位卸载工具Revo Uninstaller Pro V2.5.7
  18. 阿里云盘PC端内测版可以下载安装了 还送你800G扩容福利码!
  19. Android11添加AIDL系统服务及HIDL接口服务
  20. 7-2 计算Fibonacci数列的前N(N<=20)项 (10 分)

热门文章

  1. 聚合资金托管+支付 联动优势推出房产行业线上产品“海金居”
  2. 腾讯T3大牛亲自讲解!学java是什么意思
  3. 计算机文档打不开是什么原因,电脑文件打不开怎么回事
  4. 锐捷睿易:配置SSH登录
  5. 商标注册用免费商用字体整体
  6. linux中 在文件中写入一句话怎么写_Linux一句话命令
  7. Apollo代码学习(二)—车辆运动学模型
  8. 柳传志:联想发展过程中的三大突破
  9. 手把手教你玩转android应用Microsoft Remote Desktop
  10. OpenCV绘制点线