经过对旁边栈的分析,它是在另外一个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环境缺什么,报什么错,再跟本地浏览器进行调试。过程确定不是一路顺风,可是解出来的时候,会莫名激动