小白尝试某程机票信息爬取

news2024/12/23 5:10:13

实训课需要机票数据集,网上没有,所以我选择爬取数据

此过程可谓经历的九九八十一难,也参考了不少大佬的文章,在此特别记录一下

弯路不多说,我直接讲成功的方法

找到请求url

通过控制台,最后确认下面的 url 的响应数据为机票信息

然后我们看一下请求头,发现需要 cookie 是固定的,sign ,token 和 transactionID 是算法计算得到的,下面的文章里有代码提到了 sign 和 transactionID 的处理,站内也有很多佬已经给出了答案,这里不过多叙述
吾爱破解网站的大佬发的文章

token 计算

最重要的是 token 的计算,通过搜索,发现赋值给它的是 i,打个断点调试,再通过堆栈分析,发现 i 的值就是 token

而 i 是由 window.signature 函数赋值的,所以定位这个函数

接下来我们确定一下是不是这个函数生成的 token,新建一个代码段,把上面函数的所有代码复制到该文件,再添加一段控制台输出,右键运行,发现控制台输出了类似的 token,所以就是这个函数计算出来的 token

把这段函数代码复制到代码编辑器,我这里用的 pycharm ,没有配置 node 的话记得配置一下

接下来有两种做法:

  1. 破解算法:就是断点写日志插桩,分析算法怎么来的,B站上有很多这样的教程,可以学习一下。我是小白,没做出来,而且这段函数代码足足 500 行,简直是出生!
  2. 补环境:就是模拟浏览器的环境,来跑上面的函数,因为浏览器能跑,而用 node 跑是不行的,因为缺少一系列环境。这个相对简单,所以下面介绍这种方法

补环境

接下来又有两种做法:

  1. 手动补:就是用代码编辑器跑这个函数,报啥错加啥,B站上有很多这样的教程,可以学习一下。我是小白,没做出来
  2. 工具补:这就不得不提到 V 神的插件 v_jstools ,github 上有源码下载下来,拖到谷歌浏览器里安装,记得打开浏览器开发者模式,不然无法安装。这个相对简单,所以下面介绍这种方法

按照如下勾选配置

再打开配置页面,把最下面所有的都勾上

然后清除缓存,将断点打在那个函数上,重新来调试一下,直到 加载出票价信息为止

期间只需要一直点下一步就可以

当某程票价信息加载出来后,退出调试,然后点击生成临时环境,就会自动复制到剪贴板

然后把这些环境代码粘贴到代码编辑器那个函数的上面,我这里生成了大概1700行的样子,里面有很多无用得完东西,咱们不管他,

直接运行补完后的代码,此时要是还报错,就把对应的错误行删除,完全没有影响!!!

再最后自己写个函数,方便 python 调用输出的 token

然后用 python 的 execjs 库运行 js 脚本,注意编码格式

with open('signture.js','r',encoding='utf-8') as f:
    js = f.read()
token = execjs.compile(js).call("getToken")

此时可能会报错,说 gbk 不能识别某个字符之类的,那就再加上下面的代码

import subprocess
from functools import partial
subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")

然后把 token 传给请求头,就可以美美爬取代码啦(我的主体代码用的就是上面吾爱破解大佬给的代码,再此基础上传入自己浏览器的 cookie ,useragent 和 token 就行啦)

结语

原谅我无法给出源码,律师函警告捏。

建议爬取的时候设置随机 sleep 时间大于1 秒,不然频繁爬取会弹出登录界面导致拦截爬虫。

最后有什么问题可以私信我,我看到就会回复的,加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1891709.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C# 编程中互斥锁的使用

C# 中的互斥锁 互斥锁是 C# 中使用的同步原语,用于控制多个线程或进程对共享资源的访问。其目的是确保在任何给定时间只有一个线程或进程可以获取互斥锁,从而提供互斥。 C# 中互斥锁的优点 可以使用互斥锁 (Mutex) 并享受其带来的好处。 1. 共享资源…

使用 PCA 可视化数据的分类能力

使用 PCA 探索数据分类的效果(使用 Python 代码) 「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 主成分分析 (PCA) 是数据科学家使用的绝佳工具。它可用于降低特征…

LabVIEW自动探头外观检测

开发了一套基于LabVIEW的软件系统,结合视觉检测技术,实现探头及连接器外观的自动检测。通过使用高分辨率工业相机、光源和机械手臂,系统能够自动定位并检测探头表面的细微缺陷,如划痕、残胶、异色、杂物等。系统支持多种探头形态&…

机器学习简介--NLP(二)

