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

python爬虫-携程-eleven参数的更多相关文章
- 一个python爬虫协程的写法(gevent模块)
from bs4 import BeautifulSoup import requests import gevent from gevent import monkey, pool monkey.p ...
- Python爬虫 | 多线程、多进程、协程
对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了 ...
- Python线程,进程,携程,I/O同步,异步
只有本人能看懂的-Python线程,进程,携程,I/O同步,异步 举个栗子: 我想get三个url,先用普通的for循环 import requests from multiprocessing im ...
- python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用
python爬虫---单线程+多任务的异步协程,selenium爬虫模块的使用 一丶单线程+多任务的异步协程 特殊函数 # 如果一个函数的定义被async修饰后,则该函数就是一个特殊的函数 async ...
- Webmagic 爬虫框架 爬取马蜂窝、携程旅游、汽车之家游记信息
WebMagic学习 遇到的问题 Log4j错误 解决:在src目录下添加配置文件 log4j.properties log4j.rootLogger=INFO, stdout, file log4j ...
- python对比线程,进程,携程,异步,哪个快
目录概念介绍测试环境开始测试测试[单进程单线程]测试[多进程 并行]测试[多线程 并发]测试[协程 + 异步]结果对比绘图展示概念介绍首先简单介绍几个概念: 进程和线程进程就是一个程序在一个数据集上的 ...
- python 携程asyncio 实现高并发示例2
https://www.bilibili.com/video/BV1g7411k7MD?from=search&seid=13649975876676293013 import asyncio ...
- python 携程asyncio实现高并发示例1
import asyncio #携程(携程不是函数) async def print_hello(): while True: print("hello world") await ...
- 进程、线程和携程的通俗解释【刘新宇Python】
通过下面这张图你就能看清楚了,进程.线程和携程的关系 进程: 多个进程是可以运行在多个CPU当中的,比如你的电脑是4核,可以同时并行运行四个进程,这是真正物理上的并行运行. 线程: 每个进程又可以 ...
随机推荐
- Vue入门教程 第三篇 (条件与循环)
v-if语法(条件) 符合条件时显示(渲染)某一元素. <div id="app"> <div v-if="ok"> <h1> ...
- Kubernetes网络分析之Flannel
Flannel是cereos开源的CNI网络插件,下图flannel官网提供的一个数据包经过封包.传输以及拆包的示意图,从这个图片中可以看出两台机器的docker0分别处于不同的段:10.1.20.1 ...
- 终端 10X 工作法(一)
目录 1. Terminal 2. Grep 3. Sed 4. Awk 5. Xargs 6. Find 在 github 上面有一个 700 多人 star 的 repo 叫做 Bash-Onel ...
- 网关服务自定义路由规则(springcloud+nacos)
1. 场景描述 需要给各个网关服务类提供自定义配置路由规则,实时生效,不用重启网关(重启风险大),目前已实现,动态加载自定义路由文件,动态加载路由文件中的路由规则,只需在规则文件中配置下规则就可以了 ...
- PHP 组件注册的例子
<?php namespace Test; abstract class Plugin { protected $pluginName = null; abstract public funct ...
- java集合之Vector向量基础
Vector向量: vector类似动态数组,向量和数组类似,但是数组容量一旦确定不可更改,而向量的容量可变.向量只可以保存任何类型对象且容量不限制,数组对元素类型无限制但是容量有限. 适用场合:向量 ...
- MS09-012 PR提权
漏洞编号:MS09-012 披露日期: 2009/4/14 受影响的操作系统:Windows 2008 x64 x86;XP;Server 2003 sp1 sp2; 测试系统:windows 20 ...
- pycharm中常见错误提示
1.类中定义函方法 PyCharm 提示Method xxx may be 'static': 原因:该方法不涉及对该类属性的操作,编译器建议声明为@staticmethod
- IntelliJ IDEA 2019.2最新版本免费激活码
IntelliJ IDEA 2019.2最新版本免费激活码 支持IDEA所有版本 正版授权激活码 今天更新了一下,支持java13等新功能.下面是激活码 812LFWMRSH-eyJsaWNlbnNl ...
- SpringBoot学习(三)探究Springboot自动装配
目录 什么是自动装配 何时自动装配 原理分析 注:以下展示的代码springboot的版本为2.0.3版.因源码过长,大家选择展开代码 ㄟ( ▔, ▔ )ㄏ 什么是自动装配 自动装配还是利用了Spri ...