58 同城 post 参数分析之 eval 加密

前言

58 同城是国内领先的生活分类信息网站,海量生活信息免费发布查询。提供找房子、找工作、二手物品买卖、二手车、58 团购、商家黄页、宠物票务、旅游、交友等多种生活信息。对于数据分析师来说,58 同城是重要的数据源,来获取我们需要的数据。获取数据前,我们需要做模拟登录准备,本文便是讲解如何利用 Python 代码模拟登录 58 同城。

58 同城的前端登陆 js处理不同于百度登录,很有自己的特色,藏匿了关键的 js 语句、关键字段的参数值的出处也很特别,虽然没有百度模拟登录难,但是分析 58 同城前端登录过程也是很有意义的。

实战分析

一、页面分析

进入 58 同城登录页面后,输入账户名和密码,点击登录按钮。
58 同城 post 参数分析之 eval 加密_第1张图片
主要是构建 post 请求所需要的 Form Data,首先我们来简单的分析一下各个参数:
58 同城 post 参数分析之 eval 加密_第2张图片
多次登录测试发现主要需要构建 fingerprint、password、token、path 参数,其它的固定不变。接下来我们对这些参数一一进行分析讲解。

1.fingerprint

利用 Charles 抓包,搜索 fingerprint 关键字。
58 同城 post 参数分析之 eval 加密_第3张图片
58 同城 post 参数分析之 eval 加密_第4张图片
发现打开登录页面之后,js 会根据图中地址发送请求,并返回 ppStore_fingerprint 和 finger_session 两个字段信息,后经比对,发现 finger_session 的值即为我们所需要的 fingerprint 信息。

该参数的分析,本没有那么简单,一开始动手分析的时候,也不会想到那么简单,多次测试后才发现其构造。

2.password

搜索 password 关键字。
58 同城 post 参数分析之 eval 加密_第5张图片
定位到该 js 文件,分析出现 password 的语句,最后发现以下加密方法。
在这里插入图片描述
那么 password 参数可能经过了 RSA 加密处理,一番查找后,都没有找到 encryptString 函数的所在,然后掉头分析抓取的 http 协议包,发现了 RSA 的文件夹。
58 同城 post 参数分析之 eval 加密_第6张图片
打开一看,发现是 eval 开头,其中关键信息都是编码的。
58 同城 post 参数分析之 eval 加密_第7张图片
利用 Eval 解密工具,对该文件里的内容进行解密,最终得到完整的 js 代码信息。在 js 文件尾部发现了 encryptString 函数。
58 同城 post 参数分析之 eval 加密_第8张图片
找到 encryptString 函数后,我们再回头来分析进行 RSA 加密所需要的参数值,在 C 函数所在的 js 文件中发现了 RSA 加密必需的模数和指数。
在这里插入图片描述
找到对 password 进行 RSA 加密的所有条件后,通过 execjs 调用 js 代码进行密码加密。

3.token

搜索 token 关键字,发现某个请求返回结果中包含 token 的值。
58 同城 post 参数分析之 eval 加密_第9张图片
4.path

该参数前面部分基本不变,尾部更新时间戳即可。

二、登录验证

将各个参数构建完成后,把 Form Data 通过 post 请求进行提交,最后返回值如图所示,即为登录成功。
在这里插入图片描述

总结:

通过本次案例分析,认识到开发者工具和抓包工具结合使用的重要性,断点调试和截取 https 信息对于网页请求分析都必不可少。

你可能感兴趣的:(爬虫)