【接口流程分析】唯品会WEB端

news2024/11/28 4:48:11

唯品会WEB端

来看看唯品会是怎么回事,

地址:aHR0cHM6Ly93d3cudmlwLmNvbS8=
https://github.com/Guapisansan/gpss_learn_reverse 代码在这里,会持续更新逆向案例

免责声明: 此文档,以及脚本,仅用来对技术的学习与探讨,如有冒犯,请联系作者电话,微信13933566015进行删除

目的

请添加图片描述

这里点击商品分类,点击女装,男装,内衣, 随便点一个连衣裙

请添加图片描述

弹出新网面,10000件商品 84页。

流程分析

刷新一下弹出的列表页。来搜索一下 “2023夏季新款法式优雅” 这个关键字

请添加图片描述

这里直接可以搜索到一个接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S7IXU6YN-1689586175058)(doc_image/image-20230717143831053.png)]

vips-mobile/rest/shopping/pc/product/module/list/v2 这个接口返回的信息,我们通过模拟查看参数,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eExaf8Q6-1689586175058)(doc_image/image-20230717144102538.png)]

这里通过测试,删减参数的方式去除不必要参数,

callback: 貌似是回调函数,不同接口因该不一样 (可以不动)

app_name: 应用名称 (可以不动)

app_version: 应用版本 (可以不动)

warehouse: 仓库 (可以不动)

fdc_area_id: 区域ID (可以不动)

api_key: 密文,需要解决。

productIDS: 产品id 列表 需要解决。

scene: 规则模式 (可以不动)

standby_id: 看不懂,非加密字符,暂不解决

所以经过分析,目前需要解决的只有api key 和 productid 列表

getMerchandiseDroplets1:api_key

先全局搜索api_key, 看看效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TToRSR96-1689586175059)(doc_image/image-20230717144920162.png)]

这里看似是写死的字符串,好几个JS文件都是 写死的api_key,有可能是定期更换,目前看来是固定的参数,所以就先不管了,需要定期观察。

getMerchandiseDroplets1:productids

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qd0SAEX0-1689586175059)(doc_image/image-20230717145252470.png)]

这些id猜测是对应不同的产品,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JFdcXjQu-1689586175061)(doc_image/image-20230717145345664.png)]

一共有50个产品

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YDdxiNz2-1689586175062)(doc_image/image-20230717145428334.png)]

而在接口列表里也印证了这一点,所以找到哪里提供的这些产品id。随便搜索一个,6920371236954495889

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tmUxBRRn-1689586175063)(doc_image/image-20230717150009588.png)]

还是同样的vips-mobile/rest/shopping/pc/product/module/list/v2接口,需要注意的是这次call_back的参数变成了 getProductIdsListRank 。

看一下相应

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BQMuS6vA-1689586175063)(doc_image/image-20230717150147006.png)]

里面有120个pid 前五十个正好和上面的可以对应起来。

往下滑动页面看看,能不能触发后面的产品id。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZUYw4tjT-1689586175064)(doc_image/image-20230717150606602.png)]

所以这个触发流程是, 浏览器刷新页面,先产生getProductIdsListRank 列表有120个产品id,触发第一个getMerchandiseDroplets1 取50个产品id,

再通过下滑页面触发后面的50个,20个。继续看getProductIdsListRank 接口的参数

getProductIdsListRank:接口分析

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mrpTZpjv-1689586175064)(doc_image/image-20230717152507906.png)]

这里通过测试,删减参数的方式去除不必要参数,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lhioSMj-1689586175065)(doc_image/image-20230717153455796.png)]

和上面相同的参数就不再介绍了,

abtestId:看不懂,暂时不动

mtmsRuleId:什么规则id,看不懂暂时不懂

filterStock: 筛选库存???因该用不到

sort:排序用不到

pageOffset:分页

salePlatform:销售平台用不到

清空一下请求 在重新刷新:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-REZqDnqv-1689586175065)(doc_image/image-20230717154612919.png)]

发现参数只有pageoffset变了,所以其他参数我们不动就可以了。一页120个产品正好对应起来了。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5cprev6D-1689586175065)(doc_image/image-20230717154802600.png)]

