type
status
date
slug
summary
tags
category
icon
password
由于分析h5st参数可知,我们在加密的时候会有一个前轴,运用到了一个token和一段小代码字符串,推断可能由别的地方得来所以由此分析。
下一篇我将为大家详细讲解h5st是如何实现的。
网站:aHR0cHM6Ly91bmlvbi5qZC5jb20vcHJvTWFuYWdlci9pbmRleA==
首先我们找到对应的接口(request_algo)

这里我们可以看到他返回的这个就是我们需要的token和后续h5st参数所需要的一小段加密。
由此我们看一下他请求所携带的参数有哪一些:

接下来我们将分析出所需参数如下:
1、fp
2、expandParams
通过搜索推断相对应的位置如下:

由此打上了断点,进行请求分析(注意刷新的时候需要清掉缓存,cookie并强刷)触发此函数:

其实这里我们看到他传入已经是加密好的结果,由此推断在这之前已经是处理好的加密参数,我们通过堆栈往上查找分析。

在这里我们看到结果是o来的,并且结果是由上面加密得到,看样子非常的像AES加密通过key和iv加密得到,我们先看一下明文内容是什么如下图:

其实这里就是采集到你电脑的一些基本信息。
- 语言信息:
l
: 语言 (中文)ls
: 语言设置 (中文)
- 浏览器信息:
av
: 浏览器版本ua
: 用户代理字符串sua
: 简化的用户代理字符串pp
: 浏览器插件信息(在这里为空)extend
: 额外扩展信息(包含多个字段,如wd
,l
,ls
,wk
,bu1
,bu2
,bu3
,bu4
,bu5
,bu6
)
- 屏幕和窗口信息:
w
: 屏幕宽度h
: 屏幕高度ow
: 窗口宽度oh
: 窗口高度
- 页面信息:
url
: 当前访问页面的URLog
: 页面所属域名pf
: 平台 (Win32)pr
: 屏幕分辨率比例re
: 引荐网址(这里为空)
- Cookie和本地存储信息:
pp1
: 包含多个Cookie信息,例如__jda
,__jdb
,__jdc
,__jdv
,3AB9D23F7A4B3CSS
,3AB9D23F7A4B3C9B
,_gia_d
,__jdu
,sidebarStatus
- 浏览器指纹信息:
canvas
: Canvas指纹webglFp
: WebGL指纹
- 错误和调试信息:
random
: 随机生成的字符串referer
: 引荐网址(这里为空)v
: 文件版本 (h5_file_v4.7.4)bu2
: JavaScript错误信息(包含具体的错误位置)
- 其他:
ccn
: 一个数值,可能是代表某种特定的计数或标识符ai
: 一个标识符fp
: 另一个标识符
这里我们不难看出,都是一些比较基本的信息,对比一些采集严格的网站来说相对而已是比较少的,如果批量的话这里是可以添加一些随机参数,当然你在请求时也必须和这些参数一致以达到严谨性。
这里如果细心的小伙伴会觉得比较奇怪,因为我们平常如果说把一个对象转成json格式他显示的效果不应该是这样的,我们可以看到他这里显示的是整整齐齐像是有一些换行操作,那么我们这里也需要跟他一致的效果,我们往上找看他是如何实现的。


从这两处地方我们可以看到这里的json格式是比较奇怪的有一些特殊的换行符,那么我们可以直接跟上去看一下。

这个地方是通过jw函数进行实现的这个结果,我们可以看到传入的正是我们上一个函数传的一个环境的env对象、null和一个数字2。

然后到这里的基本上所有的参数都分析完毕,接下来就是进行aes加密了。
第一个传入的参数就是我们上面所说的明文,第二个则是key值了。

第三个则是iv值

最后加密得到结果。

通过把整一个js代码copy下来然后对其进行封装

使用requests进行请求得到结果。

今天的文章到这里就结束了,后续还会出一遍专门讲解h5st参数的讲解,敬请期待。
- 作者:猿榜编程
- 链接:https://www.yuanbang.lol//article/b5acb691-8cec-4d7f-a4b4-ed6b5fbb9946
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。