贝壳网页登录说明¶
本文档用于说明采集贝壳房产的成交记录时所遇到的逆向情况,只记录了主要接口的逆向。
主要包括网页的登录接口逆向、app 成交记录的两个接口的逆向
1. 前提条件¶
app
逆向部分请在 贝壳找房 app Authorization 逆向说明 文章中查看,js
逆向前准备如下:
- 配置好逆向环境的手机一台,本文使用的是一加7 pro,具体逆向环境配置篇请查看开发文档中的文章即可。
google
浏览器
2. 网页接口登录逆向部分¶
以下部分为贝壳网页端登录的逆向说明。
登录验证的总流程如下:
对以上图片和对应程序中的代码对应解释如下,网页端登录接口主要有以下请求:
- 三次
__get_abdr
请求(可只模拟一次) - 两次
__get_initialize
请求(也可只模拟一次) __authenticate
请求
注:若出现问题,优先注意以下问题:
- 则优先查看加密版本返回是否改变;
- 完善缺失的请求;
- 完善浏览器环境的信息生成过程。
2.1. __get_abdr 请求¶
此请求获取了浏览器环境,然后经过了 aes 加密,加密结果作为此请求包的 post 请求参数,响应内容中好多参数用于 __authenticate 登录请求包参数的来源数据。
环境提取的地方为: var T, n = lN[this[b('0x164')]], p = {}, u = 0x0;
对环境值加密后再处理
- 请求地址:https://miao.baidu.com/abdr
-
请求方式:POST
-
请求参数(只介绍主要参数,其余略):
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
无 | 取环境值,并 aes 加密,最后编码等格式处理而得 | str | 是 |
- 返回结果(只介绍主要参数,其余略):
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
data | 用于登录请求包 sicId 参数的生成 | str | |
key_id | 用于登录请求包 sicId 参数的生成 | str | |
sign | 用于登录请求包 sicId 参数的生成 | str |
2.2. __get_initialize 请求¶
此请求返回登录请求包的 rsa 加密的 key, 加密版本及 loginTicketId 等信息。
此请求的参数直接固定写死即可。
-
请求方式:POST
-
请求参数(只介绍主要参数,其余略):
字段 | 说明 | 类型 | 是否必填 | 备注 |
---|---|---|---|---|
无 | {"service":"https://ajax.api.ke.com/login/login/getuserinfo","version":"2.0"} | str | 是 |
- 返回结果(只介绍主要参数,其余略):
字段 | 说明 | 类型 | 备注 |
---|---|---|---|
loginTicketId | 用于登录请求包标识 | str | |
version | 用于登录请求包 password 生成所需加密的版本 | str | |
key | 用于登录请求包 password 生成所需 rsa 的 key 值 | str |
返回的整体内容示例如下:
2.3. __authenticate请求¶
此请求返回登录请求包的 rsa 加密的 key, 加密版本及 loginTicketId 等信息。
此请求的参数直接固定写死即可。
-
请求方式:POST
-
请求参数(只介绍主要参数,其余略):
以上参数说明如下:
username
:账号信息,为手机号password
:账号对应密码encodeVersion
:加密版本信息loginTicketId
:登录标识
- 返回结果(只介绍主要参数,其余略):
返回结果目前来说都不重要,主要是需要成功登录后的 lianjia_token 值
放入登录成功示例图:
3. 补充¶
参数获取比较简单,就是稍微麻烦点,参数处理的比较多,用到 aes、rsa 及 base64 等多种处理方式。
- 可以调试出加密方法和对应配置后,直接用
python
对应加密库实现即可,所以本文并未介绍扣代码和参数定位。