某拍房数据采集

某拍房数据采集

  • 某拍房数据采集
    • 声明
    • 1.逆向目标
    • 2.寻找加密位置
    • 3.分析加密参数
    • 4.python代码书写

某拍房数据采集

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

1.逆向目标

点击翻页发包发现sign参数加密

在这里插入图片描述

2.寻找加密位置

通过全局搜索关键字发现sign参数特别多,很难找到我们需要的加密位置,可以通过在发包中的发起程序中找到所需要的js文件再进行搜索

在这里插入图片描述

进入js文件搜索后,下断点调试,阿里系加密token也是关键词

在这里插入图片描述

3.分析加密参数

根据控制台分析

o.token + "&" + a + "&" + s + "&" + n.data

o.token可以直接在请求时的cookie里面获取_m_h5_tk

在这里插入图片描述

a的值应该为时间戳,s的值应该为固定参数

在这里插入图片描述

n.data为表单数据中的值

在这里插入图片描述

通过扣代码将加密代码拿出来,js代码如下

p = function(e) {function t(e, t) {return e << t | e >>> 32 - t}function n(e, t) {var n, o, r, i, s;return r = 2147483648 & e,i = 2147483648 & t,s = (1073741823 & e) + (1073741823 & t),(n = 1073741824 & e) & (o = 1073741824 & t) ? 2147483648 ^ s ^ r ^ i : n | o ? 1073741824 & s ? 3221225472 ^ s ^ r ^ i : 1073741824 ^ s ^ r ^ i : s ^ r ^ i}function o(e, o, r, i, s, a, p) {return e = n(e, n(n(function(e, t, n) {return e & t | ~e & n}(o, r, i), s), p)),n(t(e, a), o)}function r(e, o, r, i, s, a, p) {return e = n(e, n(n(function(e, t, n) {return e & n | t & ~n}(o, r, i), s), p)),n(t(e, a), o)}function i(e, o, r, i, s, a, p) {return e = n(e, n(n(function(e, t, n) {return e ^ t ^ n}(o, r, i), s), p)),n(t(e, a), o)}function s(e, o, r, i, s, a, p) {return e = n(e, n(n(function(e, t, n) {return t ^ (e | ~n)}(o, r, i), s), p)),n(t(e, a), o)}function a(e) {var t, n = "", o = "";for (t = 0; 3 >= t; t++)n += (o = "0" + (e >>> 8 * t & 255).toString(16)).substr(o.length - 2, 2);return n}var p, u, c, d, l, f, m, g, y, v;for (v = function(e) {for (var t, n = e.length, o = n + 8, r = 16 * ((o - o % 64) / 64 + 1), i = new Array(r - 1), s = 0, a = 0; n > a; )s = a % 4 * 8,i[t = (a - a % 4) / 4] = i[t] | e.charCodeAt(a) << s,a++;return s = a % 4 * 8,i[t = (a - a % 4) / 4] = i[t] | 128 << s,i[r - 2] = n << 3,i[r - 1] = n >>> 29,i}(e = function(e) {e = e.replace(/\r\n/g, "\n");for (var t = "", n = 0; n < e.length; n++) {var o = e.charCodeAt(n);128 > o ? t += String.fromCharCode(o) : o > 127 && 2048 > o ? (t += String.fromCharCode(o >> 6 | 192),t += String.fromCharCode(63 & o | 128)) : (t += String.fromCharCode(o >> 12 | 224),t += String.fromCharCode(o >> 6 & 63 | 128),t += String.fromCharCode(63 & o | 128))}return t}(e)),f = 1732584193,m = 4023233417,g = 2562383102,y = 271733878,p = 0; p < v.length; p += 16)u = f,c = m,d = g,l = y,f = o(f, m, g, y, v[p + 0], 7, 3614090360),y = o(y, f, m, g, v[p + 1], 12, 3905402710),g = o(g, y, f, m, v[p + 2], 17, 606105819),m = o(m, g, y, f, v[p + 3], 22, 3250441966),f = o(f, m, g, y, v[p + 4], 7, 4118548399),y = o(y, f, m, g, v[p + 5], 12, 1200080426),g = o(g, y, f, m, v[p + 6], 17, 2821735955),m = o(m, g, y, f, v[p + 7], 22, 4249261313),f = o(f, m, g, y, v[p + 8], 7, 1770035416),y = o(y, f, m, g, v[p + 9], 12, 2336552879),g = o(g, y, f, m, v[p + 10], 17, 4294925233),m = o(m, g, y, f, v[p + 11], 22, 2304563134),f = o(f, m, g, y, v[p + 12], 7, 1804603682),y = o(y, f, m, g, v[p + 13], 12, 4254626195),g = o(g, y, f, m, v[p + 14], 17, 2792965006),f = r(f, m = o(m, g, y, f, v[p + 15], 22, 1236535329), g, y, v[p + 1], 5, 4129170786),y = r(y, f, m, g, v[p + 6], 9, 3225465664),g = r(g, y, f, m, v[p + 11], 14, 643717713),m = r(m, g, y, f, v[p + 0], 20, 3921069994),f = r(f, m, g, y, v[p + 5], 5, 3593408605),y = r(y, f, m, g, v[p + 10], 9, 38016083),g = r(g, y, f, m, v[p + 15], 14, 3634488961),m = r(m, g, y, f, v[p + 4], 20, 3889429448),f = r(f, m, g, y, v[p + 9], 5, 568446438),y = r(y, f, m, g, v[p + 14], 9, 3275163606),g = r(g, y, f, m, v[p + 3], 14, 4107603335),m = r(m, g, y, f, v[p + 8], 20, 1163531501),f = r(f, m, g, y, v[p + 13], 5, 2850285829),y = r(y, f, m, g, v[p + 2], 9, 4243563512),g = r(g, y, f, m, v[p + 7], 14, 1735328473),f = i(f, m = r(m, g, y, f, v[p + 12], 20, 2368359562), g, y, v[p + 5], 4, 4294588738),y = i(y, f, m, g, v[p + 8], 11, 2272392833),g = i(g, y, f, m, v[p + 11], 16, 1839030562),m = i(m, g, y, f, v[p + 14], 23, 4259657740),f = i(f, m, g, y, v[p + 1], 4, 2763975236),y = i(y, f, m, g, v[p + 4], 11, 1272893353),g = i(g, y, f, m, v[p + 7], 16, 4139469664),m = i(m, g, y, f, v[p + 10], 23, 3200236656),f = i(f, m, g, y, v[p + 13], 4, 681279174),y = i(y, f, m, g, v[p + 0], 11, 3936430074),g = i(g, y, f, m, v[p + 3], 16, 3572445317),m = i(m, g, y, f, v[p + 6], 23, 76029189),f = i(f, m, g, y, v[p + 9], 4, 3654602809),y = i(y, f, m, g, v[p + 12], 11, 3873151461),g = i(g, y, f, m, v[p + 15], 16, 530742520),f = s(f, m = i(m, g, y, f, v[p + 2], 23, 3299628645), g, y, v[p + 0], 6, 4096336452),y = s(y, f, m, g, v[p + 7], 10, 1126891415),g = s(g, y, f, m, v[p + 14], 15, 2878612391),m = s(m, g, y, f, v[p + 5], 21, 4237533241),f = s(f, m, g, y, v[p + 12], 6, 1700485571),y = s(y, f, m, g, v[p + 3], 10, 2399980690),g = s(g, y, f, m, v[p + 10], 15, 4293915773),m = s(m, g, y, f, v[p + 1], 21, 2240044497),f = s(f, m, g, y, v[p + 8], 6, 1873313359),y = s(y, f, m, g, v[p + 15], 10, 4264355552),g = s(g, y, f, m, v[p + 6], 15, 2734768916),m = s(m, g, y, f, v[p + 13], 21, 1309151649),f = s(f, m, g, y, v[p + 4], 6, 4149444226),y = s(y, f, m, g, v[p + 11], 10, 3174756917),g = s(g, y, f, m, v[p + 2], 15, 718787259),m = s(m, g, y, f, v[p + 9], 21, 3951481745),f = n(f, u),m = n(m, c),g = n(g, d),y = n(y, l);return (a(f) + a(m) + a(g) + a(y)).toLowerCase()}
console.log(p('1'))

