前言
那些年携程工程师在代码里下的毒-反爬与反反爬的奇技淫巧
知乎上面的专栏,写出了逆向找到携程的Eleven
参数来伪装浏览器发送ajax,获取携程的酒店房型列表。然而文章并没有给出全部的思路,我们获取到的页面内容内容是酱紫的:
所以没办法,只能自己撸出来,看看到底是怎么加密的。
DEBUG
首先还是查看ajax请求网址时
http://hotels.ctrip.com/Domestic/tool/AjaxHote1RoomListForDetai1.aspx?psid=&MasterHotelID=441351&hotel=441351&EDM=F&roomId=&IncludeRoom=&city=2&showspothotel=T&supplier=&IsDecoupleSpotHotelAndGroup=F&contrast=0&brand=0&startDate=2017-08-28&depDate=2017-08-29&IsFlash=F&RequestTravelMoney=F&hsids=&IsJustConfirm=&contyped=0&priceInfo=-1&equip=&filter=&productcode=&couponList=&abForHuaZhu=&defaultLoad=T&TmFromList=F&eleven=c4350e460862b69d9d76724e1325a0a54ef23c2e0648636c855a329418018a85&callback=CASuBCgrghIfIUqemNE&_=1503884369495
的代码, 寻找他的调用栈。
$.ajax(o, {
onsuccess: function(e) {
window[n](e.responseText)//
},
onerror: function() {
window[n] = void 0,
r()
}
}
而执行函数的时候传入的参数就是我们刚刚ajax得到的的json内容。我们打上断点后可以发现e.responseText
为访问页面得到的json转化而成字符串。
而window[n]
方法就在上方
window[n] = function(e) {
window[n] = void 0;
var i = ["T",