机器学习简介 机器学习简介机器学习例子机器学习分类有监督学习有监督学习的应用 无监督学习 机器学习常见概念数据集k折交叉验证过拟合欠拟合评价指标 机器学习简介 机器学习例子 问题: 2,4,6,8,?&#…

智能语音门锁:置入NV170D语音芯片ic 打造便捷生活新体验

一、智能门锁语音芯片开发背景 随着科技的飞速发展,传统门锁的局限性日益凸显,无法满足现代人对高效、安全生活的需求。在这样的时代背景下,智能门锁应运而生,它不仅继承了传统门锁的基本功能,更通过融入先进的科技元素…

数据库安全:MySQL权限体系划分与实战操作

「作者简介」:冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础著作 《网络安全自学教程》,适合基础薄弱的同学系统化的学习网络安全,用最短的时间掌握最核心的技术。 这一章节我们需…

基于OpenMV识别数字及程序说明

OpenMV简介 OpenMV是一个开源、低成本且功能强大的机器视觉模块。它基于STM32F427CPU,集成了OV7725摄像头芯片,能在小巧的硬件模块上,用C语言高效地实现核心机器视觉算法,并提供了Python编程接口,使得图像处理的复杂度…

k8s_集群搭建_k8s管理前端_dashboard安装部署---分布式云原生部署架构搭建017

然后再去安装一下一个dashboard,有了这个以后,操作k8s集群就不用 一直敲命令了 可以看到上面的命令拿过来,然后 执行就可以了 然后如果执行慢,可以直接先去下载,使用wget,然后再去 也可以在浏览器访问,把内容拿到,然后 下面是内容: # Copyright 2017 The Kubernetes Author…

金融科技企业的数据治理与合规挑战

随着科技的发展,金融科技行业在我国得到了迅猛发展。金融科技创新不仅为消费者带来了便捷的金融服务,也极大地提高了金融行业的运营效率。然而,在金融科技发展的同时,数据治理与合规挑战也日益显现。本文将深入探讨金融科技企业在…

84 柱状图中最大的矩形

题目 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 输入:heights [2,1,5,6,2,3] 输出:10 解释:最大的矩…

华为OD机试 - 最长合法表达式 - 双指针(Java 2024 D卷 100分)

华为OD机试 2024D卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(D卷C卷A卷B卷)》。 刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测…

竞赛选题 交通目标检测-行人车辆检测流量计数 - 竞赛选题

文章目录 0 前言1\. 目标检测概况1.1 什么是目标检测?1.2 发展阶段 2\. 行人检测2.1 行人检测简介2.2 行人检测技术难点2.3 行人检测实现效果2.4 关键代码-训练过程 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计…

苹果Mac电脑能玩什么游戏 Mac怎么运行Windows游戏

相对于Windows平台来说,Mac电脑可玩的游戏较少。虽然苹果设备的性能足以支持各种大型游戏,但由于系统以及苹果配套服务的限制,很多游戏无法在Mac系统中运行。不过,借助虚拟机软件,Mac电脑可以突破系统限制玩更多的游戏…

Python | Leetcode Python题解之第213题打家劫舍II

题目: 题解: class Solution:def rob(self, nums: List[int]) -> int:def robRange(start: int, end: int) -> int:first nums[start]second max(nums[start], nums[start 1])for i in range(start 2, end 1):first, second second, max(fi…

Rural Access Index (RAI)农村通达指数

农村通达指数(RAI) 简介 农村通达指数(RAI)是全球交通领域最重要的发展指标之一。它是目前可持续发展目标中唯一一个直接衡量农村通达性的指标,通过评估农村人口的四季道路通达性来实现。在 2015 年作为可持续发展目…

二手物品交易小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,管理员管理,商品信息管理,论坛管理,收货地址管理,基础数据管理 微信端账号功能包括:系统首页,商品信息&…

币界网讯,预计以太坊现货 ETF 将于 7 月中旬推出

刚刚 ETF Store 总裁 Nate Geraci 在 X (前Twitter)平台上宣布,备受数字货币市场期待的SEC以太坊现货 ETF提案,将于7 月中旬通过美国证券交易委员会(SEC)批准。Nate Geraci透露修订后的 S-1 文件将于 7 月 …

Java高级重点知识点-20-File

文章目录 File类 File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 基本方法 构造方法: public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于目标鲁棒的电动汽车及基站储能联合参与电力市场的决策模型 》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

SpringCloud进阶篇

文章目录 网关快速入门创建模块引入依赖修改启动类配置路由路由过滤(一般不用) 自定义GlobalFilter登录校验登录校验过滤器 微服务获取用户信息保存用户信息到请求头拦截器获取用户信息 OpenFeign传递用户信息配置共享添加共享配置拉取共享配置 配置热更新添加配置到Nacos配置热…