hao同学的技术博客

  • 首页
  • Java
    • Java
    • JVM教程
    • Java面试
    • Java并发入门
    • Java并发进阶
  • 项目
    • 从零打造项目
  • Python
    • Python
    • Python爬虫
    • 算法
  • Java框架
    • Spring
    • SpringBoot
  • 前端
    • Angular
  • 其他
    • Linux
    • SQL
  • 随笔
分享技术,记录人生
一个痴迷于技术的厨艺爱好者
  1. 首页
  2. Python爬虫
  3. 正文

Python实现58 同城模拟登录

2022年5月20日 393点热度 0人点赞 0条评论

Python实现58 同城模拟登录插图

前言

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

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

实战分析

一、页面分析

进入 58 同城登录页面后,输入账户名和密码,点击登录按钮。

58 同城登录页面

主要是构建 post 请求所需要的 Form Data,首先我们来简单的分析一下各个参数:

 Form Data分析

多次登录测试发现主要需要构建 fingerprint、password、token、path 参数,其它的固定不变。接下来我们对这些参数一一进行分析讲解。

1.fingerprint

利用 Charles 抓包,搜索 fingerprint 关键字。

Charles 抓包分析

Charles 抓包分析

发现打开登录页面之后,js 会根据图中地址发送请求,并返回 ppStore_fingerprint 和 finger_session 两个字段信息,后经比对,发现 finger_session 的值即为我们所需要的 fingerprint 信息。

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

2.password

搜索 password 关键字。

Charles 抓包分析

定位到该 js 文件,分析出现 password 的语句,最后发现以下加密方法。

Charles 抓包分析

那么 password 参数可能经过了 RSA 加密处理,一番查找后,都没有找到 encryptString 函数的所在,然后掉头分析抓取的 http 协议包,发现了 RSA 的文件夹。

Charles 抓包分析

打开一看,发现是 eval 开头,其中关键信息都是编码的。

Charles 抓包分析

利用 Eval 解密工具,对该文件里的内容进行解密,最终得到完整的 js 代码信息。在 js 文件尾部发现了 encryptString 函数。

Charles 抓包分析

找到 encryptString 函数后,我们再回头来分析进行 RSA 加密所需要的参数值,在 C 函数所在的 js 文件中发现了 RSA 加密必需的模数和指数。

Charles 抓包分析

找到对 password 进行 RSA 加密的所有条件后,通过 execjs 调用 js 代码进行密码加密。

3.token

搜索 token 关键字,发现某个请求返回结果中包含 token 的值。

Charles 抓包分析

4.path

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

二、登录验证

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

Charles 抓包分析

总结:

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

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: Python 爬虫
最后更新:2022年5月20日

hresh

这是一个专注于IT技术学习交流的个人技术博客网站,包括Java学习、Python爬虫、Web开发实践等领域,深耕Java领域,内容涵盖Java基础、Java并发编程、Java虚拟机、Java面试等核心知识点。

点赞
< 上一篇
下一篇 >

文章评论

取消回复

hresh

这是一个专注于IT技术学习交流的个人技术博客网站,包括Java学习、Python爬虫、Web开发实践等领域,深耕Java领域,内容涵盖Java基础、Java并发编程、Java虚拟机、Java面试等核心知识点。

文章目录
  • 前言
  • 实战分析
    • 一、页面分析
    • 二、登录验证
  • 总结:
最新 热点 随机
最新 热点 随机
后端必知:遵循Google Java规范并引入checkstyle检查 Spring Security结合Redis实现缓存功能 Spring Security结合JWT实现认证与授权 Spring Security自定义认证逻辑实现图片验证码登录 Spring Security进阶学习 Spring Security入门学习
日志分析工具:GCViewer、VisualVM、GCeasy @ServletComponentScan注解学习及扩展 Python 实现单链表 关于计算机的一些知识 深入学习方法内联 数据爬取 js 分析:Python 爬虫分析网页 js加密解密

COPYRIGHT © 2022 hao同学的技术博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2022007381号

鄂公网安备 42010302002449号