安居客登录参数分析-安居客登录参数分析

文章详细分析了安居客登录过程中的密码加密机制,包括使用RSA加密和时间戳结合的方式。同时,提到了token和finger2的处理,其中finger2是浏览器指纹,相对固定。还讨论了反爬虫的report请求,涉及AES加密的浏览器信息采集和UUID的生成与存储。最后,文章介绍了如何通过Fiddler拦截和替换文件来调试和模拟这些过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安居客登录参数分析

选择账号密码登录,抓波登录包
login.png
可以看到,参数比较多,我们逐个击破

password

直接全局搜password,只有一个结果,下断点,发现并没有断下来。
搜password的时候,如果细心一点,可以发现CryptoJS这个关键字
cry.png
那么我们可以搜CryptoJS这个关键字,好多处可以找到,然后下断点,发现确实断下来了,但是并不是password参数加密的地方
这个时候可以尝试以下三个办法:

  1. 观察加密结果,猜测是否是常用的加密算法,如RSA、AES等
  2. 搜类似encrypt、sign等关键字
  3. 查看调用堆栈(这个请求好像看不到)

在这里的话,前两种方法其实都可以,我们搜encrypt,结果如下,可以看到RSA和encrypt字眼,直接下断点,最后,password加密位置在这里
rsa.png
返回上一层调用栈发现会在密码加一段时间戳的计算结果在做RSA加密,然后公钥的话基本是写死的,直接全局搜也能发现确实是写死的。
到这里password就解决了,然后就扣代码了,我是把密码前的时间戳写死的

module.exports = function encryptString(pwd) {
    /* rsaModule省略 */
    var r = RSAUtils.getKeyPair("010001", "", "rsaModule");
    return RSAUtils.encryptedString(r, "1411093327735" + pwd)
}

token

直接搜token关键字,结果太多,不好操作。
直接搜token的值,发现只有一处结果
token.png
还顺带发现了rsa参数的请求

finger2

顾名思义,指纹,对于固定的浏览器,应该是个定值。
多次测试,确实是个定值

其实到这里已经可以登录成功了
success.png

但是其实网站还有其他加密的地方,但是为什么我们没有模拟直接就能登录,我也不太清楚。

浏览器指纹加密

report请求,url中带有antispider字样,明显的反爬虫,请求体也巨长,可以尝试把他模拟出来。
antispider.png
好在这个请求能看到调用堆栈,直接点进去可以看到一段AES加密代码,下断点
aes.png
可以看到,对e进行了加密,然后结果巨长,这个e是什么,到浏览器控制台打印一下
finger.png
可以看到浏览器的信息被采集了个遍,还有web_driver。
把这个对象复制到IDE,一个个检查,最后总结发现能变得是以下几个,其他的对于固定的机器和浏览器都是不变的。
browser.png

这几个参数来源与前面一个请求密不可分:https://antispider-security.anjuke.com/api/v1/pcm/gettoken
这个请求,参数是加密的,返回结果也是加密的

好在直接也可以查看调用堆栈,然后直接找到加密位置和解密位置
aes_dec.png

综合上面两个请求,逐步调试分析可以发现每个参数的来源

  • uuid:请求gettoken时不携带此参数,report请求返回的结果会返回服务端产生的一个uuid,客户端收到后,保存到浏览器cookie、localStoage、sessionStorage中,三者互相定时查找对方获取值。所以当时调试时,发现怎么都删不干净这几个参数,花费了较多时间。最后用fiddler拦截,替换掉了互相获取值的定时函数,才发现这几个参数的生成规律。替换的JS文件是teemo_core.js中的pollEvent和monit,具体可查看相关文件。
  • 其他几个参数都是gettoken解密后的结果中获取,如下
      res = session.get("https://antispider-security.anjuke.com/api/v1/pcm/gettoken", params=params,
                        headers=headers)
      enc_data = re.search(r"\('(.*?)'\)", res.text).group(1)
      data = session.post("http://127.0.0.1:8000/decrypt", data={"data": enc_data}).json()['data']
      cid, deviceid, token, _ = data.split('')
      from browser import browser_feature
      browser_feature['xxzl_cid'] = cid
      browser_feature['sessionid'] = token
      browser_feature['xxzl_deviceid'] = deviceid
      browser_feature['id58'] = session.cookies.get("id58") + "|-1|-1|-1|-1"
      browser_feature["local_time"] = str(int(time.time() * 1000000))
    

然后对浏览器指纹进行加密后就可以发起report请求了,然回结果中包含uuid,也是cookie中的xzuid

总结

这次逆向有两点新的东西

  1. 浏览器的本地存储,还可以操作浏览器的数据库,对于调试工具中的Application板块有了解
  2. fiddler中间拦截,并替换文件

代码:Github

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值