华尔街日报请求分析

案例地址:www.wsj.com

文章详情页访问后返回的响应内容中出现了Continue reading your article with a WSJ membership,导致无法获取完整内容。
file
经过观察,发现有时可以返回完整内容,有时则不返回。

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


页面分析

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

NEXT_DATA 格式化
file

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


解密定位

搜一下关键词encryptedDataHash、encryptedDocumentKey

file

通过 dangerouslySetInnerHTML 插入DOM

file

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

file

继续调试找解密
file
往下走,发现核心位置。

file

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

file


密钥key

https://www.wsj.com/client 接口中注册。
file
但是不是一直能返回,有时候就不给了,猜测和cookie有关。清空后再刷新页面。


流程总结

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

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

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


源码下载

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

【温馨提示:此处隐藏内容需要付费订阅后才能查看!】

点赞

发表回复