去哪儿,模拟登录(扫码登录)

2023-10-26

声明:本文仅限交流学习使用,请勿使用在任何非法商业活动,禁止用于非法用途。否则后果自负。如有侵权,请告知删除,谢谢!

一,去哪儿 出行类大厂,为了安全,查询很多信息需要身份校验,有多种登陆方式  

1.1  如查询航班信息时,自动弹出登录窗口,会有验证码验证

1.2  点击首页登陆按钮,跳转到如下登录页面,其中1 / 2 两种方式 需要滑动验证

 1.3  由于此网站风控较为严格,利用技术抓取网站信息,对帐号登录次数 ,验证发码发送次数等都有限制,今天咱们分析下 ,上图中第 4 种扫描二维码的方式

 二 ,扫码登录流程分析

请求登录页, 观察网络请求,查看发送了那些求请求,寻找二维码的图片在哪里加载 ,关键请求都需要哪些参数

经过观察思考,基本流程如下:

                                                                      图2.1

图2.2 

                                                                         图2.3

                                                                         图2.4

                                                                         图2.5

 到此基本流程就清楚了

接下来开始一步步模拟请求

首先请求登录页,不需要什么参数可直接请求,成功后返回 appid 和两个 cookie

 然后去获取 sessinId  (图2.2)

然后获取Token   (图2.3)

 现在就可以 获取 二维码了, 请求参数中需要 上一步的 Token 和时间戳,  注意请求Cookie 多了ctt_june 和 ctf_june ,但是经过测试 不带也没关系

 

 接下来就是 每隔 0.5 秒去判断  二维码 是否被扫描  (图2.4)

 这时候 打开项目路径下找到下载的二维码 ,拿出手机扫描后 ,二维码状态由 未扫描 变成 预登录

点击确认登录后返回了相关数据

 注意这个扫码过程  二维码状态变化 浏览器看不到 ,一旦你扫了码  浏览器会清空很多数据 , 在pycharm 中可以看到,   再注意!!图2.5    最后一次刷新二维码状态的请求(就是扫码确认登陆后) 返回了有关用户信息的cookies,并自动请求去哪网主页

 最后模拟请求 去哪儿 主页

 到此 扫码登录 自动化登录 成功

(注意这个过程 ctt_june / ctf_june, 的生成时机,虽然登陆时不携带 也能成功,但是后面抓取某些其他数据时,需要用到)

码字不易  觉着有用 留个赞 !!!

欢迎 私信交流

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

