“網頁源碼的隱藏”和js調試


最近在抓包的時候,發現諸多“詭異”的現象。點擊按鈕,第一個get包里面直接帶了一個key值。當時的這個key值怎么來的滿頭的霧水!

當時非常的迷惑,主要的原因就是這個key值的產生在第一個get包里,不是后面的各種類型的包產生的!包括網頁類型,js。

后來只有反推思考,竟然當點擊按鈕以后產生的第一個包就存在這么一個值,那么這個值就應該是點擊按鈕存在的那個頁面里就應該存在了。

為了證明我這個推論,我就用google開發工具查看點擊按鈕區域的代碼,結果要找的key值就在那里。

 

當這個key映入眼簾的時候,欣喜若狂。果然在該頁里。

我迅速點擊右鍵查看網頁源碼,搜索key,此時“詭異”的現象又出現了,竟然搜索不到key。不可能啊,難道是我眼睛看錯了?我對比了幾下,發現問題來了。

如果要google的開發工具查看是可以找到,但是不在網頁源碼里面。

結合上面兩張圖,我們發現,在div(choose-amount fl)下面應該存在一個div(choose-btn-qiang)。

竟然現象已經產生,我們還是得尊重事實,找出問題的原因。因為我也是第一次碰到這樣的情況,不敢果斷下結論,只能做以下判斷:

一 這段div用某種手段隱藏了

二 這斷div通過js動態加載,不存在靜態頁面源碼里。當觸發某個事件的時候,js動態調用進來的一段。

 最后,種種感覺讓我不得不去查看頁面的js文件,雖然很不情願。

我們都知道,javascript是可以對頁面的div進行操作的,那么只有去js文件里去找這個div(choose-btn-qiang)。

到目前為止,雖然碰到的問題很多,但是方向和推測都是正確的,找到這個div當然只是時間的問題。后面終於在qiang.js里面找到了。

下面是部分代碼:

var Qiang = {
originBuyUrl: $('#InitCartUrl').attr('href'),
init: function (a, b) {
this.sku = a || pageConfig.product.skuid,
this.key = b || pageConfig.product.skuidkey,
this.btnWrap = $('#choose-btns'),
this.btnTPL = {
a: '<div id="choose-btn-qiang" class="btn disabled"><a class="btn-qiang" href="#none">{T}<b></b></a></div>'
},
this.get()
},

get: function () {
var a = this;
var b = 'http://yushou.jd.com/youshouinfo.action?sku=' + this.sku;
var c = pageConfig.product.specialAttrs && /isKO/.test(pageConfig.product.specialAttrs.join('-'));
c && (b = 'http://item.ko.jd.com/itemShowBtn?skuId=' + this.sku),
$.ajax({
url: b,
dataType: 'jsonp',
success: function (b) {
'1' === b.type ? (a.set(b), pageConfig.qiang = !0) : '2' === b.type ? (a.setStage2(b), pageConfig.qiang = !0) : '3' === b.type ? (a.setKO(b), pageConfig.qiang = !0) : pageConfig.qiang = !1
}
})
},

其實我們應該看最重要的一段:

var Qiang = {
originBuyUrl: $('#InitCartUrl').attr('href'),
init: function (a, b) {
this.sku = a || pageConfig.product.skuid,
this.key = b || pageConfig.product.skuidkey,
this.btnWrap = $('#choose-btns'),
this.btnTPL = {
a: '<div id="choose-btn-qiang" class="btn disabled"><a class="btn-qiang" href="#none">{T}<b></b></a></div>'
},
this.get()
},

 通過上面代碼我們可以看出來,對象的key值,通過一個變量b賦予。大膽的推測下,是不是可以通過js斷點調試得出k值呢?其實我當時心里並沒有譜,只有試試了。

這個時候我們需要用一個js調試的神器,火狐瀏覽器的調試器!

這里斷點下到哪里要注意一下,因為b值的生成要用到下面的get:function(),所以要下到54行。

現在我們開始調試,刷新頁面。下面是我們得到的調試結果:

如果,b值已經出現了。“http://yushou.jd.com/youshouinfo.action?sku=1478342961”這段就是我們需要的b值,大家肯定要問了,這個跟我們key啥關系,

別心急,把這段復制到瀏覽器打開,我們得到如下信息:

{"type":"1","num":437,"d":323701,"flag":false,"stime":"","etime":"2015-04-05 10:00:00","state":4,"sku":1478342961,"url":"http://yushou.jd.com/qianggou.action?sku=1478342961&key=e9d318dd32984052fd440c6b23472597","info":"搶購進行中"}

 沒有看錯,url:里面出來了我們要的key值,其實這段url就是我們要的get提交地址。

一切順利解決!

謝謝ccav!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM