【微信读书】数据内容接口逆向调试02

news2025/1/10 0:30:05

需求爬取微信读书的某一本书的整本书的内容

增强需求,大批量爬取一批书籍内容

众所周知微信读书是一个很好用的app,他上面书籍的格式很好,质量很高。

本人充值了会员但是看完做完笔记每次还得去翻很不方便,于是想把书籍内容弄下来,方便做笔记学习,本文只做学习交流,不做任何商用,不会披露关键细节代码。如有问题欢迎互相私聊交流:mastercy1
 

01.找到请求,解析响应

02.解析参数,模拟请求

好,响应我们会解析了,我们尝试模拟一下请求吧

右键copy 复制 curl(base curl)

然后放到爬虫工具库-spidertools.cn 爬虫工具库解析成python request

这网站很好用,推荐一波

直接请求 没有返回值,好那么三步走 看一眼参数 看一眼headers 看一眼cookies

playload里是这样

headers里是这样

先观察发现网址里的参数

https://weread.xx.com/web/reader/6d032db0813ab814cg01374dkecc32f3013eccbc87e4b62e

和playload里的b+'k'+c 一模一样,然后多翻几页,换几本书试试看果然一样

这里推测,前面一部分就是的某种id,后面是翻页信息

ct显然时间戳,ps,pc发现几个参数的格式都差不多应该是一种处理手法

r和s看不出来

好准备进去找找,我们还是看堆栈,我们第一次点的三第一个8.22xxx.js对吧

那个里面已经有参数了,你们说明在之前就生成了,所以我们之间看上一个8.22xxx.js

如果那个地方还没有生成参数,你们追这两个js中间的部分就可以找到参数生成的地方

然后第一遍先一直往下走看看整个逻辑,一直走一直走,大概的逻辑就是取了很多环境,然后不停的在大数据里取方法的真实的名字,然后走到这里,看起来就是组装参数的部分了

往下在滚动看看,对的下面就是四个异步请求。回来看参数咋产生的

b、c 、ct 、pc 、ps 、r 、s 、st

//r和ct 直接用就行
'r':Math['pow'](parseInt(0x2710 * Math['random']()), 0x2)
'ct': parseInt(new Date()['getTime']() / 0x3e8)

//b和c是传入的 bookID和 章节number
'b': _0x54418a['e'](_0x47c16a)
'c': _0x54418a['e'](_0xfdca00)

//ps pc是取的传入的对象的某一个属性
'ps': _0xedab09[_0x3f76('0x266')]
'pc': _0xedab09[_0x3f76('0x206')]

//st 在下面 第二个请求是改成1

s是把上面的书籍转成了str传到了一个方法里

好我们先看处理b和c的e 方法就这样自己还原一下即可

再看s,先进去,也是还原一下就行

然后就到了ps和pc了,psvts和pclts

我们重新进一下上一个8.22xxx.js的断点,其实看一下bookinfo里已经有bookid和ps和pc了

在往上看其实他也是传进来的

往上走 看上面的8.22xxx.js 这个 堆栈 ,我们看还是已经存在的了,而且这个是this,那么如果这样我们就要看一下这个控制流了

还是第一行打断点看看,进来的时候有没有,得从8.22xxx.js那个文件的函数最上面进

发现进来的时候还是已经有了,怎么回事看起来,在别的地方就加载完了,重新回到那个函数发现就是进到这里

我们直接搜psvts和pclts发现他定义在上面

这里有两个思路一个是直接hook这个参数,从最开始调到出来参数的地方那个方法替换掉xxx

Object.defineProperty(xxxxxx['state']['reader'],"pclts",{
  set(){
    debugger;
  }
})

另外一个直接搜吗,往下找找看,最后都会发现是定义在这边的

再观察一下 这个 xxxx[e] 方法和处理b和c的e方法是同一个在看一下传入

因为这个是几乎开局就定义的

我们得直接刷新来进会方便很多对这两个方法打上断点以后f5

使用function xxx(){} 将无限debugger里的每个方法重写掉 大概6-7个方法以后

会直接进入 pclts 这里

打印一下入参是时间戳

ok然后我们看这个方法叫 'UPDATEREADERPAGECLIENTTIMESTAMP'

什么意思 浏览器时间

然后合理怀疑一下为什么没有断在 psvts上面? 打印一下上面的方法名,服务器时间,这玩意会不会是返回的呢

好 重新进 一搜索 有了,就在初始化的时候 这是pc还没有

接下来就是还原算法和模拟请求了,这里其实也不用一定要服务器返回其实也可以自己取当前时间减一点点

在拼接好参数 请求e0,1,2,3

再将

e0,1,3加起来解码就是正文内容了

总结先观察,小心求证,大胆假设

技巧上

无限debugger有很多种技巧过,有些麻烦的网站不光要hook set函数还需要打日志断点

思路上

要搞清楚自己在追谁,不要漫无目的的往下走,追对了参数,就像是追对了人

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

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

相关文章

专注写作,快速上线:Cpolar+Inis帮助你在Ubuntu上建立博客网站

文章目录 前言1. Inis博客网站搭建1.1. Inis博客网站下载和安装1.2 Inis博客网站测试1.3 cpolar的安装和注册 2. 本地网页发布2.1 Cpolar临时数据隧道2.2 Cpolar稳定隧道(云端设置)2.3.Cpolar稳定隧道(本地设置) 3. 公网访问测试总…

信息系统项目管理师(第四版)教材精读思维导图-第十一章项目成本管理

请参阅我的另一篇文章,综合介绍软考高项: 信息系统项目管理师(软考高项)备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 11.1 管理基础 11.2 管理过程 11.3 规划成本管…