测试后其实就是标准的md5加密

在这里插入图片描述

4.python代码书写

大致流程为:

1.先请求主页获取对应cookie值

2.将o.token + "&" + a + "&" + s + "&" + n.data中所需要的参数拼接传入到我们写好的js代码中封装成sign参数再发送请求即可。

下面是关键代码,如需完整代码请私信

在这里插入图片描述

获取结果如下

在这里插入图片描述

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

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

相关文章

flask创建数据库连接池

flask创建数据库连接池 在Python中&#xff0c;您可以使用 Flask-SQLAlchemy 这个扩展来创建一个数据库连接池。Flask-SQLAlchemy 是一个用于 Flask 框架的 SQLAlchemy 操作封装&#xff0c;实现了 ORM(Object Relational Mapper)。ORM 主要用于将类与数据库中的表建立映射关系…

接口自动化测试-Jmeter+ant+jenkins实战持续集成(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、下载安装配置J…

uniapp实现带参数二维码

view <view class"canvas"><!-- 二维码插件 width height设置宽高 --><canvas canvas-id"qrcode" :style"{width: ${qrcodeSize}px, height: ${qrcodeSize}px}" /></view> script import uQRCode from /utils/uqrcod…

Stable-Diffusion-Webui部署SDXL0.9报错参数shape不匹配解决

问题 已经在model/stable-diffusion文件夹下放进去了sdxl0.9的safetensor文件&#xff0c;但是在切换model的时候&#xff0c;会报错model的shape不一致。 解决方法 git pullupdate一些web-ui项目就可以&#xff0c;因为当前项目太老了&#xff0c;没有使用最新的版本。

【【51单片机AD/DA的分析】】

51单片机AD/DA的分析 看似单片机实验&#xff0c;其实是要学好数电 模数转换 与 数模转换 运算放大器 DA的转换就是利用运算放大器实现的 输出电压v0-(D7~D0)/256 x (VrefxRfb)/R D7~D0 就是我们控制的按键看输入多少 然后再划分256份 Vref是我们设置的一个基准电压 PWM 这种…

用牛鲨水豚赚取SUI的机会又来喽,500万SUI奖励等你来领!

刚刚结束的第一轮Bullshark Quest真是一次惊心动魄的体验&#xff01;我们非常感激社区成员的积极参与以及对Sui生态系统的关注。此轮获奖者的奖励已于美国时间2023年7月28日&#xff0c;在Quest门户网站上公布。参与者点击“Claim”即可将奖励领取至Sui钱包。请注意&#xff0…

Opencv Win10+Qt+Cmake 开发环境搭建

文章目录 一.Opencv安装二.Qt搭建opencv开发环境 一.Opencv安装 官网下载Opencv安装包 双击下载的软件进行解压 3. 系统环境变量添加 二.Qt搭建opencv开发环境 创建一个新的Qt项目(Non-Qt Project) 打开创建好的项目中的CMakeLists.txt&#xff0c;添加如下代码 # openc…

neo4j教程-Cypher操作

Cypher基础操作 Cypher是图形存储数据库Neo4j的查询语言&#xff0c;Cypher是通过模式匹配Neo4j数据库中的节点和关系&#xff0c;从而对数据库Neo4j中的节点和关系进行一系列的相关操作。 下面&#xff0c;通过一张表来介绍一下常用的Neo4j操作命令及相关说明&#xff0c;具…

docker 部署 mysql8.0 无法访问

文章目录 &#x1f5fd;先来说我的是什么情况&#x1fa81;问题描述&#x1fa81;解决方法&#xff1a;✔️1 重启iptables✔️2 重启docker &#x1fa81;其他有可能连不上的原因✔️1 客户端不支持caching_sha2_password的加密方式✔️2 my.conf 配置只有本机可以访问 &#…

销售易和管易云接口打通对接实战

销售易和管易云接口打通对接实战 来源系统:销售易 销售易CRM支持企业从营销、销售到服务的全流程自动化业务场景&#xff0c;创新性地利用AI、大数据、物联网等新型互联网技术打造双中台型CRM&#xff1b;既能帮助B2B企业连接外部经销商、服务商、产品以及最终用户&#xff0c;…

虚拟局域网VLAN

概述 广播域 使用一个或多个以太网交换机互连接起来的交互式以太网&#xff0c;其所有站点都属于同一个广播域&#xff0c;随着交换式以太网规模的扩大&#xff0c;广播域响应扩大&#xff0c;从而形成一个巨大的广播域。 但是巨大的广播域会带来很多的弊端&#xff1a; 广…

redis 高级篇4 分布式锁

一 redis架构图 1.1 redis的架构图 1.2 分布式锁满足条件 1.独占性&#xff1b;2.高可用&#xff1b;3.防死锁&#xff1b;4.不乱抢&#xff1b;5.重入性 二 分布式锁的案例情况 2.1 分布式锁1:单机分布式部署 描述&#xff1a; 使用lock锁和synchronized&#xff0c;单机…

在海外如何让应用在Google Play上得到推荐

在Google Play商店中获得推荐&#xff0c;可以为应用程序带来额外的知名度。 1、应用程序的质量。 确保我们的应用是高质量的并且具有最新的Google Play功能和更新。另外需要应用程序在所有Android设备上兼容。需要将应用程序本地化&#xff0c;从而满足世界各地用户的需求&am…

HDFS中namenode安全模式

HDFS中namenode安全模式 安全模式的现象探究step1step2step3step4 安全模式的概述控制进入时间和离开条件安全模式自动进入离开安全模式手动进入离开 安全模式的现象探究 step1 HDFS集群在停机状态下&#xff0c;使用hdfs -daemon命令逐个进程启动集群&#xff0c;观察现象首…

【Kaggle】Kaggle数据集如何使用命令语句下载?

一、Kaggle数据集如何下载 1.1 问题的起因 最近看到了 Google 组织的 Kaggle 比赛&#xff0c;想自己试一下&#xff0c;但是数据集太大了&#xff0c;将近有370G的数据。直接下载的话&#xff0c;网速太慢&#xff0c;可能要下载3-4天&#xff0c;所以萌生了用命令语句下载的…

【前端知识】React 基础巩固(三十九)——React-Router的基本使用

React 基础巩固(三十九)——React-Router的基本使用 一、Router的基本使用 Router中包含了对路径改变的监听&#xff0c;并且会将相应的路径传递给子组件。 Router包括两个API&#xff1a; BrowserRouter使用history模式 HashRouter使用hash模式&#xff08;路径后面带有#号…

RBAC三级树状菜单实现(从前端到后端)未完待续

1、表格设计 RBAC 2、前端路由 根据不同的用户id显示不同的菜单。 根据路由 3、多级菜单 展示所有权限&#xff0c;并且根据当前用户id展示它所属的角色的所有菜单。 前端树状展示 思路&#xff1a; 后端&#xff1a;传给前端map&#xff0c;map里1个是所有菜单&am…

[golang gin框架] 44.Gin商城项目-微服务实战之后台Rbac微服务之权限的增删改查微服务

上一节讲解了[golang gin框架] 43.Gin商城项目-微服务实战之后台Rbac微服务之管理员的增删改查以及管理员和角色关联,这里讲解权限管理Rbac微服务权限的增删改查微服务 一.实现后台权限管理Rbac之权限增删改查微服务服务端功能 1.创建Access模型 要实现权限的增删改查,就需要…

NIDEC COMPONENTS尼得科科宝滑动型DIP开关各系列介绍

今天AMEYA360对尼得科科宝电子滑动型DIP开关各系列参数进行详细介绍&#xff0c;方便大家选择适合自己的型号。 系列一、滑动型DIP开关 CVS 针脚数&#xff1a;1, 2, 3, 4, 8 安装类型&#xff1a;表面贴装&#xff0c;通孔 可水洗&#xff1a;无 端子类型&#xff1a;PC引脚(只…

RPC与REST有什么区别?

原文&#xff1a;RPC与REST有什么区别&#xff1f; 背景 好多开发的同学在工作中&#xff0c;经常分不清RPC和REST的区别&#xff0c;导致经常沟通不在一个层次上。甚至有些同学把这两个当成同一个东西。 RPC与REST的区别&#xff1f; 对比名称 rpc rest 备注 架构风格 RP…