首页 > 其他分享 >【转载】淘宝爬虫sign、token详解

【转载】淘宝爬虫sign、token详解

时间:2024-01-12 23:56:34浏览次数:35  
标签:请求 爬虫 sign token cookie mtop 淘宝

【转载】淘宝爬虫sign、token详解

淘宝对于h5的访问采用了和客户端不同的方式,由于在h5的js代码中保存appsercret具有较高的风险,mtop采用了随机分配令牌的方式,为每个访问端分配一个token,保存在用户的cookie中,通过cookie带回服务端分配的token, 客户端利用分配的token对请求的URL参数生成摘要值sign,MTOP利用这个摘用值和cookie中的token来防止URL篡改。

流程

当本地cookie中的token为空时(通常是第一次访问),mtop会收到”FAIL_SYS_TOKEN_EXOIRED:: 令牌过期“这个错误应答,同时mtop会生成token写入cookie中(response.cookies);
第二次请求时,js通过读取cookie中的token值,按照约定的算法生成sign, sign在mtop的请求中带上,mtop通过cookie中和token用同样的方式计算出sign,与请求的sign进行比较,检查通过将返回api的应答,失败提示“FAIL_SYS_ILLEGAL_ACCESS:: 非法请求”;

cookie中的token是有时效性的,遇到token失效时,将收到应答"FAIL_SYS_TOKEN_EXOIRED:: 令牌过期", 同时会写入新的token,js利用新的token重新计算sign并重发请求;
关于cookie中的token的自我检查,由于token在cookie中是明文的,可能会被仿冒,在输出的cookie中包含一个用非对称密钥的公钥加密后的token, MTOP在每次请求时会先检查cookie中的token是否是由服务端分配出去的(利用加密后的token和私钥还原token,与回传的明文token比较)

sign 生成

关于sign的生成公式:

md5Hex(token&t&appKey&data)

直接用“&”将4组字符串连接起来

如:md5Hex("30dc68e5b4cf40ebd02fb05673c7e3b7&1572522062317&12345678&{"itemNumId":"1502111132496"}")

sign=4c1e7b6853fa7a5e1b8f7066ee22932f

token

m_h5tk: 格式为 明文token_expireTime, 从response.cookies处获取,如: 30dc68e5b4cf40ebd02fb05673c7e3b7_1572522062317

token就是 30dc68e5b4cf40ebd02fb05673c7e3b7
失效时间是 1572522062317

t

很简单,即时间戳 通过 new Date().getTime() 获得

appKey
固定数值 通过抓包工具在请求参数中可获得,参数名 appKey,是一串数字

data
提交的参数 通过抓包工具在请求参数中可获得 通常是一个JSON字符串

 

转自:

详解淘宝H5 sign加密算法 - 步云网 (buyunw.com)

 

标签:请求,爬虫,sign,token,cookie,mtop,淘宝
From: https://www.cnblogs.com/roundfish/p/17961811

相关文章

  • 用Swift库写爬虫采集统计局公开数据
    国家统计局公开的信息还是比较真实准确的,他可以给一个行业带来一些参考性意见。因此,有公司找上我,让我爬取一些行业数据,因为是老客户了也就没推辞,但是因为最近也比较忙,也就利用晚上时间加个班搞下。首先,我们需要导入必要的库,包括SwiftSoup和SwiftyJSON。SwiftSoup是一个强大的库,用于......
  • rancher集群获取k8s的token
    一、概述在使用Kubernetes(简称K8S)集群进行容器编排时,我们需要使用Token来进行身份认证和访问控制。Rancher是一个开源的容器管理平台,可以帮助我们快速构建和管理K8S集群。本文将介绍如何在Rancher集群中获取K8S的Token。二、步骤概览下表展示了获取K8SToken的步骤概览:步骤操作1登......
  • rancher集群获取k8s的token
    你好,新入行的小伙伴!欢迎来到K8S的世界。今天,我将带你了解如何在Rancher集群中获取Kubernetes(K8s)的Token。这个过程可能会有些复杂,但别担心,我会尽可能地详细解释每一步。一、了解整体流程在开始之前,我们先大致了解一下整个流程。以下是获取KubernetesToken的基本步骤:登录到Rancher......
  • 爬虫之短信验证码
    ​ 处理短信验证码的思路就是手机端有一个可以转发短信到我们可以读取的地方。目前我的处理方式是将短信转发到邮箱,再读取邮箱中的邮件拿取验证码。​ 首先就需要下载转发工具:https://github.com/pppscn/SmsForwarder/releases/tag/v3.2.0具体使用参考官方文档。以下是12306短......
  • (token,Spring Security)
    认证:让服务器认识客户端之前使用session记录登录用户的信息,之后每次请求都验证session对象中是否有登录用户的信息(Filter)token认证:用户登录成功,服务端会给这个客户端(浏览器)签发一个token(字符串),客户端接收到这个token,存入到容器中(sessionStorage或者是LocalStorage),浏览器每次访......
  • netcore webpi 通过signalr 给vue项目推送消息
     最近项目上需要做个服务给前端推消息,首先就想到了signalr,关于signalr详情可以参考微软官方文档(ASP.NETCoreSignalR概述|MicrosoftLearn),微软现在也有使用教程(ASP.NETCoreSignalR入门|MicrosoftLearn)微软教程是通过使用库管理器(LibMan)从unpkg 获取客户端库,如......
  • 快乐学Python,数据分析之获取数据方法「公开数据或爬虫」
    学习Python数据分析,第一步是先获取数据,为什么说数据获取是数据分析的第一步呢,显而易见:数据分析,得先有数据,才能分析。作为个人来说,如何获取用于分析的数据集呢?1、获取现成的数据集获取数据集的第一种方式,就是获取行业上已经有人整理好的数据集。目前大数据行业持续火爆,数据本身已......
  • 使用Ruby编写的代理爬虫程序:抓取dy视频播放量接口数据并解析(附详细中文解释)
    随着互联网的快速发展,网络数据的获取变得愈发重要。在某些情况下,我们可能需要通过代理来访问特定的网站或API,以确保数据的准确性和可靠性。本文将介绍如何使用Ruby编写一个代理爬虫程序,以抓取dy视频播放量接口的数据并进行解析。准备工作首先,我们需要引入两个关键的Ruby库:open-uri......
  • 使用C#编写异步爬虫程序:爬取美图录网站精美图片内容并下载到本地
    使用C#编写的爬虫程序,用于爬取美图录网站上的图片内容。使用了HttpClient和Json.Net库。usingSystem;usingSystem.Net.Http;usingSystem.Threading.Tasks;usingNewtonsoft.Json.Linq;http://www.jshk.com.cn/mb/reg.asp?kefu=xiaoding;//爬虫IP免费获取;classProgram{......
  • 使用anaconda创建爬虫spyder工程
    1.由于每个工程使用的环境都可能不一样,因此一个好的习惯就是不同的工程都创建属于自己的环境,在anaconda中默认的环境是base,我们现在来创建一个名为spyder的环境,专门用于爬虫工程://括号中名字,代表当前的环境(base)dragon@machine:$condacreate--name=spyder2.激活环境//环境从......