华尔街日报请求分析

案例地址:www.wsj.com

文章详情页访问后返回的响应内容中出现了Continue reading your article with a WSJ membership,导致无法获取完整内容。
华尔街日报请求分析_第1张图片

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

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

文章目录

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


页面分析

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

NEXT_DATA 格式化
华尔街日报请求分析_第2张图片

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


解密定位

搜一下关键词encryptedDataHash、encryptedDocumentKey

华尔街日报请求分析_第3张图片

通过 dangerouslySetInnerHTML 插入DOM

华尔街日报请求分析_第4张图片

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

华尔街日报请求分析_第5张图片

继续调试找解密

华尔街日报请求分析_第6张图片
往下走,发现核心位置。
华尔街日报请求分析_第7张图片

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

华尔街日报请求分析_第8张图片


密钥key

在 https://www.wsj.com/client 接口中注册。
华尔街日报请求分析_第9张图片

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


流程总结

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

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

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


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

代码随后再贴吧

你可能感兴趣的:(前端,html,安全,javascript)