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核,可以同时并行运行四个进程,这是真正物理上的并行运行. 线程: 每个进程又可以 ...
随机推荐
- 【SQL】sql查询同一字段相同属性列的值合计
select type,sum(value) as valueSum from t group by type
- 用到的Dos命令总结 持续更新
1.xcopy命令:复制的扩展命令 常用参数:/s:复制空文件夹 不使用可能会造成文件混乱 /y忽略覆盖提示 使用/y会直接覆盖全部 例子:xcopy lark-UI\dist C:\U ...
- idea配置maven以及手动添加webapp目录
idea配置maven 点击右下角Configure 点击settings 3 . 设置路径 设置自动导包 4 . 点击创建新工程 5 . 选择maven点击下一步 6 . 7 . 8 . 此时,创建 ...
- 解决:Specifying a namespace in include() without providing an app_name和XXX is not a registered namespace问题
python3 Django 环境下,如果你遇到namespace没有注册以及在根目录下urls.py中的include方法的第二个参数namespace添加之后就出错的问题. 出错问题: 'Spec ...
- MyEclipse10 使用JRebel实现热部署
MyEclipse10 使用JRebel实现热部署 Window --Preferences-Tomcat 6.x-JDK-JVM -noverify -javaagent:D:\JRebel\jre ...
- XSS扫盲到漏洞挖掘上手
复习xss ,也总结一下XSS基础的点到进阶的知识 目录 0x01 XSS扫盲入门 0x02 XSS payload构造 0x03 XSS payload变形进阶 0x01 XSS扫盲入门 XS ...
- [BZOJ4990][Usaco2017 Feb]Why Did the Cow Cross the Road II
Description Farmer John is continuing to ponder the issue of cows crossing the road through his farm ...
- [Abp vNext 源码分析] - 11. 用户的自定义参数与配置
一.简要说明 文章信息: 基于的 ABP vNext 版本:1.0.0 创作日期:2019 年 10 月 23 日晚 更新日期:暂无 ABP vNext 针对用户可编辑的配置,提供了单独的 Volo. ...
- 算法问题实战策略 DICTIONARY
地址 https://algospot.com/judge/problem/read/DICTIONARY 解法 构造一个26字母的有向图 判断无回路后 就可以输出判断出来的字符序了 比较各个字母的先 ...
- ESP32 开发之旅② Arduino For ESP32说明
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...