电商API接口|爬虫实战-js逆向,以淘宝sign为例

如果我们想要获取某宝的商品信息或者商品的评论信息的话。可能其中的一条途径就是爬虫了【淘宝商品详情API】。放在以前的话,爬虫还是挺简单的。但是放到现在呢,其实并不容易了。因为现在各个平台的反爬机制都加强了。有的会加强监控的,有的则是会使用一些算法,让你无法通过非浏览器或者app的方式访问到数据。其中淘宝就是,它现在不但需要登录,同时还会设计一些复杂的算法来阻止你使用非合规的手段来访问。

比如下面的这个:

当我们通过浏览器中的F12抓取到了我们搜索的商品的数据的时候,如果我们copy这个json数据的url,然后通过request库进行访问的时候,我们是访问不到。

这是为什么呢,其实这是因为,它设置了sign值,主要就是为了防止爬虫

如果我们想要获取商品的数据,首先第一步就是需要找到这个sign的规律。那么下面我会说如何js逆向去找到这个sign的规律。

第一步:

在搜索框中输入任意想要搜索的内容,比如我这里输入的是“小痰盂”

然后我们需要按F12,进入到开发者模式

可以看到现在是没有数据的,然后我们点击刷信来获取数据

刷新完成以后,我们在搜索栏中,搜sign回车,可以看到详细如下

然后我们找到对应的sign

我们可以在sign:l之前打一个断点,方便我们调试

然后我我们点击下一步,就可以查看到对相应的变量的信息了,这里我们可以看到sign的值,以及t、appKey的值等等。我们这里只关注sign就可以了。

其实我们不难发现,我们的这个sign的只其实是通过l赋值来的,这个l呢其实又是u这个函数的执行之后的结果。那么我们复制u函数中的数据来看一下。其实我是知道这个l的数据是通过u函数进行md5加密获取到的。至于为什么,我会在下面的视频中演示。

然后我们给这个u函数的数据,复制出来,然后在MD5加密网站中加密一下就知道了。我们可以看到,跟浏览器中的sign的值其实是一个。那么我们就验证了确实是通过MD5加密获得的sign的值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用IntelliJ IDEA快速搭建springboot 基础模板项目

使用IntelliJ IDEA快速搭建springboot 基础模板项目!今天和大家分享一下,如何使用IntelliJ IDEA里面的maven插件,来快速搭建一个简单的Springboot基础项目。 第一步,菜单里面找到,文件-》新建-项目。如图。我们勾选了是…

Zookeeper3.5.7基础学习

文章目录 一、Zookeeper入门1、概述2、特点3、数据结构4、应用场景 二、Zookeeper 安装部署1、本地模式安装1.1 基础操作1.2 配置参数解读 2、集群部署2.1 集群安装2.2 选举机制(面试重点)2.3 ZK 集群启动停止脚本 三、ZK客户端相关操作1、客户端命令行操作1.1 命令行语法1.2 z…

车载显示,“激斗”与“换代”

编者按:车载显示,正在进入新一轮变革周期。 车载显示作为汽车智能化的重要交互终端,在过去几年,持续受益车企的大屏化、多屏化配置趋势,部分头部厂商赚得盆满钵满。 比如,作为京东方旗下唯一的车载显示模组…

携程基于Jira Cloud的敏捷项目管理实践

好的工具可以满足团队在各个成长阶段的管理诉求 实践一:对齐目标/团队OKR/多团队协作战略项目 实践二:以产品为中心的协作框架 实践三:交付团队管理 实践四:和海外子公司对齐,协作

guitarpro8有免费版本吗? Guitar Pro需要多少钱

Guitar Pro8官方并没有提供一个完全免费的版本。然而,根据搜索结果,存在一个声称是Guitar Pro免费版的V8.0.1.28版本,这个版本被描述为一款可以自动谱曲的简单实用的谱曲软件。此外,还有信息称Guitar Pro免费版能够在不需要支付费…

在linux、window环境搭建kafka环境

一、搭建环境前置准备 下载kafka的官网 http://kafka.apache.org/downloads根据自己的需求选择版本,安装包不区分linux和windows环境,这一个安装包均可部署。 源代码包含kafka的代码文件,使用scala编写的。 二、linux环境 1. 上传安装包 我下载的版本是kafka_2.12-3.6.1…

php中laravel框架中接口开发实战经验总结

一.项目接口实战错误经验总结 1. 逻辑层静态类调用非静态方法报错,如下 Non-static method App\\Services\\Common\\StatisticBusinessService::getLevelUserCarCount() should not be called statically 问题原因:方法定义时没加static 解决方案: …

Threejs 问题——模型引入后并未加载出来

文章目录 问题分析 问题 Threejs 模型引入后并未加载出来 分析 该问题是由于引入OBJ模型路径报错 目前测试 在 public/static/ 引入时不会发生此错误并渲染成功 如果没有此报错且模型没渲染出来, 可以尝试刷新标签页或者异步请求模型方法 我的路径如下 引用如下 createM…

【2024】新建mysql数据库,如何选择字符集和排序规则

如何使用 Navicat 新建 MySQL 数据库,并选择字符集与排序规则 如何使用 Navicat 新建 MySQL 数据库并选择字符集与排序规则1. 开始之前2. 新建数据库步骤 1: 打开 Navicat步骤 2: 创建新数据库步骤 3: 填写数据库名称 常见的字符集和排序规则及其选择场景1. 字符集&…

MCU常用外设总线

目录 前言一、时钟与中断二、GPIO三、ADC四、定时器4.1 基本定时器4.2 通用定时器4.2.1 输入捕获4.2.2 输出比较 五、UART5.1 通讯的基本概念5.1.1 串行通讯与并行通讯5.1.2 全双工、半双工及单工通讯5.1.3 同步通讯与异步通讯5.1.4 通信速率 5.2 异步串口UART5.2.1 物理层5.2.…

谷达冠楠:现在开网店到底靠谱吗

在互联网高速发展的当下,开网店已成为众多创业者的选择。然而,面对激烈的市场竞争和不断变化的网络环境,人们不禁要问:现在开网店到底靠谱吗? 我们必须认识到,任何商业行为都存在风险,开网店也不例外。但是…

Python + Selenium —— 网页元素定位之标签名和链接文本定位

tag name tag name 为标签名定位,使用网页元素的标签名如a, div, input, span 等。 但是有一个问题,常见的标签名比如 在同一个页面上有非常多。会不会觉得 tag name 没什么用呢? 当然普通的模拟操作是不大有用,这个重复性实在…

Spring如何使用自定义注解来实现自动管理事务?

人可以做他(她)想做的,但不能要他(她)想要的 一个目录 前言业务代码展示手动挡自动挡事务失效的问题代码地址 前言 在两年半以前,我写了一篇博客:框架的灵魂之注解基础篇: 在那篇博客的结尾,我埋了一个坑&#xff1a…

mac安装部署gitbook教程

mac安装部署gitbook教程 前言一、安装准备二、GitBook安装三、项目初始化 前言 一些自己实际操作的记录。 一、安装准备 Node.js gitbook基于Node.js,所以需要提前安装。 下载地址:https://nodejs.org/en/,可以下载比较新的版本。(但我的建议…

深入到 TLP:PCI Express 设备如何通信

前言 当我为PCI express编写Xillybus IP核时,我很快发现很难开始:在线资源和官方规格用关于螺母和螺栓的血腥细节轰炸你,但对机器应该做什么却很少说。因此,一旦我努力自己弄清楚这一点,我就决定写这个小指南&#xf…

源码篇--Redis 五种数据类型

文章目录 前言一、 字符串类型:1.1 字符串的编码格式:1.1.1 raw 编码格式:1.1.2 empstr编码格式:1.1.3 int 编码格式:1.1.4 字符串存储结构展示: 二、 list类型:2.1 List 底层数据支持:2.2 List 源码实现:2.3 List 结构…

【C++】反向迭代器模拟实现

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.利用适配器的思想…

【产品设计】B端导航菜单的三大模式

导航是每一个网站的灵魂所在,用户依赖导航进行不同页面的切换,找到自己所需的。那么该如何将庞大的B端系统中的导航菜单做好呢? 导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。 导航菜单一般分为顶部导航和侧边导…

成本更低、更可控,云原生可观测新计费模式正式上线

云布道师 在上云开始使用云产品过程中,企业一定遇见过两件“讨厌”事: 难以理解的复杂计费逻辑,时常冒出“这也能收费”的感叹; 某个配置参数调节之后,云产品使用成本不可预估的暴涨。 可观测作为企业 IT 运维必须品…

Python工具:pathlib

文件的路径实际上是一件很困扰的时间(各种平台有时候规则不一样,有时候还需要考虑字符转义的问题),因此我直接推荐使用模块 pathlib,当然,如果您不介意的话,可以使用 os.path 做较为低级的路径操…