油猴加密
⑴ js cookie反爬实战
取自《JavaScript Cookie 反爬实战》
在进行网页爬虫时,遇到反爬虫策略是常见的挑战。Cookie 作为其中的一种手段,其功能不仅限于存储用户身份信息或保持会话状态,还被用于辨别合法用户与爬虫程序。大部分爬虫默认只会请求 HTML 文本资源,而忽略了主动携带 Cookie 的过程。服务器通过校验请求头中的 Cookie 值来区分两者的访问行为,这种机制在 Web 应用中广泛采用。当服务器接收到请求时,会检查请求头的 Cookie 值是否符合预设规则。如果通过验证,服务器将正常返回资源;反之,则将请求重定向至首页,并在响应头中添加相应的 Cookie 值,确保后续请求携带正确的 Cookie。
在实战中,首先使用开发者工具观察目标网页的接口 URL 和 HTML 结构。发现目标 URL 类似于 UUID,通过 HTML 中的 a 标签可以获取这些 URL。接下来,分析具体信息在 HTML 中的表现形式,明确爬取目标。
随后,设计一个基本的爬虫程序尝试获取数据。然而,面临反爬策略,遇到了难以绕过的挑战。使用工具如 Burp Suite 进行逐参数测试,最终定位到关键的 cookie 参数 spvrscode=。当该参数为空时,服务器返回 JS 代码;当 cookie 过期则显示非授权访问提示。为了获取正确的 cookie 值,使用之前编写过的 cookie 处理脚本,定位 cookie 生成机制。
清理数据与 cookie,注意重定向刷新可能导致 hook 失效。使用油猴脚本或在每个断点执行 hook 脚本,最终定位到 cookie 值的生成过程。进一步追踪加密过程,发现使用了 CryptoJS 库进行 DES 加密。通过查阅文档与案例,了解加密流程。确认使用标准算法,使用 Python 实现同样功能。
分析发现,密钥和加密参数 b 来自 JavaScript 内部。至此,编写爬虫程序成为可能。选择直接调用 JS 代码或使用正则匹配提取所需数据。补全环境依赖后,成功获取 cookie 值。考虑到 spvrscode 与 sessionid 一一对应,设计类以统一会话,确保请求一致性。
在实际操作中,得到 HTML 数据。至此,实现了对反爬虫策略的应对,通过深入理解与技术手段,成功获取目标网页内容。
⑵ 针对m3u8视频加密的一些尝试
本文分享关于m3u8视频加密的尝试与解决办法。
在加密过程中遇到的困难之一是play.js的动态加载,其链接随时间戳变化,这增加了调试难度,每次断点都难以成功设置,且无法进行代码覆盖。
另一个挑战是解密密钥的复杂性,通常AES128的密钥应为16位,但在某些加密方式下,密钥可能以32位的arraybuffer形式出现,难以追踪。
开发者工具的检测机制也构成了一定的困扰。
在解决问题的尝试中,我们发现了一些方法:首先,可以尝试在特定函数中设置断点,如果无法成功断点,则可以考虑采用替代策略。在浏览器中通过代码覆盖功能尝试修改代码行为,观察控制台输出,了解加密过程。
其次,使用油猴插件进行视频流的hook,实现视频的下载,此方法的GitHub链接已提供。
此外,采用另一种方法,即定位到视频流加载点并输出,转换为mp4格式,这一策略是由一位群内高手分享的。
值得注意的是,使用某些方法可能因检测机制而被阻止,导致无法播放视频,因此在应用时需谨慎。
总结,面对m3u8视频加密的问题,通过设置断点、代码覆盖、使用油猴插件或直接输出视频流等策略,可以实现有效的破解与处理。