请问这个 POST 请求里面的 sign 可能是如何构成的?

2022-05-27 22:48:39 +08:00
 xiaopanzi

我试着通过脚本在当当网( 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_idrequestId不变,但其签名sign会发生改变。按照爬虫的设计,签名应该是对请求数据进行某种加密。

请问大家有思路吗?

1289 次点击
所在节点   科技
10 条回复
F12
2022-05-27 22:57:56 +08:00
能有什么思路,分析源码呗
xiaopanzi
2022-05-27 23:04:24 +08:00
@F12 But, 当当的源码怎么在我手里?可能我问的不清楚:通过上面 sign 的特征(比如长度),它可能是通过如何加密方式 /算法实现的?
viiber
2022-05-27 23:20:58 +08:00
基本上很难看出来,除非是恰好(比如说 ef 之类的开头看多了就会知道是 base64 加密过的),这种说实话我也没头绪,写爬虫的时候一般就用 selenium 来规避这些参数的模拟了。
des
2022-05-27 23:22:15 +08:00
前端 js 不是直接看的到吗,自己扒代码
cpstar
2022-05-28 00:22:58 +08:00
OP 2# 你看他加载的 JS 库,基本就能猜出用什么加密,其实也不能算加密,也就是 MD5 、SHA1 、SHA256 之类的算摘要
krapnik
2022-05-28 00:49:12 +08:00
icy37785
2022-05-28 02:58:01 +08:00
@xiaopanzi #2 前端代码直接 js 里就看得到呀,这前端加密的直接扒呗
xiaopanzi
2022-05-28 10:04:13 +08:00
@icy37785 谢谢!
oneisall8955
2022-05-28 10:33:39 +08:00
@xiaopanzi 谢谢 6 楼呀,已经截出图了。很有是参数 key value 按照 key 升值排序进行 md5 hash ,有个 rankey 作为密钥可能是先从后端拿的,session 范围有效的值
xiaopanzi
2022-05-28 10:43:06 +08:00
@icy37785 谢谢。
@krapnik 谢谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX