前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬虫进阶必备 | 某器件商城加密参数 sign 的分析

Python 爬虫进阶必备 | 某器件商城加密参数 sign 的分析

作者头像
咸鱼学Python
发布2021-12-06 15:31:28
4700
发布2021-12-06 15:31:28
举报
文章被收录于专栏:咸鱼学Python咸鱼学Python

今日网站

aHR0cHM6Ly90aXRhbm1hdHJpeC5jb20vdGd4eA==

这个例子来自交流 4 群

参数定位与分析

这个参数直接通过下面的请求可以找到

aHR0cHM6Ly9tYWNhZmUudGl0YW5tYXRyaXguY29tL21hY2FmZS9nZXRTdGF0ZQ==

接着就是搜索大法,之前有讲过定位加密参数的几种方法,

补充内容

有读者在留言区问我是哪一篇,我一时间也没有找到

这里直接补一下

1、参数搜索 - 通过搜索加密值的参数名快速定位,类似搜索下面的例子

代码语言:javascript
复制
sign: 
sign :
sign= 
sign = 
# 从开发角度思考为什么这样搜索

2、xhr 断点 - 这个方法有一定的局限性,且需要有一定的堆栈分析能力

代码语言:javascript
复制
F12 - 点击【Sources】- 右边工具栏【如下图的位置】 - 新建一个断点,在输入框输入要匹配的 url

这个原理就是在xhr发包的时候匹配 url 是否包含你设置的字符串,如果包含就 debugger

所以在这里就不要填上包含可变的参数的 url,填写 url 主体部分即可

ps:每次都变的参数,当然是匹配不上了

3、js 调用栈分析大法 - 基本都能用上,通用性强

代码语言:javascript
复制
在控制台找到你需要分析的请求 - 选中他 - 找到【Initiator】 - 找一个打上断点 - 再次刷新

继续上面的分析,一个个试我列出来的几个选项

像上面这样就出来了,之后你再打上断点然后刷新,就可以验证下是不是通过这个逻辑生成的

像这样

断上了像这样

然后分析ke.a.hash就可以了

这个时候断上了不要慌,也不要记着去分析hash搞了什么操作

先看参数

像我这样复制出来

代码语言:javascript
复制
appid=201010&client={"system":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36","version":"1.0.0"}&param={"serviceKey":"a4966e02741c4cc091fe1834d00f149c"}&rank=7294033887935694&timestamp=2021/12/03 20:02:08&token=&key=72933362EAA649B893699E6191BC898F

然后看下经过这个hash发生了什么

再复制出来

代码语言:javascript
复制
fd38dd0d6427bb8cc13e62568af6dd27

这个步骤多做几步,确认以下几点

代码语言:javascript
复制
1、参数是不是不变的?
2、参数长度是不是不变的?
3、参数在其他请求里是否有返回或者携带?

确认完,再看看特征

代码语言:javascript
复制
1、有没有和一些常见的算法结果类似的?
2、是不是 16、32 位这样显著的固定长度?
3、是不是和 base64 长的很像? - 通常结果以大小写字母、0-9、+/ 组成,有些还会以 = 结尾

完成以上几点花费不了几分钟,慢慢的可以节省你大把的时间,有这些时间可以用来认真总结或者看些技术文章了(比如咸鱼我的)

确认完是不是会发现符合一些猜测的特征?

那就拿到一些在线加密的测试网站上试试

16、32 位 hash 测试我经常用的是下面这个网站

代码语言:javascript
复制
https://1024tools.com/hash

你们有好用的也可以分享一波

把我们刚刚复制的明文粘贴进去

你看这样不就出来了?

再贴一下群里的J佬写的代码

代码语言:javascript
复制
# -*- coding: utf-8 -*-#

#-------------------------------------------------------------------------------
# Project:      js_nx
# Name:         sss
# Description:
# Author:       阿J
# Date:         2021/12/2
#-------------------------------------------------------------------------------

import requests,json,hashlib
import time


def md5(xx):
    return hashlib.md5(xx.encode()).hexdigest()

headers = {
    'Connection': 'keep-alive',
    'Pragma': 'no-cache',
    'Cache-Control': 'no-cache',
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"',
    'Accept': 'application/json, text/plain, */*',
    'apiVersion': '1.0',
    'Content-Type': 'application/json;charset=UTF-8',
    'sec-ch-ua-mobile': '?0',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
    'sec-ch-ua-platform': '"Windows"',
    'Origin': 'https://titanmatrix.com',
    'Sec-Fetch-Site': 'same-site',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Dest': 'empty',
    'Referer': 'https://titanmatrix.com/',
    'Accept-Language': 'zh-CN,zh;q=0.9',
}

data = {
    "appid": "201010",
    "client": {
        "system": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
        "version": "1.0.0"
    },
    "param": {
        "serviceId": "a4966e02741c4cc091fe1834d00f149c",
        "sid": 7017,
        "pkey": "",
        "withParam": True,
        "noWaterMark": True
    },
    "timestamp":time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()),
    "rank": "9018048684590414",
    "sign": ""
}

enc_data = "appid=" + data['appid'] + "&client=" + json.dumps(data['client'],separators=(',',':')) + "&param=" + json.dumps(data['param'],separators=(',',':')) \
           + "&rank=" + data['rank'] + "&timestamp=" + data['timestamp'] + "&token=" + ""+ "&key=" + "72933362EAA649B893699E6191BC898F"
print(enc_data)
sign = md5(enc_data)
print(sign)
data['sign'] = sign
response = requests.post('https://macafe.titanmatrix.com/macafe/getState', headers=headers, data=json.dumps(data,separators=(',',':')))
print(response.text)

好了,以上就是今天的全部内容了。

我是没有更新就在摸鱼的咸鱼

收到请回复~

我们下次再见。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 咸鱼学Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参数定位与分析
    • 补充内容
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档