当前位置: 首页 > news >正文

华尔街日报请求分析

案例地址:www.wsj.com

文章详情页访问后返回的响应内容中出现了Continue reading your article with a WSJ membership,导致无法获取完整内容。
在这里插入图片描述

经过观察,发现有时可以返回完整内容,有时则不返回。

案例内容:本文内容则对该请求进行分析和对页面中的数据加密进行解析。

文章目录

    • 页面分析
    • 解密定位
    • 密钥key
    • 流程总结


页面分析

页面中有一段script存放了NEXT_DATA 。

NEXT_DATA 格式化
在这里插入图片描述

articleData 文章一些属性信息,标题、简介、时间、语言等
articleLinks 文章中的超链接
articleMeta 文章标签,出现的人名和编码
articleNewsFrontData 文章右侧的推荐栏
encryptedDataHash 未知加密数据
encryptedDocumentKey 未知加密key
hatData 顶部导航栏
savingsUnitedCouponsData 赞助提供
snippet 文章片段,未加密的部分
trendingNews 热门新闻


解密定位

搜一下关键词encryptedDataHash、encryptedDocumentKey

在这里插入图片描述

通过 dangerouslySetInnerHTML 插入DOM

在这里插入图片描述

encryptedDocumentKey 和 marketVolatility 在页面返回的 pageProps 中 。

在这里插入图片描述

继续调试找解密

在这里插入图片描述
往下走,发现核心位置。
在这里插入图片描述

打印查看,返回了解密后的内容。

在这里插入图片描述


密钥key

在 https://www.wsj.com/client 接口中注册。
在这里插入图片描述

但是不是一直能返回,有时候就不给了,猜测和cookie有关。清空后再刷新页面。


流程总结

文章详情页面中有部分加密数据

加密方法:AES-256-CTR
密文:在文章页面中的 NEXT_DATA 中
密钥:在 /client 接口中注册
向量:在 NEXT_DATA中

请求流程:
1、先访问文章页面拿到 encrypteddocumentkey 、 content 、IV
2、通过 encrypteddocumentkey 注册 documentKey
3、通过 documentKey、IV 解密 content


本案例的webpack可以直接调用,但是有分包,需要合并一下调用的方法。

代码随后再贴吧

相关文章:

  • Ubuntu18.04安装深度学习环境(Anaconda、显卡驱动、CUDA、Tensorflow-GPU等)
  • Linux关于yum和vim入门的一些问题
  • 网络请求(四)—Socket
  • Python中的模块
  • JavaEE、Spring
  • setTimeout和setInterval区别,以及定时器的传参功能
  • 【数学分析笔记04】数列与数列极限
  • 1、设计模式的简介
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • deepstream--nvinfer
  • python+vue+elementui企业会议管理系统django
  • centos 部署java环境,拷贝jar包并运行
  • 支持在线写SQL的Oracle学习免费网站(个人常使用)
  • ESP8266-Arduino编程实例-SHT20温湿度传感器驱动
  • 【web-代码审计】(14.5)PHP
  • Android交互
  • C++入门教程(10):for 语句
  • Consul Config 使用Git做版本控制的实现
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • echarts的各种常用效果展示
  • emacs初体验
  • ES2017异步函数现已正式可用
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • laravel 用artisan创建自己的模板
  • SAP云平台里Global Account和Sub Account的关系
  • XForms - 更强大的Form
  • 初探 Vue 生命周期和钩子函数
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 深度解析利用ES6进行Promise封装总结
  • 实习面试笔记
  • 我的zsh配置, 2019最新方案
  • 小程序开发之路(一)
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #{}和${}的区别是什么 -- java面试
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .net 7 上传文件踩坑
  • .NET 8.0 发布到 IIS
  • .NET CLR Hosting 简介
  • .NET Core WebAPI中封装Swagger配置
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net的socket示例
  • .NET轻量级ORM组件Dapper葵花宝典
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)