• 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环境缺什么,报什么错,再跟本地浏览器进行调试。过程肯定不是一帆风顺,但是解出来的时候,会莫名激动

    补充

    关于eleven下划线后面的数字,它是根据浏览器一些信息生成数字。然后和前面64位数字进行操作。得出来的。
    如果想要真正解出来,还需得继续分析。
    1.18更


    2020.04.19更

  • 相关阅读:
    开网页自动进入路由器设置界面的解决办法(腾达路由器)
    SQL基本语句
    驱动调试配置
    【转】snort
    【转】snort.conf分析(中文)
    【转】snort 笔记2 ----- 规则编写
    【转】Snort语法规则说明及实例讲解
    【转】Snort 命令参数详解
    POST教程笔记
    POST教程笔记
  • 原文地址:https://www.cnblogs.com/zhuchunyu/p/11838944.html
Copyright © 2020-2023  润新知