【干货分享】利用Python爬虫技巧,实现对旅游网站数据的逆向抓取!

本期继续由阿爬逆向一款旅游类App(同程),帮助大家解决旅游平台众多导致的选择困难症

一、对抗点介绍

  • 接口请求参数加密
  • 接口响应结果加密
  • 扣java算法代码

二、揭开加密面纱

1. 抓包分析

依然使用:很(V)好-P-用=N= + charles来抓包,找到酒店列表页,发现列表页接口请求参数是一串乱码

在这里插入图片描述

响应结果也是一串乱码

在这里插入图片描述

这样就不能直接通过关键参数搜索了

2.frida hook 找突破口

思考片刻后还是得用hook解决,于是启动hook urljs代码,找到对应url和堆栈

在这里插入图片描述

此刻拿出神器:jadx打开对应apk,发现App没有加壳,直接可以看到源码,根据堆栈信息很快定位到了函数入口

在这里插入图片描述

3.关键函数确认

大概梳理一下函数执行流程,发现核心点在a函数

在这里插入图片描述

为了验证是否真的,于是hook这个函数,去对比参数和结果,在hook结果中有很多结果,此时如何找到正确结果呢?经验告诉我列表页一般都是分页的,会存在page或者size字段,所以搜索一下,果然发现有相关信息

在这里插入图片描述

至此大致分析完成,开始算法还原

三、算法还原

根据逻辑,接下来开始还原算法,

1.解决a函数,进入a函数

在这里插入图片描述

乍一看以为是一个原生的AES加密,当看到导入的包时我的经验告诉我不对劲,跟进去看果然是自实现的一套AES加密。经过一番冷静,打开Java IDEA,开始一步一步扣代码,图中小箭头的地方都是需要还原的类或者方法,由于内容多就不演示扣代码过程了。

在函数最后返回处的Base64也是烟雾弹

在这里插入图片描述

跟进去也是自实现的方法,于是也得一步一步扣下来,最后扣完后检验一下是否能运行成功,还好一次就过了,再验证一下结果也是一样。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

最后还需要将java代码进行打包成jar(具体流程我就不写了,自行搜索)

重点的加密参数解决了,还有一个小参数值没有解决,如图:

在这里插入图片描述

这个参数比较简单,直接hook就可以得到了
在这里插入图片描述

  1. hook一下JSONObject中v对应的结果,用python的字典数据类型组装一个完整的数据

3.最后通过python实现gzip的压缩和解压功能

在这里插入图片描述

由此整个参数加密过程还原完毕,响应结果解密很简单,直接用gzip解压即可得到明文数据

四、刨根问底

总结一下注意点:

  • 扣java代码时和扣js代码差不多,缺啥补啥,不一样的是,如果有的类只使用固定值,则不需要把这个类补上,只需要补这个值即可

  • 在自实现AES算法传参时,用python字符串传参时注意转义字符,python传过去的字符串必须和hook到的字符串格式一直,错一个标点符号都不能拿到结果。

  • 请求正确后再检验哪些参数有校验,再动态去生成,封装。

    最后贴出结果图

在这里插入图片描述

在这里插入图片描述

最后,我这里准备了一些非常系统的爬虫资料,除了为你提供一条清晰、无痛的学习路径,我甄选了最实用的学习资源以及庞大的主流爬虫案例库。短时间的学习,你就能够很好地掌握爬虫这个技能,获取你想得到的数据,有需要的朋友可以扫描文末二维码即可获取哦

01 专为0基础设置,小白也能轻松学会

我们把Python的所有知识点,都穿插在了漫画里面。

在Python小课中,你可以通过漫画的方式学到知识点,难懂的专业知识瞬间变得有趣易懂。
在这里插入图片描述

在这里插入图片描述

你就像漫画的主人公一样,穿越在剧情中,通关过坎,不知不觉完成知识的学习。

02 无需自己下载安装包,提供详细安装教程

在这里插入图片描述

03 规划详细学习路线,提供学习视频

在这里插入图片描述

在这里插入图片描述

04 提供实战资料,更好巩固知识

在这里插入图片描述

05 提供面试资料以及副业资料,便于更好就业

在这里插入图片描述
在这里插入图片描述

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要也可以扫描下方csdn官方二维码或者点击主页和文章下方的微信卡片获取领取方式,【保证100%免费】
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值