python爬虫 携程 机票 sign transactionID
听说携程网的机票很难搞,这几天尝试了一下,最终还是搞出来了,不需要借助selenium模拟,纯代码硬干。
本文目标,获取携程网的机票(国际机票为例)接口中,headers里的两个参数,sign和transactionID.
一:transactionID的获取。
这个参数直接在以下链接获取:
https://flights.ctrip.com/international/search/oneway-xmn-sin?depdate=2020-01-02&cabin=c_f&adult=1&child=0&infant=0
在response中直接提取transactionID,之后需要这个ID去获取sign值.
二:sign的获取。
全局搜索,找到sign的生成位置:
这段js所在的位置,是:https://webresource.c-ctrip.com/ResFltIntlOnline/R4/assets/list.js
可以看到,sign的最后获取,需要_.a对象,同时调用了update和digest两个函数。
先打断点查看e.get("transactionID") 和 t是什么值:
可以看到这里update的参数就是transactionID+起飞城市三字码+到达城市三字码+日期。
同时可以看到,这里的 _.a调用的是函数c.
这里的c函数是包含在另一匿名函数中,并且相对应的函数还挺多
但这里面的c函数 并没有见到update和digest函数,
于是又是一顿断点调试,最终发现代码运行到a函数中,并且有完整的update和digest函数
继续调试后就会发现,这里几乎各个函数中都有的e参数,它是变化的,并不是最外面的那个函数中的固定的数组,这就很蛋疼,无法像往常那样直接给予构造。于是回到了代码逻辑。
发现,所有的原有e数组,都传入了该脚本的前一百多行进行循环赋值。
那么,只要断点找出最后完成赋值的_.a对象(必然地该对象包含了update和digest函数),然后带入我们得到的transaction+t
就可以运行最后sign值的表达式:(new _.a).update(e.get("transactionID") + t).digest("hex")
在整个构造的过程中,还是缺乏了很多对象和方法,还需要调用到获取transactionID时,得到的response中的部分参数,当然,在处理的过程中,优先进行手动赋值,等到正式项目中再另行获取后传入即可。
以上就是sign的破解思路。
纯属个人爱好,不做任何数据的抓取。
破解技术交流,欢迎勾搭。
更多粉丝可见的文章,欢迎点击关注。
QQ: MTE2NTY3MzkzNg== (base64)
python爬虫 携程 机票 sign transactionID相关推荐
- python爬虫携程机票
大半夜的来点干货,首先先让我得意一下,自学将近一个月python语言,学习网络爬取技术,从一个小白到半吊水大神,终于可以自己编写出爬取携程机票的脚本,可以根据自己输入始发地和到达地,日期,就可以爬取出 ...
- python爬虫携程用车总结
爬取携程用车信息,用的比较传统的模拟浏览器行为方式,主要用payload进行request请求,一步步获取最后的用车列表 1:缓存清理问题: 根据模拟浏览器行为方式,我们需要从这个页面来选择我们的[租 ...
- python爬虫携程酒店_携程酒店爬取分享
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import urllib.request from bs4 import BeautifulSoup import csv import re def ...
- python爬虫携程酒店_携程酒店爬虫
# 请求地址 import json from urllib import request import pymysql class Database(): def __init__(self): s ...
- Python 爬虫 携程池 爬取腾讯动漫
简介 主要爬取腾讯动漫上某一漫画的所有图片的url 所用到的库 分析腾讯动漫网址 代码 所用到的库 gevent gevent.pool requests selenium xpath 分析腾讯动漫 ...
- pyqt5+mysql+多线程爬虫实现 python 携程机票爬虫 数据可视化
基本目录 数据来源与获取方法 数据来源 网页分析 实现效果 完整代码与说明文档 数据来源与获取方法 数据来源 携程机票查询https://flights.ctrip.com/online/channe ...
- python爬取携程机票并发送过滤后的机票信息到指定邮箱
0x0 前言 在疫情发生之前,在知乎上刷到一个回答,说是用服务器实现一个自动爬取机票并将过滤后的机票信息发送到自己的邮箱中,感觉十分有趣.由于疫情原因无法返校,加上家和学校相隔接近3000公里,再加上 ...
- Python爬取携程机票代码实例
Python爬取携程机票代码实例 现在携程的页面是通过接口传递数据的,不能直接使用xpath进行解析,需要模拟调用接口的步骤 dcity是指出发地的城市编码 acity是指目的地的城市编码 其他参数是 ...
- tkmybatis 子查询_日均20亿流量:携程机票查询系统的架构升级
携程机票查询系统,日均20亿流量,且要求高吞吐,低延迟的架构设计.于是,提升缓存的效率以及实时计算模块长尾延迟,成为制约机票查询系统性能的关键.本文是携程集团机票业务技术总监宋涛在「云加社区沙龙onl ...
最新文章
- 利用MTCNN和FaceNet实现人脸检测和人脸识别 | CSDN博文精选
- 深入理解计算机系统(3)
- Mysql data type
- Linux文件系统与日志分析(inode、inode节点耗尽故障处理、文件备份和恢复、日志文件管理)
- c++ scanf读取_使用scanf()读取内存地址并在C中打印其值
- 为什么创建线程池一定要用ThreadPoolExecutor?
- thinkpad T430s 在win8上安装ubuntu双系统(UEFI开启)
- QQ正式上线QID功能 用户可自定义专属身份卡
- android开发那些事儿(三)--manifest文件中uses-sdk和project中target详解
- 云计算的核心技术,主要有哪些?
- 2019年高三自主招生面试考生如何自我介绍?范文3篇整理
- 程序员常用的代码编辑器
- 华为总裁任正非经典语录
- 利用百度文库实现精准引流
- Mac + Go (Hello World)
- 分享66个PHP聊天室类源码,总有一款适合您
- 优秀的web前端工程师需要哪些软技能
- 第七章 将文件内容复制到另外文件
- 黄希庭:心理学的研究要走中国人自己的道路,要做中国化的心理学研究
- vreyCD 标题中的经典名句
热门文章
- 空间直线方程及其与面线的夹角
- WIFI系列协议--802.11v--无线网络管理
- ubuntu搭建基于arm-none-eabi-gcc,jlink驱动的平台,并实现stm32f103c8t6程序的编译链接和烧写
- MySQL练习题 答案和解析
- 【Scratch】《零基础入门学习Scratch》(小甲鱼)笔记二
- Kevgir(Kevg)通关记录
- 关于Roberts算子,Sobel算子,Prewitt算子的简单原理计算,附python代码
- 【python arcpy批量重分类】
- pytorch 1.7训练保存的模型在1.4低版本无法加载:frame #63: <unknown function> + 0x1db3e0 (0x55ba98ddd3e0 in /data/user
- html标签引入css样式的四种方式