去哪儿,模拟登录(扫码登录) 的相关文章

  • 我正在用 python 编写一个电报机器人

    我想通过Python编写一个电报机器人 但它不起作用 import telebot bot telebot TeleBot my token bot message handler content types text def sendin
  • python列表理解和extend() [重复]

    这个问题在这里已经有答案了 深入学习 Python 2 7 1 但未能理解这一点 几个小时 gt gt gt a 1 2 gt gt gt b 3 4 gt gt gt gt gt gt a extend b 0 gt gt gt a 1
  • Python中的键盘可中断阻塞队列

    It seems import Queue Queue Queue get timeout 10 键盘可中断 ctrl c 而 import Queue Queue Queue get 不是 我总是可以创建一个循环 import Queue
  • Unpickle 二进制文件为文本[重复]

    这个问题在这里已经有答案了 我需要对基本上如下所示的系统进行一些维护 复杂的遗留Python程序 gt 二进制pickle文件 gt 另一个复杂的遗留Python程序 这需要准确弄清楚中间 pickle 文件中的内容 我怀疑文件格式比生成和
  • Python - 如何将双引号附加到字符串并存储为新字符串?

    我正在使用 Python 2 6 并且想将双引号附加到字符串并将其存储为新的字符串变量 我不想打印它 但稍后在我的 python 脚本中使用它 例如 a apple b some function a gt b would be equal
  • 如何将 NaN 数组插入 numpy 二维数组

    我试图在二维数组中的特定位置插入任意数量的 NaN 值行 我正在将来自微控制器的一些数据记录在 csv 文件中并使用 python 进行解析 数据存储在 3 列 2D 数组中 如下所示 122 0 1 0 47 0 123 0 1 0 47
  • Python lmfit:拟合 2D 模型

    我正在尝试将二维高斯拟合到一些灰度图像数据 该数据由一个二维数组给出 lmfit 库实现了一个易于使用的模型类 它应该能够做到这一点 不幸的是文档 http lmfit github io lmfit py model html http
  • 模拟导入失败

    我该如何制作import pkg失败moduleA py 我可以打补丁pkg如果从中导入某些内容则会失败 否则不会失败 test py import os import moduleA from unittest mock import p
  • 有没有更快的方法将数字转换为名称?

    以下代码定义了映射到数字的名称序列 它的设计目的是获取一个号码并检索一个特定的名称 该类通过确保名称存在于其缓存中来进行操作 然后通过索引到其缓存中来返回名称 问题在这 如何在不存储缓存的情况下根据数字计算出名称 该名称可以被认为是一个以
  • 插入失败“OperationalError:没有这样的列”

    我尝试使用我尝试修复的姓名和电话创建一个数据库 但它会随时向我重播 File exm0 py line 14 in
  • 如何使用Django模板作为组件?

    我有 5 个模板 index html detail html tag html login html register html and a 基本 html 所有 5 个模板都会扩展基本 html 索引 html 详细信息 html 标签
  • 分别计算男女宿舍

    我想要的结果是这样的 males 1990 Q1 value Q2 value Q3 Value Q4 Value females Q1 value Q2 value Q3 Value Q4 value 如果任何值不存在则默认值 0 imp
  • 对二进制数的字符串表示进行按位运算 python 2.7

    我想对二进制数的两个字符串表示执行按位或 但我不知道如何将字符串转换为原始二进制 a 010110 b 100000 a b 应该产生 110110 然后我想计算 on 位的数量 这应该返回 4 您可以使用内置的将字符串转换为二进制int
  • Mac OS 上的 pybluez 安装错误

    我尝试安装pybluez使用以下命令 pip install pybluez sudo easy install pybluez 但对于这两个命令我最终都会出错 环境 Mac OSX 10 9 1 Python 2 7 点日志 cc fno
  • 帮助我在 Python 中实现反向传播

    EDIT2 新的训练集 Inputs 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3 0 0 0 4 0 1 0 0 0 1 0 1 0 1 0 2 0 1 0 3 0 1 0 4 0 2 0 0 0 2 0 1 0 2 0 2
  • python字符串包含双引号字符

    我的输入字符串由字符组成 包括双引号和单引号 和 B SS JU PQ AD DDSFD ABD E J 但是 当我从文本文件打开上述输入并打印它时 第三行中的双引号 被打印为 xe2 x80 x9d 我的目标是进行简单的字符计数 B 2
  • 如何在Python中检查元组是否包含元素?

    我试图找到可用的方法 但找不到 没有contains 我应该使用index 我只想知道该项目是否存在 不需要它的索引 You use in if element in thetuple whatever you want to do
  • Snakemake根据字典输入和输出

    我正在尝试重命名 Snakemake 管道中的一些文件 假设我有三个文件 FileA txt FileB txt FileC txt 我希望根据字典重新命名它们dict A 0 B 1 C 2 to get RenamedFile0 txt
  • 在大型文本文件中查找重复记录

    我在一台 Linux 机器 Redhat 上 并且有一个 11GB 的文本文件 文本文件中的每一行包含单个记录的数据 并且该行的前 n 个字符包含该记录的唯一标识符 该文件包含略多于 2700 万条记录 我需要验证文件中不存在具有相同唯一标
  • Python list.extend() 是保序的吗?

    我想知道扩展函数是否保留两个列表中的顺序 gt gt list 1 2 3 gt gt list extend 4 5 gt gt list 1 2 3 4 5 扩展总是这样工作吗 Yes list extend just extends给

