爬虫里面的 Session ID 可以构造吗?

2023-04-18 15:19:51 +08:00
 ggp1ot2

背景

想自动化某个手机 APP 点击报名的步骤。就是每天到时间点几个按钮。

使用 Charles 抓包点击时的数据传输,成功找到报名的 API ,就是一个 post 请求。直接复制请求可以实现我的需求

问题

关键是,post 过去的有一个参数是 session id ,几分钟就失效,类似这样

identityauth2: {"SessionID":"f2c07xxxxxxxxxxxxxxxxxx",
"Str_Signature":"d73115f6205xxxxxxxxxxxxxxxxxxxxxxx",
"Str_TimeStamp":"2023-04-18 10:14:25"}"

导致我无法将程序部署在服务器上定时运行。

看起来是一堆无规律的字符串,感觉是通过什么规则生成的,且是对应的,搜了下好像是某种鉴权的方式?

想问下,这个字典,可以人工的去模拟构造吗?

是否可以通过某种方式,在发送我这个请求之前,先请求什么,来获得有效的 session id ?

我的想法是,是不是可以模拟登陆来获取?但是登陆也是手机接收验证码登陆,好像更麻烦了?

1423 次点击
所在节点    程序员
14 条回复
hefish
2023-04-18 15:23:37 +08:00
再抓包看看,是不是有保活 sessionid 的操作。
hex2en
2023-04-18 15:25:07 +08:00
sessionID 是服务端生成的,随机的,用来鉴权你是什么用户。
一般是登录时获取 sessionid
ggp1ot2
2023-04-18 15:25:07 +08:00
对了,还有 cookie ,貌似能顶很久,就是这个 sessionID 有点搞不定
ggp1ot2
2023-04-18 15:26:04 +08:00
@hex2en #2 那为啥好好的。我不动,APP 没有显示注销掉线,只是 sessionid 变了?
iyiluo
2023-04-18 15:28:49 +08:00
反编译查 app 的认证逻辑,不过这已经是灰色地带了
ggp1ot2
2023-04-18 15:29:05 +08:00
@hefish #1 手机 APP 登陆的话,只要不主动退出登陆,每次打开 APP 都是登陆的状态,是不是意味着会有一个 sessionID 是长期有效的?因为如果要经常抓包获取去更新,就有点麻烦了
ospider
2023-04-18 15:29:14 +08:00
这你就得逆向 app 了,不过看样子你对 session 的机制也不是完全了解,可能得多花点时间……
ggp1ot2
2023-04-18 15:29:32 +08:00
@iyiluo #5 谢谢,不过 IOS APP 反编译好像有点复杂?
hugedeffing
2023-04-18 15:31:01 +08:00
简单说下 SessionID 生成原理,一般是服务端生成的随机数。
举个例子,我是服务端,我生成一个随机数发给你,我存储在我的服务端,下发给你客户端。你客户端需要带这个随机数跟我交互,我会做一个对比。一般一次交互就是依赖这个唯一的 seesionID 。

所以,你获取有效的 session ID 的方式,一般就是保持活跃(以延长对话时间),或者重新构造第一次创建的 sessionId 。
ggp1ot2
2023-04-18 15:33:23 +08:00
@ospider #7 如果一定要做逆向的话,可能就不考虑了哈哈,投入的时间成本可能就很多了
ggp1ot2
2023-04-18 15:34:49 +08:00
@hugedeffing #9 [保持活跃] 的意思是,比如我发现两分钟就过期,我就 30s 发送一次请求?以保持 id 是一直有效的?

这样代码上很简单,但是有点担心被探测到然后被 ban 了
yulgang
2023-04-18 15:37:48 +08:00
在请求之前可能请求服务端更新了这个 id 。

我前两天用按键精灵搞了一个,找图,找色还行效率挺高。。。
Juszoe
2023-04-18 19:09:21 +08:00
很常见的字段,没什么标准,不同的程序员有不同的做法,只能靠反编译分析
k9982874
2023-04-18 19:11:42 +08:00
看看登录流程有没有 refresh_token

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

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

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

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

© 2021 V2EX