究竟是道德的沦丧,还是现实的骨感,让携程反爬工程师在代码里写下这句话-『爬虫进阶第二弹』

本文讲述了爬虫进阶过程中的两个案例,分别是马蜂窝景点信息和携程酒店详情页的反爬策略。通过分析和逆向工程,揭示了马蜂窝的参数加密机制以及携程利用JavaScript动态生成参数的手段。同时,提醒爬虫开发者应尊重对方业务,注意合法合规使用爬虫技术。
摘要由CSDN通过智能技术生成

点这里排版好

本文仅用作学习交流不得用于任何商业用途


4 月的北京,这天气像是 80 岁的老奶奶 ?,捂得慌。
实验室/自习室的角落,清脆的打字声,夹杂着几声叹气,一个套着格子衬衫,头发不多的大叔直视着屏幕。
眼神坚定的他,快速的敲下了一行命令。‘这次一定要成了’。
而屏幕的那头,终于有了些反应,一个个字符鲜活的蹦了出来,像极了[黑镜:潘达斯奈基]中男主被操控的感觉。
可他原本充满期待的脸突然开始扭曲,放佛在屏幕上看到了什么恐怖的东西
只见屏幕上欣然出现这么一句话
在这里插入图片描述

上次发完你已经是一个成熟的爬虫了,应该学会自己去对抗反爬码农了 ?-『爬虫进阶指南』就不断有小伙伴向我我请教如何解决一些 js 逆向工程的问题

其实这个问题说小了涉及 js、py 基础语法,说大了涉及网络攻防,涉及对方公司架构,甚至涉密。

而且做这种逆向工程还特别费时间,(其实反爬工程师做加密方案也特别累, 所以一般做这种混淆加密的都是该公司的核心业务),所以这方便的资料其实特别少。

还是再想提醒下大家,爬虫是一个获取信息的好工具,但还请相互体谅,本文也仅用作学习使用。

本文分析两个案例,一个是去年被爬怕了的马蜂窝,一个是携程, 像这种公司体量很大,业务繁多,也不可能全部分析,具体来说:

乱入总结:

  • 携程 996
  • 马蜂窝看不出来 是不是 996

打个小广告, 求 star自带高可用 Proxy 库的 spider 代码 hhh

马蜂窝

在这里插入图片描述

我们要爬的是所有景点信息,这个信息是请求http://www.mafengwo.cn/ajax/router.php获取的

其中需要一坨参数,除了一眼能看出语义的参数之外,也就_sn, sAct(可惜它不变)可能是被加密过的。

image

google 了一下没发现有提供解决方案的~~(快速解决问题才是王道)~~,大概推测了一下马蜂窝在去年年底做了这次加密方案。

第一反应,不是先做逆向,而是猜测可能是通过前置请求从后端拿到的,然后翻了一下发现并没有,对比了一下前后几个请求,发现这个参数出现次数还挺多的,而且值还不一样,行了 js 加密石锤了

然后去筛哪些 js 对这个参数的生成有所影响(用 chrome 的开发者工具暴力 block)

image

饿 他们这 js 有点少,闭着眼睛 都能猜出来是哪个,jQuery 一般会放自己构造 cookie 构造 Header 头的逻辑(当然这里也有可能同时使用 Cookie & _sn一起做效验)

这个时候我们做一个实验,来看一下 Header 里面的内容有没有作用在 encoder 和 decoder 中。

打开 chrome 的无痕模式(有些时候需要 clear 一下 History, 这跟 ServiceWork 机制有关,有兴趣的同学可以查下相关资料), 先打开开发者模式,然后键入我们爬取的 URL。

(现在我们模拟的是首次进入该网站的用户,通常为了做到首次加载网页在几百 ms 内,都会对一些不必要的功能做 delay 加载操作,这个时候的条件能获得到信息,则之后也能)-这也是一个小技巧吧 ?

image

然后我们看一下,没有 Cookie(这也可以理解,JQuery.js 和混淆所需要的/js/hotel/sign/index.js两个文件是异步获取的,为了保证用户的用户体验,前端在首次加载做了妥协。

然后我们工作的重点,就是研究http://js.mafengwo.net/js/hotel/sign/index.js?1552035728这个 js 做了哪些混淆

首先,一看这个安全做的就不是特别好,这个 js 是通过静态的 url 来获取的,获取的过程没有任何加密,也就是说我解密出来一次,只要你不发版,我基本上都能用(所以大家看看就行了,别用做商

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值