随机推荐

  • QT实现sqlite数据库连接池

    ifndef CONNECTIONPOOL H define CONNECTIONPOOL H FileName 数据库连接池 Function 获取连接时不需要了解连接的名字 支持多线程 保证获取到的连接一定是没有被其他线程正在使用 按需
  • MySQL 远程登录与其常用命令的介绍

    以下的文章主要介绍的是MySQL 远程登录与其常用命令的介绍 MySQL 远程登录与其常用命令之所以能在很短的时间内被人们广泛的应用 原因也是因为它们的独特功能 以下的文章就有对其相关内容的介绍 MySQL 远程登录及常用命令 第一招 My
  • Unbantu22.04使用DevStack一键部署OpenStack(使用nat静态IP)

    d 学习openstack的小白 第一步就遇到了大麻烦 下载并部署Openstack 传统的基于组件 一个个的安装配置更加麻烦 使用DevStack工具 一键部署可能是个不错的选择 But devstack部署期间总是会出现各种各样的错误
  • JavaScript面向对象

    JavaScript面向对象 面向过程 面向过程就是讲需求一步一步自己完全实现 如 一堆衣服 需要自己一件一件洗 面向对象 面向对象是把有共同特征的方法抽取为类 比如 一堆衣服 都需要洗 创建洗衣机类 女朋友类 让她洗 类的定义和使用 定义
  • 机器学习 day09(如何设置学习率α,特征工程,多项式回归)

    1 常见的错误的学习曲线图 上方两个 当关于迭代次数的学习曲线图 出现波浪型或向上递增型 表示梯度下降算法出错 该情况可由 学习率 过大 或代码有bug导致 2 常用的调试方法 选择一个非常非常小的学习率 来查看学习曲线是否还是有误 即在某
  • uni-app网络请求的封装

    uni app网络请求的封装 这几天没事干 就去小程序开发小团队里看看 顺便看了一下代码 在网络请求上发现了一些问题 差点没忍住破口大骂 最终想了想 他们之前没做过 都是第一次就算了 其实是安慰自己而已 网络请求都写在page里 每个请求都
  • 池化方法总结(Pooling)

    在卷积神经网络中 我们经常会碰到池化操作 而池化层往往在卷积层后面 通过池化来降低卷积层输出的特征向量 同时改善结果 不易出现过拟合 为什么可以通过降低维度呢 因为图像具有一种 静态性 的属性 这也就意味着在一个图像区域有用的特征极有可能在
  • JAVA-while循环语句

    while循环语句用法比for语句用起来简单 格式也对的简单 while 判断条件 循环体 public class WhileTest public static void main String args int i 1 while i
  • 将tensorpack的inference改为pytorch

    最近在跑一个OCR模型 模型是用Tensorpack写的 模型做inference的时候 显存 速度都不是很理想 改成pytorch后 显存占用 速度比之前好了很多 记录下改inference的过程遇到的一些坑 将pb文件转为pth文件 i
  • Python 垃圾回收机制

    众所周知 我们当代的计算机都是图灵机架构 图灵机架构的本质 就是一条无限长的纸带 对应着我们今天的存储器 在工程学的演化中 逐渐出现了寄存器 易失性存储器 内存 和永久性存储器 硬盘 等产品 其实 这本身来自一个矛盾 速度越快的存储器 单位
  • 【易售小程序项目】请求包创建+登录功能实现【基于若依管理系统开发】

    文章目录 说明 请求包创建 创建文件夹 请求工具 request js 登录功能实现 请求方法 页面 涉及知识点 错误提示 前端校验 设置 token 到客户端缓存中 路由跳转 如果已经登录过 访问登录页直接跳转到首页 同项目其他文章 说明
  • 服务器配置填坑 wget: unable to resolve host address解决方法,最终成功

    项目上线 手续要配置服务器 甲方机房在单位内 无法使用公司云服务器 于是配置坑来了 配环境下载包 ubutun 16显示如下错误 wget unable to resolve host address wget 无法解析主机地址 这就能看出
  • 51单片机智能蓝牙小车

    作为大一电子小趴菜 在和队友学习制作蓝牙小车过程中遇到了许多困难 本文既为大家避坑 也作为团队总结 这篇文章分为两部分 1 组装篇 2 代码篇 思维导图 组装篇 先准备好一块电源拓展板 用于为电机驱动模块和降压模块连接电源 小车底盘可淘宝定
  • element ui 表单验证触发方式:trigger: ‘change‘和trigger: ‘blur‘区别

    推荐阅读 Vue2 7正式发布 代号为 Naruto 火影忍者 原生支持 Composition API 终于可以在Vue2项目中使用Vue3的新特性了 真香 南北极之间的博客 CSDN博客今天 Vue 创始人尤雨溪刚刚正式发布了 Vue
  • HTML+CSS+JavaScript复习笔记持更(十)——CSS3常用属性之定位

    定位 定位主要是用来设定元素在页面上的位置的 其代码为 position 定位有三种定位方式 static 无特殊定位 按照dom排序 absolute 绝对定位 往前面找最近的 有定位属性的元素 以该元素的起点为起点 绝对定位 脱离文档流
  • JS中sort()方法原理及使用

    sort 方法用于对数组的元素进行排序 并返回数组 默认排序顺序是根据字符串UniCode码 因为排序是按照字符串UniCode码的顺序进行排序的 所以首先应该把数组元素都转化成字符串 如有必要 以便进行比较 语法 arrayObject
  • 计算机组成原理(1)-软件设计(二十二)

    程序设计语言 软件设计 二十一 https blog csdn net ke1ying article details 129344983 计算机组成原理在软件设计考试分值占比较高 主要会考 1 数据的表示 数据进制转化 日常生活中使用的都
  • MAC 下 OpenCV4 配置 VScode 失败 Xcode 成功记录(2021年12月)

    2022 1 22更新 VScode 设置成功 详情请见 https blog csdn net qq 42067550 article details 122634801 问题描述 安装好了 OpenCV 但是在 VScode 里面花了3
  • 线程的状态及阻塞

    之前提到了线程和进程 那就提一下线程的状态吧 线程状态通常分为五种 New 新建状态 创建线程对象 该线程的生命周期开始 此时该线程已经有了相应的内存空间和其他资源 Runnable 就绪状态 线程对象创建后 调用该线程的start 方法就
  • 去哪儿,模拟登录(扫码登录)

    声明 本文仅限交流学习使用 请勿使用在任何非法商业活动 禁止用于非法用途 否则后果自负 如有侵权 请告知删除 谢谢 一 去哪儿 出行类大厂 为了安全 查询很多信息需要身份校验 有多种登陆方式 1 1 如查询航班信息时 自动弹出登录窗口 会有