2023-简单点-怎么知道树莓派是什么cpu架构?

树莓派是几位? getconf LONG_BIT https://qengineering.eu/install-ncnn-on-raspberry-pi-4.html

Redis过期时间的思考

当我们把 Redis 当做缓存来使用时,设置过期时间是必须的,但具体设置多少的过期时间呢,针对不同的场景会有不同的决策。 虚假一个场景,我们基于用户的地理位置推荐附近的陌生主播,用户可以线下去找主播沟通。当系统第一…

【网络技术】心跳机制(入门讲解)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

GB28181,sdk,设备集成和平台测试

本文章主要测试记录集成gb28181的arm端,用公开的平台测试gb2818的视频传输等 系统: 平台:windows10 设备:arm-cortex-A7,1.3G 平台软件:SkeyeVSS gb28181的协议等,在这里就不具体讨论,网上有很多资料,可自行查阅。 本文只是测试一下&am…

抖音小店:庞大用户基数与强大商业化能力的未来发展

抖音小店作为抖音平台的一项新业务,已经取得了一定的成绩,并且具备着广阔的未来发展空间。以下是四川不若与众对抖音小店未来和发展的分析。 首先,抖音小店的用户基数庞大,这为其未来的发展提供了坚实的基础。截至2021年底&#x…

SpringBoot自动配置入门

文章目录 前言自动包规则原理及初始化自动配置1.SpringBootConfiguration2.ComponentScan3.EnableAutoConfiguration(1)AutoConfigurationPackage(2)Import(AutoConfigurationImportSelector.class) 4.修改默认配置 总结&#xff…

SAP ABAP根据网址跳转至对应的网页

SAP ABAP根据网址跳转至对应的网页 程序代码: DATA: lv_openurl TYPE c LENGTH 300,lv_tempurl TYPE char50." Url可由多个字符串组合lv_openurl https://www.baidu.com/.CALL FUNCTION CALL_BROWSEREXPORTINGurl lv_openurl * WINDOW_…

白炽灯护眼还是led护眼效果好?精选专业护眼台灯

不得不说现在的小孩子近视率是真的很高,根据目前的数据统计全国儿童青少年总体的近视率为52.7%,这个近视率是非常高的!而导致这么多孩子近视的原因有很多,例如长时间学习用眼、玩耍电子产品、不良的用眼习惯等等,其实还…

虚函数表存储的位置(解析C++内存分配及其编译分段)

先上结论:C虚函数表保存在.rdata只读数据段。编译时期由编译器确定虚函数表。虚函数表属于类,类的所有对象共享这个类的虚函数表。 c/c的内存分配 栈(stack):又称堆栈,栈是由编译器自动分配释放&#xf…

hive location更新hive元数据表详解

1.hive location更新方式 一、通过修改表DDL: alter table table_name set location hdfs://nm:8020/table_path 二、直接修改hive 的meta info: update DBS set DB_LOCATION_URI replace(DB_LOCATION_URI,"oldpath","newpath")update SDS…

如何将两台Mac显示器设置为单个屏幕配置

​能够在扩展模式下将两个或多个外部显示器连接到Mac是一种解放的屏幕体验,但当每个显示器仍然像独立显示器一样工作时,会导致沮丧。 在这里,我们向你展示如何通过对系统设置进行一些简单的更改,使两个扩展屏幕看起来像一个屏幕。…

如何get一个终身免费续期的定制数字人?

想拥有一个“数字分身” 吗?给你一个终身免费续期的特权。 定制周期长?训练、运营成本高?成片效果生硬?无法应用于实际场景? 随着AIGC技术的快速发展,虚拟数字人的生成效率不断提高,训练成本逐…

Android平台GB28181接入SDK

华脉智联推出的Android平台GB28181接入SDK,可实现不具备国标音视频能力的 Android终端,通过平台注册接入到现有的GB/T28181—2016服务,可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工…

苹果和富士康加速撤离的后果显现了,或将失去中国这个最大市场

日前网络流传的消息指特定群体将不能在公众场合使用iPhone,这直接导致苹果的市值暴跌万亿元人民币,凸显出中国市场对苹果的巨大影响,如今中国已是苹果最大的收入来源市场,今年二季度中国首次超过美国成为iPhone销量第一的市场。 苹…

网络协议百科全书:28张图带你搞懂TCP

大家好,我的网工朋友。 不仅仅是网工,只要你是做IT相关的工作,肯定都离不开网络。 那网络中最重要的协议,大概非TCP莫属,谁去面试没被问过网络协议的相关问题? 谁没买过那本最经典的《TCP/IP详解》 。 …

HAM高可用配置及故障切换

1.什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中,MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的…

AIGC:【LLM(七)】——Baichuan2:真开源可商用的中文大模型

文章目录 一.模型介绍二.模型部署2.1 CPU部署2.2 GPU部署 三.模型推理3.1 Chat 模型推理3.2 Base 模型推理 四.模型量化4.1 量化方法4.2 在线量化4.3 离线量化4.4 量化效果 五.模型微调5.1 依赖安装5.2 单机训练5.3 多机训练5.4 轻量化微调 一.模型介绍 Baichuan 2 是百川智能…

Learning From Data 中英文对照 1.THE LEARNING PROBLEM (第6页)

1.1. PROBLEM SETUP 图1.3:在二维输入空间中直线可分数据的感知器分类(A)一些训练示例将被错误分类(红色区域的蓝色点,反之亦然),用于定义分离线的权重参数的某些值。(B)。最后一种假设将所有的训练样本分类正确。(O是1,x是-1) …