經過對旁邊棧的分析,它是在另外一個js文件中調用的。那個js文件是一個自調用的函數,因此咱們能夠直接copy下來,用瀏覽器執行看看node
執行運行是會報錯的,undefind沒有call屬性
瀏覽器
通過調試發現,報錯這裏是想調用window下面的某一個函數,也就是這個對象屬性key爲29對應的值cookie
因此咱們須要將這個函數添加進去函數
咱們再運行一次,這樣就不會報錯了網站
雖然說可以成功運行,不報錯,可是本地生成的eleven的值是跟攜程官網生成的eleven是不同的ui
這段js代碼,確定是對某一些作了判斷,我當時猜測過cookie,由於我就是在瀏覽器中運行,瀏覽器的一些標識確定都是同樣,又區別的地方應該就是cookie吧。我就就一步一步的調試這這一大段js代碼,講真確實讓人看得頭疼3d
剛開始看確實沒多少耐心,點的也很快,也沒什麼技巧。調試
有一個老哥說,他能在瀏覽器執行那段js代碼,而且與攜程官網的參數能對上。他是新建一個窗口瀏覽器,經過控制檯將js代碼copy,再進行調用,我試了下真的能夠。我就很奇怪了,那就排除跟cookie有關了。code
後面我仍是繼續調試那段js代碼(我是在攜程網站進行調試的),發現那段js調用了3
這個位置的函數,是一個require
函數,每次調用都拋了異常,它有異常捕捉的代碼,因此不會崩掉。對象
我再調試着本地代碼,發現我是沒有這個函數的,我再去新建一個瀏覽器窗口,window.require輸出爲一個函數,這下終於知道哪裏不對了
因此我只須要在3
那個位置添加這個函數就好了,上面也說過,攜程網站它調用這個函數都是拋異常的,因此咱們這樣寫就行了。
爲了防止巧合,我試了不少次,本地和線上生成的eleven都只差一位,意思是說他確定還對某一項作了檢測。
須要注意的幾個函數,不是說其餘函數不重要,也很重要,但這個比較關鍵。
再弄node環境以前,必要瀏覽器執行後的eleven要和攜程網的對得上,node環境缺什麼,報什麼錯,再跟本地瀏覽器進行調試。過程確定不是一路順風,可是解出來的時候,會莫名激動