【问题标题】:Scraping a json request `ak` parameter value抓取 json 请求 `ak` 参数值
【发布时间】:2019-10-13 04:16:36
【问题描述】:

我目前正在尝试抓取嵌入式 m3u8 url 路径以进行自学。

到目前为止,我设法确定了请求会产生带有 m3u8 信息的 json 响应。

例如,https://headlines.yahoo.co.jp/videonews/ann?a=20190527-00000051-ann-soci 页面会发出以下请求:

https://feapi-yvpub.yahooapis.jp/v1/content/1579522?appid=dj0zaiZpPVZMTVFJR0FwZWpiMyZzPWNvbnN1bWVyc2VjcmV0Jng9YjU-&output=json&space_id=2078710307&domain=headlines.yahoo.co.jp&ak=e25b66ca8b37b7a383feecf4e084fe95&device_type=1100&thumb_width=1204&thumb_height=676&thumb_priority=l&thumb_bd=0

为了发出成功的请求,contentid (1579522)、appidspace_iddevice_typeak 参数是必需的。我设法抓取了 id 和 device_type 值,但不知道从哪里获得 ak 值,我猜它代表访问密钥。关于如何获得这个值的任何想法?

旁注:我通过不同的浏览器访问该页面,它们都在请求中产生了相同的ak 参数值,所以我猜测该值不是唯一链接到每个会话的,但我可能是错的。

提前致谢!

【问题讨论】:

    标签: javascript json web-scraping hash m3u8


    【解决方案1】:

    神秘参数ak 是通过首先将space_iddomain 组合成一个字符串(例如"2078710307_headlines.yahoo.co.jp")而创建的。然后它通过位于player.script.js 的混淆器运行。

    混淆器看起来有点复杂,似乎故意让人难以理解。下面是混淆器主函数的调试器屏幕截图,以及它调用的子例程。

    虽然有点令人生畏,但将其转换为 Python 程序似乎并非不可能,这样您就可以通过混淆 youtube-dl 中所需的任何 space_iddomain 来获得 ak。祝你好运。

    【讨论】:

    • 对一些混淆代码的搜索让我明白它是一个 md5 哈希生成器函数。感谢您的帮助。
    猜你喜欢
    • 2021-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    相关资源
    最近更新 更多