想自动化某个手机 APP 点击报名的步骤。就是每天到时间点几个按钮。
使用 Charles 抓包点击时的数据传输,成功找到报名的 API ,就是一个 post 请求。直接复制请求可以实现我的需求
关键是,post 过去的有一个参数是 session id ,几分钟就失效,类似这样
identityauth2: {"SessionID":"f2c07xxxxxxxxxxxxxxxxxx",
"Str_Signature":"d73115f6205xxxxxxxxxxxxxxxxxxxxxxx",
"Str_TimeStamp":"2023-04-18 10:14:25"}"
导致我无法将程序部署在服务器上定时运行。
看起来是一堆无规律的字符串,感觉是通过什么规则生成的,且是对应的,搜了下好像是某种鉴权的方式?
想问下,这个字典,可以人工的去模拟构造吗?
是否可以通过某种方式,在发送我这个请求之前,先请求什么,来获得有效的 session id ?
我的想法是,是不是可以模拟登陆来获取?但是登陆也是手机接收验证码登陆,好像更麻烦了?
1
hefish 2023-04-18 15:23:37 +08:00
再抓包看看,是不是有保活 sessionid 的操作。
|
2
hex2en 2023-04-18 15:25:07 +08:00
sessionID 是服务端生成的,随机的,用来鉴权你是什么用户。
一般是登录时获取 sessionid |
3
ggp1ot2 OP 对了,还有 cookie ,貌似能顶很久,就是这个 sessionID 有点搞不定
|
5
iyiluo 2023-04-18 15:28:49 +08:00
反编译查 app 的认证逻辑,不过这已经是灰色地带了
|
6
ggp1ot2 OP @hefish #1 手机 APP 登陆的话,只要不主动退出登陆,每次打开 APP 都是登陆的状态,是不是意味着会有一个 sessionID 是长期有效的?因为如果要经常抓包获取去更新,就有点麻烦了
|
7
ospider 2023-04-18 15:29:14 +08:00
这你就得逆向 app 了,不过看样子你对 session 的机制也不是完全了解,可能得多花点时间……
|
9
hugedeffing 2023-04-18 15:31:01 +08:00
简单说下 SessionID 生成原理,一般是服务端生成的随机数。
举个例子,我是服务端,我生成一个随机数发给你,我存储在我的服务端,下发给你客户端。你客户端需要带这个随机数跟我交互,我会做一个对比。一般一次交互就是依赖这个唯一的 seesionID 。 所以,你获取有效的 session ID 的方式,一般就是保持活跃(以延长对话时间),或者重新构造第一次创建的 sessionId 。 |
11
ggp1ot2 OP |
12
yulgang 2023-04-18 15:37:48 +08:00
在请求之前可能请求服务端更新了这个 id 。
我前两天用按键精灵搞了一个,找图,找色还行效率挺高。。。 |
13
Juszoe 2023-04-18 19:09:21 +08:00
很常见的字段,没什么标准,不同的程序员有不同的做法,只能靠反编译分析
|
14
k9982874 2023-04-18 19:11:42 +08:00 via Android
看看登录流程有没有 refresh_token
|