我试着通过脚本在当当网( https://login.dangdang.com/ )判断一个手机号码是否已经注册过,下面的浏览器发送的参数:
t: 1653661422695
ct: pc
permanent_id: 20220527222303660356159866560768420
requestId: 2205272223209660Q3KN8O_ab63
mobile_phone: 13162072077
sign: 01ZJ+f8vDhYyMogVCLJl7e9kMAS7RfHsqPDz5UkUrMgF1Ah2r2hW+XOBNYnVooLW
其中t
是时间戳,ct
是客户端类型。permanent_id
的含义不清楚,但可能和 expire 时间有关;requestId
可能是由时间字符串加上一些随机数构成。
多次调整mobile_phone
,发现permanent_id
和requestId
不变,但其签名sign
会发生改变。按照爬虫的设计,签名应该是对请求数据进行某种加密。
请问大家有思路吗?
1
F12 2022-05-27 22:57:56 +08:00
能有什么思路,分析源码呗
|
2
xiaopanzi OP @F12 But, 当当的源码怎么在我手里?可能我问的不清楚:通过上面 sign 的特征(比如长度),它可能是通过如何加密方式 /算法实现的?
|
3
viiber 2022-05-27 23:20:58 +08:00 via Android
基本上很难看出来,除非是恰好(比如说 ef 之类的开头看多了就会知道是 base64 加密过的),这种说实话我也没头绪,写爬虫的时候一般就用 selenium 来规避这些参数的模拟了。
|
4
des 2022-05-27 23:22:15 +08:00 via iPhone
前端 js 不是直接看的到吗,自己扒代码
|
5
cpstar 2022-05-28 00:22:58 +08:00
OP 2# 你看他加载的 JS 库,基本就能猜出用什么加密,其实也不能算加密,也就是 MD5 、SHA1 、SHA256 之类的算摘要
|
6
krapnik 2022-05-28 00:49:12 +08:00
|
9
oneisall8955 2022-05-28 10:33:39 +08:00 via Android
@xiaopanzi 谢谢 6 楼呀,已经截出图了。很有是参数 key value 按照 key 升值排序进行 md5 hash ,有个 rankey 作为密钥可能是先从后端拿的,session 范围有效的值
|