SDUFE CAS爬虫逆向思路与代码
Wong Shouhao

工具准备

为了方便编写爬虫代码和逆向网站逻辑,我所使用的工具列表如下:

  • Chrome/Firefox/Edge,用于网页代码逆向
  • Charles,用于抓包

如果您也选择使用python作为代码编写工具,您需要安装下列库:

  • requests,用于网络请求
  • bs4,用于网页解析
  • Crypto,用于加密

如果您对Charles的配置和使用不熟悉,您可以参考下列链接:

登录逻辑

在开始具体过程的逆向之前,我们需要对登录的整体逻辑有所了解。在此处,我们给出山东财经大学图书馆预约系统的登录逻辑。

首先打开图书馆预约系统主页,点击右上角的“登录”按钮,发现页面跳转至山东财经大学统一身份认证系统

由于需要了解登录的具体逻辑,我们需要打开Charles软件进行抓包。

为什么不用浏览器自带的Network功能?

因为登录环节涉及到了页面的跳转,而浏览器的Network功能只能抓取当前页面的请求,一旦点击登录发生页面跳转,Network无法显示跳转过程中的网络数据包。

为了更加方便的分析跳转过程中的数据包,我们需要将展示窗口调整为Sequence模式。在浏览器页面内输入账户和密码,点击登录。等待登录完成,返回Charles软件,点击上方的小红点暂停抓取以方便后续分析,如下图:

Charles Login

从下向上浏览每一个网络数据包,我们可以看到在大部分MethodGET的数据包内出现了一个MethodPOST的数据包,而且Path也与我们的登录页面相同,可以大胆地猜测该包就是提交登录数据的包。

如果您对HTTP Method的概念不熟悉,可以参考HTTP Method的MDN文档wiki

点击此条记录,可以查看该数据包的详细信息,如下图:

Network packages info

此处仅展示了对我们分析较为重要的Contents信息。如果您个人进行分析,最好观察数据包的所有信息。