大佬们请教哈我通过 python 爬虫爬取一个网页视频,它的流程是通过解析网页内容获取到 m3u8 的连接,然后再请求 m3u8 的内容,再分别下载每个 ts 文件。由于每个 ts 文件是加密了,加密的 key 的信息也在 m3u8 那个文件中,通过模拟请求去获取这个 key 的内容,返回了错误码 403 ,但是我单独新建一个脚本,去请求这个 key 的内容,就能返回 200 ,目前百思不解,我已经和朋友确定了我新建脚本使用的 headers 就是第一个脚本生成的,所以可以排除是 headers 的问题。
1
leyoumake1997 339 天前
那可能有 ssl 指纹校验
|
2
fbichijing 337 天前
> 返回了错误码 403 ,但是我单独新建一个脚本,去请求这个 key 的内容,就能返回 200
这种描述听起来好模糊。把这两个包同时抓到,然后去比较一下正常访问的数据包。这样? |
3
wanchenyi OP @fbichijing 我描述可能有些不清楚,我的意思是:我在第一个脚本中有很多爬取的步骤,因为是一个完整的流程,但在爬取 key 的时候,返回了 403 错误,我开始以为是我 headers 的原因,我就在第一个脚本里把 headers 打印出来 ,还有请求 Url,然后新建 了 B 脚本,B 脚本只有动作,就是使用我打印出来的 headers 作为请求的 headers ,发送 get 请求,结果就成功了。
|
4
fbichijing 336 天前 via iPhone
@wanchenyi 爬虫的本质在我看来是数据包的拟合。你想办法把你用 python 发的那两个数据包抓到,然后和正常情况下抓到的数据包详细对比一下,看看是否存在一些差异。你平时应该有一个喜欢使用的抓包软件,把 python 发的包也代理到那边。
|