这里可以知道mtmsRuleId因该就是产品类型,产品类型的id,我们可以搜索一下看看能不能找到,在这个页面没有搜到,

猜测:在主页点进去的大概率在主页请求的,去主页再测试一下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7YpCjYf-1689586175066)(doc_image/image-20230717155043250.png)]

把鼠标放在女装这里,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtBArEBe-1689586175066)(doc_image/image-20230717155133982.png)]

触发了接口,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xRnSBPlf-1689586175066)(doc_image/image-20230717155230418.png)]

可以看出来这个getSubCategory30074返回的都是这些类别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cTk2fxj8-1689586175066)(doc_image/image-20230717155326938.png)]

把鼠标移动下面的类型对应也会出现标签对应的类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CFosYFwT-1689586175068)(doc_image/image-20230717155537003.png)]

这里往下一滑可以看到确实如此。

这里就那第一个为例子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CuKvZfpp-1689586175068)(doc_image/image-20230717155751352.png)]

这里还是老参数看起来平平无奇,只有 categoryid 看起来有必要:

请添加图片描述

这里可以拿到全品类的id

总结

1.先获取全类别接口

2.通过类别接口可以得到,分类的详细 categoryId

3.通过详细 categoryId 进行请求 getProductIdsListRank 来获取对应类别的 productId

4.通过 productIds 获取对应产品的详细信息。

唯品会,整体不复杂感觉没有难解决的难点,就是流程稍微长了一点,一步跟着一步。

进行代码实现后展示成果。

这里拿了10页连衣裙的数据,没任何问题,

注意不要频繁访问他人网站

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763991.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

七年老程序员的五六月总结:十一件有意义的事

你好,我是拭心,一名工作七年的安卓开发。 每两个月我会做一次总结,记下这段时间里有意义的事和值得反复看的内容,为的是留一些回忆、评估自己的行为、沉淀有价值的信息。 最近两周的我一直处于“战斗“状态,同时做好…

未来驾驶新标配;CarLuncher车载开发塑造智能娱乐导航系统

车载开发在新能源汽车的快速市场占有率增长背景下具有广阔的前景。随着环境保护意识的增强和政府对清洁能源的支持,新能源汽车(如电动汽车)在全球范围内呈现出快速增长的趋势。这种趋势为车载开发提供了许多机会和潜在市场。 新能源汽车的普…

一文搞定 Postman 接口自动化测试(全网最全版)

0 前言 本文适合已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求等基本操作。 工作环境与版本: Window 7(64位)Postman (Chrome App v5.5.3) P.S. 不同…

数据结构day3(2023.7.17)

一、Xmind整理: 二、课上练习: 练习1:时间复杂度 时间复杂度:只保留最高阶f(n)3*n^2n^2100nT(n)O(3*n^3n^2100n)O(3*n^3)O(n^3)1>O(1):常数阶int ta; 1ab; 1at; 1f(n)3T(n)O(3)O(3*n^0)O(n^0)O(1)2>O(n): 线性阶for…

selenium:鼠标模拟操作ActionChains

ActionChains 1.导入ActionChains包 from selenium.webdriver import ActionChains 2. 执行原理 调用ActionChains的方法时,不会立即执行,而是将所有的操作,按顺序存放在一个队列里,当你调用perform()方法时,队列中的事件…

EMC学习笔记(十五)射频PCB的EMC设计(二)

射频PCB的EMC设计(二) 1.滤波1.1 电源和控制线的滤波1.2 频率合成器数据线、时钟线、使能线的滤波 2.接地2.1 接地分类2.2 大面积接地2.3 分组就近接地2.4 射频器件接地2.5 接地时应该注意的问题2.6 接地平面的分布 1.滤波 1.1 电源和控制线的滤波 随着…

项目经理如何处理项目依赖性?

项目不是凭空产生的,项目管理中的依赖性涉及管理和安排项目任务,同时牢记其顺序和要求。如果开始任务B需要先完成任务A,那么可以说任务B依赖于任务A。 这现在听起来可能很简单,但在具有多个相互依赖的任务的复杂项目中&#xff0…

duilib绝对定位与相对定位

