网页视频抓取脚本(【】请求url参数的对比过程分段请求链接)
优采云 发布时间: 2021-09-25 18:22网页视频抓取脚本(【】请求url参数的对比过程分段请求链接)
工具:google浏览器+fiddler抓包工具
注意:这里没有发布代码,[只是想法!!!】
原创网址 = [链接到您可以随机找到的电影] 将其称为原创网址
开始分析:
打开fiddler,然后打开google,输入url,按F12.得到如下图:
分析上图内容:首先通过fiddler抓包,我们知道真实的播放地址是一段一段的,如上图3号,然后将播放地址的一小段复制到浏览器打开它,并得到一个 403 错误。可以看出需要重新打开链接。先构造一些东西,然后才能通过代码发送请求,否则会被拒绝。因此,来到上面的第4个图标,分析请求url。首先分析不同视频段的url差异。对比发现只有[ts_seg_no]参数不同,参数从0开始,逐渐+1,但结束尚不得而知。然后分析原创网址在不同时间打开时所请求的视频真实地址的网址的区别。旧的方法是在新标签页中再次打开原创URL,并比较请求的两次打开的URL。请求url参数对比过程略,参数对比结果如下:
可以看到每次开启时,psid和vkey这两个参数都在变化,代表什么还是未知数。不同视频段同时打开的请求URL,ts_start、ts_end、ts_seg_no参数也有变化。虽然知道变化规律,但不确定三个参数什么时候结束,所以目前还不得而知。分析到这里,可以确定在分割的视频链接之前,肯定有链接或者js文件加载了这些未知参数或者这些未知的请求url链接。于是尝试在网络中搜索psid和vkey这两个值,有一部分链接是这样的[/playlist/m3u8?],然后点击查看响应,如下图:
恰巧响应的内容只是视频片段的请求链接。所以现在不需要重构视频片段的请求链接了,关注上图中的url链接【暂且称之为播放url】,只要能获取到播放url,那么这个任务就可以了完成。
然后开始分析播放url,如下图所示:
看起来有点复杂,所以我用了之前的比较分析url的方法,得到了播放url参数的差异。区别如下:
分析这个链接,链接中唯一需要重构的参数就是psid和ups_key。于是开始分析这两个参数的来源。
因此,在google network中通过ctrl+f搜索psid和ups_key,发现在名为[]的链接中出现了两个参数,这个链接[称之为js链接]如下图;
这个js链接是一个js文件。点击后查看响应,发现响应是一个json格式的js函数,如下图:
然后我在响应中搜索了psid和ups_key的值,找到了之前的播放链接,并给出了一张图:
好的!现在一切都清楚了,只要能拿到这个js链接的响应信息,再提取m3u8_url再请求,提取响应【这个响应才是真正的视频播放地址】。所以现在我们要弄清楚如何获得这个js链接,
问题的出现
嗯。. . ? (我猜...)从响应中可以看到json格式是mtopjsonp1(),那么这个mtopjsonp1()是什么?它是一个js函数吗?如果是js函数,那么你可以尝试搜索看看【我试过了,但是没有看到完全相同的函数】,你尝试请求这个js链接吗?【这个链接也看了,很长,看起来好复杂,这条路先不考虑】,如果不考虑前两条,那你就得开始考虑重构播放url了,毕竟, play 只要url找到psid和ups_key这两个参数就可以了。于是我开始思考:如果这两条路径存在,那应该是在某个js函数中,于是我开始在网络中搜索psid和ups_key这两个参数。好吧,我发现了 psid 参数的痕迹。如下所示:
我确实在另一个 js 文件中找到了 psid,但它不是很相似。而且就算是,如果对js不是很熟悉,我也无法弄清楚psid是如何生成的。所以,先放这个变量,再搜索。ups_key,不幸的是,这个变量在js文件中找不到,所以我们需要回到猜测【如何找到请求那个很长很复杂的js链接的方法】,为什么复杂呢?看看下面的图片:
它仍然是一个 GET 请求来发送一个指向数据的链接。下图为链接的参数(先绝望):
老实说,看到这样的链接,我真的不想得到它。
不过我还是得花点时间弄清楚,不然我的爬虫技术就到此为止了。(我还是得做,但是一想到爬虫的问题就忍不住很伤心,没人能问。技术瓶颈只能自己在未知的时间里堆积起来) 继续。
写在最后
我现在在爬虫破解js方向有技术瓶颈。上次破解搜索网站也是js加密的一个参数,因为无法解决js加密,最后失败了。想了想,技术瓶颈只能是现在开始学js,自己学做js加密数据。如此周而复始,想必js破解指日可待。以后学了js,自己加密,自己破解。
另外,文章里写的完全是我自己的想法。可能是对的,也可能是错的,可能是其中的一部分等等,如果你不幸读了我的文章,不幸看到这个地方,我真诚地希望你能纠正错误。
另外,如果后续破解成功,会更新这个文章。