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

python爬虫-携程-eleven参数的更多相关文章

  1. 一个python爬虫协程的写法(gevent模块)

    from bs4 import BeautifulSoup import requests import gevent from gevent import monkey, pool monkey.p ...

  2. Python爬虫 | 多线程、多进程、协程

    对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了 ...

  3. Python线程,进程,携程,I/O同步,异步

    只有本人能看懂的-Python线程,进程,携程,I/O同步,异步 举个栗子: 我想get三个url,先用普通的for循环 import requests from multiprocessing im ...

  4. python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用

    python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用 一丶单线程+多任务的异步协程 特殊函数 # 如果一个函数的定义被async修饰后,则该函数就是一个特殊的函数 async ...

  5. Webmagic 爬虫框架 爬取马蜂窝、携程旅游、汽车之家游记信息

    WebMagic学习 遇到的问题 Log4j错误 解决:在src目录下添加配置文件 log4j.properties log4j.rootLogger=INFO, stdout, file log4j ...

  6. python对比线程,进程,携程,异步,哪个快

    目录概念介绍测试环境开始测试测试[单进程单线程]测试[多进程 并行]测试[多线程 并发]测试[协程 + 异步]结果对比绘图展示概念介绍首先简单介绍几个概念: 进程和线程进程就是一个程序在一个数据集上的 ...

  7. python 携程asyncio 实现高并发示例2

    https://www.bilibili.com/video/BV1g7411k7MD?from=search&seid=13649975876676293013 import asyncio ...

  8. python 携程asyncio实现高并发示例1

    import asyncio #携程(携程不是函数) async def print_hello(): while True: print("hello world") await ...

  9. 进程、线程和携程的通俗解释【刘新宇Python】

    通过下面这张图你就能看清楚了,进程.线程和携程的关系   进程: 多个进程是可以运行在多个CPU当中的,比如你的电脑是4核,可以同时并行运行四个进程,这是真正物理上的并行运行. 线程: 每个进程又可以 ...

随机推荐

  1. 如何选择一款适合自己操作系统、Windows、Mac还是Linux?

    如何选择一款适合自己操作系统.Windows.Mac还是Linux? 作者:我们都很努力着 简介:电脑已经逐渐离不开我们生活,但是如何选择一个我们最佳,最适合的电脑操作系统就成了一些困难选择人士的一个 ...

  2. numpy.rollaxis函数

    numpy.rollaxis numpy.rollaxis 函数向后滚动特定的轴到一个特定位置,格式如下: numpy.rollaxis(arr, axis, start) 参数说明: arr:数组 ...

  3. Linux 命令之 chmod

    命令格式 chmod有以下三种格式 chmod [-cfvR] MODE[,MODE]... FILE... chmod [-cfvR] OCTAL-MODE FILE... chmod [-cfvR ...

  4. Java源码解析|HashMap的前世今生

    HashMap的前世今生 Java8在Java7的基础上,做了一些改进和优化. 底层数据结构和实现方法上,HashMap几乎重写了一套 所有的集合都新增了函数式的方法,比如说forEach,也新增了很 ...

  5. cocos2d-x 系统学习cocos(2) 交互

    交互 玩游戏的时候,我们需要用输入设备和游戏进行交互,那么游戏需要对玩家做出相应,比如说按下键盘的上下左右,角色就朝着对应的方向移动,按下技能键,角色就释放技能 键盘监听 响应 cocos2d-x中要 ...

  6. Django高级实战 开发企业级问答网站 ✌✌

    Django高级实战 开发企业级问答网站 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 从实际需求分析开始,实现当今主流知识问答应用的功能,包括动态.文章.问 ...

  7. Mysql 为什么要选择 B+Tree

    算法对比 二叉树 当我查找 8 的时候需要走五步 红黑树 当我查询8的时候需要四次 相对于二叉树有了一些优化 没有无限延伸.红黑树的深度会很深(深度不可控制) hash 数据量大的话 查询很快(不能范 ...

  8. XGBoost: 你不能不知的机器学习算法

    XGBoost作为一个非常常用的算法,我觉得很有必要了解一下它的来龙去脉,于是抽空找了一些资料,主要包括陈天奇大佬的论文以及演讲PPT,以及网络上的一些博客文章,今天在这里对这些知识点进行整理归纳,论 ...

  9. CTF-SSH服务渗透

    环境 Kali ip 192.168.56.102 Smb 靶机ip 192.168.56.101 0x01信息探测 首页发现有类似用户名的信息 先记录下来 Martin N Hadi M Jimmy ...

  10. 上手Typescript,让JavaScript适用于大型应用开发

    Typescript Typescript是一个基于静态类型的,能编译为JavaScript的JavaScript的超集.也就是说任何JavaScript都可以看成是Typescript,IDE能够更 ...