0
点赞
收藏
分享

微信扫一扫

携程H5端航班数据抓取

茗越 2022-04-08 阅读 74

携程H5端航班数据抓取

1 加密参数分析

(文章提供方法仅用作交流学习,请不要用作商业用途)
(数据已做脱敏处理)

  • 页面url: aHR0cHM6Ly9tLmN0cmlwLmNvbS9odG1sNS9mbGlnaHQvc3dpZnQvZG9tZXN0aWMvQ1RVL0NBTi8yMDIyLTA0LTA3P2RmaWx0ZXI9

    可以看到查询航班的url路径是由起飞机场三字码、到达机场三字码以及起飞日期组成

  • 请求url:
    aHR0cHM6Ly9tLmN0cmlwLmNvbS9yZXN0YXBpL3NvYTIvMTQwMjIvZmxpZ2h0TGlzdFNlYXJjaD9fZnhwY3FsbmlyZWR0PTA5MDMxMTAyMzE1NzgzMzY3NjYx

    抓包可以看到这个Ajax请求正好返回了对应的航班飞机机票数据
    在这里插入图片描述
    接着看一下请求头,请求头中带有记录用户行为和信息的cookie,经过不断请求清除cookie重新生成,发现cookie中其他的参数都是固定的,只有一个SESSIONID、GUID以及_bfa是变化的
    在这里插入图片描述
    再来看这个post请求的请求体(payload)
    在这里插入图片描述
    经过多次请求,不难看出请求参数以及荷载中的cid和cookie中的GUID是一样的。accode是到达机场三字码,dccode是出发机场三字码,tid是怎么生成的还不知道

2 追踪分析参数

经过分析,只要模拟出对应的荷载以及用户cookie差不多就可以抓到数据了,点击启动器,查看此Ajax请求调用的程序,其中有一个fetchDataWithCache,点击进去,在此处打上断点,重新刷新页面
在这里插入图片描述
这里可以看到tid以及生产了点击↑向上追溯调用栈
在这里插入图片描述
点击几次后,看到set和get方法,get返回的就是tid(tid的格式看起来八成是生成UUID的格式)
在这里插入图片描述
接着定位到对应的函数
在这里插入图片描述
跟推断的差不多,就是UUID的格式,把源码po出来
在这里插入图片描述
没什么毛病,就是按规则随机生成的UUID。

3 得到cookie

tid搞定了,接下来主要问题就是搞定cookie了,这里主要有两个方法:一个是Hook大法,还有一个就是使用mitmproxy或者模拟浏览器抓cookie

  • Hook大法
    Hook大法网上由很多大神的教程,我也是跟着大神学到了很多,推荐这篇K哥爬虫博主的文章,很值得学习,JS逆向之HOOK大法

可以通过油猴脚本hook还可以通过fiddler插件hook
通用JavaScript代码如下:

(function(){
	'use strict';
	var cookieTemp = "";
	Object.defineProperty(document, 'cookie', {
		set: function(val) {
			if(val.indexOf('_bfa') != -1){
				debugger;
				}
			console.log("Hook到的cookie", val);
			return val;
			},
		get: function() {
			return cookieTemp;
			}
		});
})();

然后刷新页面,就可以hook到该cookie参数了

  • mitmproxy抓取cookie
    mitmproxy也就是中间人代理攻击,可以截获客户端与服务器端的通讯通话并且插入新的内容,具体可以查看我的这篇文章MitmProxy介绍使用
举报

相关推荐

0 条评论