文章目录 前言1、绝对位置(floattrue)2、窗口3、布局及控件4、相对位置(floatfalse)5、窗口6、布局与控件7、嵌套在布局与控件之中的布局与控件 前言 duilib中窗口,布局,控件等在屏幕上的显示位置都是按照…

Selenium自动化测试-设置元素等待

selenium中有三种时间等待: 强制等待:sleep隐式等待:implicitly_wait显示等待:WebDriverWait 1.sleep 让程序暂停运行一定时间,等待时间到达后继续运行。 使用sleep,需先导入time模块,impor…

一.《某三国》人物属性及其相关属性

人物属性 1.找一个可以操控变化的属性来找 比如血量.坐标或者五铢(绑定金币),这里我们用五铢找 五铢只要打一个怪就会加一点 2.我们直接搜变化即可搜到 五铢地址0AD64EAC 3.我们CE给地址下访问 4.这里我们最后找第一条访问 因为他是被改变的 或者你CE给地址下写入 5.然后我…

BUFG/BUFGCE/BUFH/BUFHCE

对BUFG/BUFGCE/BUFH/BUFHCE简单了解。 下图为 7 系列 FPGA 时钟架构图: BUFG 全局时钟缓冲器。它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。BUFG连接的是芯片中的专用时钟资源,能减少信号…

【golang中的切片的相关知识点】[ ] slice

golang-切片 切片的定义和初始化切片的内存分析切片的操作获取长度和容量追加元素复制切片 切片的遍历切片的特性总结 Golang中的切片是一种灵活且强大的数据结构,它可以动态地增长和缩小。切片是基于数组的抽象,它提供了更方便的操作和更灵活的内存管理…

系列五、RocketMQ集群搭建(双主双从)

一、概览 二、集群特点 2.1、NameServer NameServer是一个几乎无状态节点,可集群部署,节点之间无任何信息同步。 2.2、Broker Broker部署相对复杂,Broker分为Master与Slave,一个Master可以对应多个Slave,但是一个Sla…

数字孪生和人工智能异同?

数字孪生和人工智能是两个近年来备受关注的前沿技术,在不同领域发挥着重要作用。虽然两者都涉及数据处理和模拟,但其本质和应用有着显著的区别。本文将介绍数字孪生和人工智能之间的联系和区别,以帮助读者更好地理解它们在不同场景下的作用。…

虚拟机(Ubuntu1804)相机与激光雷达联合标定实现过程记录

在智能小车录制的点云数据在rviz打开一定要修改Fixed Frame为laser_link,这样才能看到点云,注意此时用的是雷神激光雷达,话题名是lslidar_,可采用rostopic list查看具体名称 1、新建一个终端打开roscore roscore2、在文件夹libratia中新建一…

Jmeter常用功能-参数化介绍

JMeter也有像LR中的参数化,本篇就来介绍下JMeter的参数化如何去实现。 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统。 这个时…

idea2023.3安装及配置

idea2023.3安装及配置 一.安装idea 1.卸载旧版本idea 2.下载idea旗舰版 Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBrains 旗舰版是收费的需要破解,社区版是免费的不需要破解,开发人员建议旗舰版 3.安装idea 修改安装目…

[LINUX]之文本匹配多行

在linux中创建文本如下: (1)显示test.txt文件里匹配test3字符串那行以及上下1行 cat test.txt |grep -C 1 test3 (2)显示test.txt文件里匹配test3字符串那行以及下面2行 cat test.txt |grep -A 2 test3 (3&…

Qt6 Qt Quick UI原型学习QML第四篇

文章目录 布局项目【对齐】QML语句QML语法解释 布局项目【对齐】 QML提供了一种灵活的方式来使用锚来布局项目。锚定的概念是项目的基础,并且可用于所有视觉QML元素。锚的作用就像一个契约,比竞争的几何变化更强。锚是相对性的表达;你总是需…

三季度上市,比亚迪海豹DM-i内饰官图发布,延续海洋风格

据报道,比亚迪海洋网旗下全新车型海豹 DM-i今日发布了内饰官方图片。新车内部采用了独特的“海洋美学”设计理念,并体现了海洋网最新一代内饰风格。消息称,这款车型将于第三季度上市,定位为中大型混合动力轿车。 值得注意的是&…