js逆向之携程酒店房价抓取

本文介绍了如何针对携程酒店房价进行爬虫抓取,揭示了携程的反爬机制,包括房价数据乱码问题、eleven参数的浏览器指纹生成以及cookie的加密方法。通过JS逆向工程,解析了携程的反爬策略,强调了耐心在逆向过程中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

团队持续招人,app逆向方向,私聊。

2019-05-11 修复携程eleven参数改版问题
1 在调用require的时候判断是不是参数是不是path,如果是抛出异常
2 重新window的构造方法的toString方法,返回[object Window]

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

2019-05-06 修复在单ip高并发下携程返回rm -rf 问题。

在这里插入图片描述


2019-04-29 携程新反爬规则,在原来的基础上做了2点修改。
 1 fcerror的入参由hotelid+UA改成了hotelid
 2 新增一个_hotelnewguid的cookie,其由hotelid的hashcode(小写hashcode)经过换算的来。
 最新反爬点如下图。


携程爬虫项目


2019-04-23 携程房价新增了一个cookie判断,hoteluuid表示当前的浏览器指纹。
现在已更新到github。携程新反爬如下图所示

### 携程酒店 API 逆向工程 TestAB 测试方法 #### 定位 `testab` 参数生成逻辑 为了理解如何进行携程酒店 API 的逆向工程并获取 `testab` 参数,首先需要解析前端 JavaScript 文件中的加密函数。通过浏览器开发者工具可以追踪到 `getTestAB()` 函数的执行路径[^1]。 此函数的作用是从一个预定义数值列表中选取特定值,并将其转换成字符形式最终组合成为字符串类型的 `result` 变量返回给调用者。这表明 `testab` 是由一系列 ASCII 数字经过映射操作后形成的特殊编码串。 ```javascript function getTestAB() { let result = [/* some numbers */]; result(); result = result.map(function (num) { return String.fromCharCode(num); }).join(''); return result; } ``` #### 使用 Selenium 自动化抓取页面数据 对于动态加载的内容,Selenium 提供了一种有效的方式来模拟真实用户的交互行为从而获得完整的 HTML 文档结构。设置好环境变量后可以通过 Python 脚本控制 ChromeDriver 访问指定 URL 并提取所需信息[^2]: ```python from selenium import webdriver import time options = webdriver.ChromeOptions() driver = webdriver.Chrome(chrome_options=options) url = "https://hotels.ctrip.com/hotels/list?..." driver.get(url) time.sleep(3) # Wait for page to load completely # Extract data here... ``` #### 法律合规性和道德考量 值得注意的是,在从事任何形式的数据采集活动前应当充分考虑法律风险和社会影响。确保所有行动都在合法范围内开展,并尊重目标站点的服务条款。如果计划利用此类技术,则务必遵循当地法律法规的要求,避免侵犯他人权益或造成不良后果[^3]。 #### 分析与调试技巧 当面对复杂的 Web 应用程序时,深入研究其内部工作原理往往不可或缺。借助于诸如 Burp Suite Pro 或 Fiddler 这样的 HTTP(S) 中间件可以帮助捕获请求响应流以便更好地理解和修改通信协议;而像 JSDetox 则可用于混淆被保护起来JavaScript代码片段以揭示隐藏细节[^4]。
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值