zoukankan      html  css  js  c++  java
  • 教你使用python爬虫-携程-eleven参数!

     

    携程-eleven分析

    一、eleven的位置

    通过对旁边栈的分析,它是在另一个js文件中调用的。那个js文件是一个自调用的函数,所以我们可以直接copy下来,用浏览器执行看看

    执行运行是会报错的, undefind没有call属性

    经过调试发现,报错这里是想调用window下面的某一个函数,也就是这个对象属性key为29对应的值

    所以我们需要将这个函数添加进去

    我们再运行一次,这样就不会报错了

    虽说能够成功运行,不报错,但是本地生成的eleven的值是跟携程官网生成的eleven是不一样的

    三、解决方案

    这段js代码,肯定是对某一些做了判断,我当时猜想过cookie,因为我就是在浏览器中运行,浏览器的一些标识肯定都是一样,又区别的地方应该就是cookie吧。我就就一步一步的调试这这一大段js代码,讲真确实让人看得头疼

    刚开始看确实没多少耐心,点的也很快,也没什么技巧。

    有一个老哥说,他能在浏览器执行那段js代码,并且与携程官网的参数能对上。他是新建一个窗口浏览器,通过控制台将js代码copy,再进行调用,我试了下真的可以。我就很奇怪了,那就排除跟cookie有关了。

    后面我还是继续调试那段js代码(我是在携程网站进行调试的),发现那段js调用了 3 这个位置的函数,是一个 require 函数,每次调用都抛了异常,它有异常捕捉的代码,所以不会崩掉。

    我再调试着本地代码,发现我是没有这个函数的,我再去新建一个浏览器窗口,window.require输出为一个函数,这下终于知道哪里不对了

    所以我只需要在 3 那个位置添加这个函数就行了,上面也说过,携程网站它调用这个函数都是抛异常的,所以我们这样写就好了。

    为了防止巧合,我试了很多次,本地和线上生成的eleven都只差一位,意思是说他肯定还对某一项做了检测。

    四、补充

    需要注意的几个函数,不是说其他函数不重要,也很重要,但这个比较关键。

    五、node环境

    再弄node环境之前,必要浏览器执行后的eleven要和携程网的对得上,node环境缺什么,报什么错,再跟本地浏览器进行调试。过程肯定不是一帆风顺,但是解出来的时候,会莫名激动

    需要源代码或者是了解更多内容点击这里获取

    此文转载文,著作权归作者所有,如有侵权联系小编删除!

    原文地址:https://www.tuicool.com/articles/YZVJ73J

  • 相关阅读:
    面试题11:旋转数组的最小数字(C++)
    2019.9.20学习内容及随堂笔记
    2019.9.19学习内容及小结
    2019.9.18(day39)学习内容及小结
    2019.9.17学习内容及随堂笔记
    2019.9.16学习内容及随堂笔记
    2019.9.12(day36)学习内容及笔记
    2019.9.11学习内容及随堂笔记
    2019.9.10学习内容及随堂笔记
    2019.9.9学习内容及随堂笔记
  • 原文地址:https://www.cnblogs.com/wxys/p/13771584.html
Copyright © 2011-2022 走看看