Harlber / Moose

Android app
http://www.acfun.tv/v/list110/index.htm
83 stars 26 forks source link

分析官方app的登陆过程 #62

Closed xingstarx closed 7 years ago

xingstarx commented 7 years ago

对官方app进行登录拦截分析,分析http请求过程

1 http://mobile.app.acfun.cn/oauth2/authorize2.aspx(post)

parameter:

password    ***
username    18207*****3
response_type   token
client_id   ELSH6ruK0qva88DD

(client_id ELSH6ruK0qva88DD ) 这个client_id 的值是怎么得到的,这个需要好好讨论下 return data:

{
    "data": {
        "access_token": "***",
        "userImg": "http://cdn.aixifan.com/dotnet/20120923/style/image/avatar.jpg",
        "expires": 1478702196000,
        "userGroupLevel": 1,
        "mobileCheck": 1,
        "userId": 6*****5,
        "username": "x*******x"
    },
    "success": true,
    "status": 200
}

我觉得我们很有必要添加这一步,这样就可以保存到access_token了(也就是说,登陆接口调整下,换成这个试试)

2 http://api.app.acfun.cn/apiserver/profile?userId=6*****5(get)

return data:

{
    "success": true,
    "msg": "ok",
    "status": 200,
    "data": {
        "fullUser": {
            "currExp": 50,
            "nextLevelNeed": 100,
            "banana": 10,
            "bananaGold": 0,
            "level": 1,
            "gender": 0,
            "exp": 55,
            "mobile": "1*********3",
            "mobileCheck": 1,
            "qq": null,
            "followed": 0,
            "following": 0,
            "lastLoginDate": 0,
            "contributes": 0,
            "signature": null,
            "username": "x*******x",
            "userId": 6*****5,
            "userImg": "http://cdn.aixifan.com/dotnet/20120923/style/image/avatar.jpg"
        }
    }
}

这一步同样,进一步获取用户的信息

而原来的登陆api请求是: http://www.acfun.tv/login.aspx(post) parameter:

username    1*********3
password    ******

return data:

{
    "img": "http://cdn.aixifan.com/dotnet/20120923/style/image/avatar.jpg",
    "success": true,
    "username": "x*******x"
}
xingstarx commented 7 years ago

http://mobile.app.acfun.cn/oauth2/authorize2.aspx(post) 这个接口能够获取到access_token,但是client_id 我却不知道怎么计算出来的

Harlber commented 7 years ago

猜测:客户端与服务器存在某种算法约束,将用户名等其他身份标志数据采用某种算法后得到的 client_id

xingstarx commented 7 years ago

根据拦截手机的http请求,分析出client_id是每次发版本后存放在客户端固定的值,网络请求分析没有找到跟client_id相关的url,根据请求参数,猜测client_id是存放在代码中的,为了确认下,可以反编译试试。(先确认下,上班再聊)

目前我反编译,已经找到了它的评论的图片,这个可以新提一个需求,先把上一个分支处理好,再说这个吧

xingstarx commented 7 years ago

目前已经确定了client_id是固定在Acfun官方APP代码里面的,所以我们目前可以使用这个client_id的值,而不用担心它是动态变化的