为什么会有这篇文章的诞生呢?或许是因为我闲的,想找点东西练练手吧!
段友出征,寸草不生
,这是属于曾经每一位段友的暗号。不过现在也一去不复返了,取而代之的就是这个皮皮虾了,还是原来的样子,但是已经没有了原来的味道。
话不多说,进入今天的主题。每当刷着皮皮虾的时候,遇到好看的视频想保存,但是保存下来都会有水印,虽然不影响整体视频观看效果,但是看着就是碍眼,感觉像贴了一块牛皮癣一样。
以前在网上找的无水印解析工具也都经常失灵。作为开发人员的我,怎么能忍,所以想着自己做个工具,毕竟自己动手才能丰衣足食嘛!
首先打开皮皮虾随便找了个视频,复制分享链接到电脑chrome浏览器中打开。
啥?为什么随便找的视频小姐姐都那么漂亮?我反手就是一个巴掌,皮友发的视频哪有不好看的。(是不是该给点广告费!)
常规操作F12也打开,刷新一下,观察所有请求的链接。
通过上图可以观察到,软件内复制的链接是一个短链接,相当于一个短网址一样,哎!说到短网址,欢迎查看的另一篇文章《一小时快速撸出一个短网址生成项目》 ,我滴娘来,偏了,跑题了。回过来继续看,请求这个短网址会看到有一个302重定向的过程,重定向到哪呢?就是Response中location的参数,这个参数就是再次请求的一个地址。继续查看这个地址会返回什么。
不难发现这个地址响应的就是一个页面,content-type: text/html; charset=utf-8
,也就是整个页面,那好吧,你返回一整个页面,那我就看看页面源代码中能不能找到真实无水印的视频地址吧。
不看不知道,一看一懵逼,这他娘的谁能找得到有用信息,得,还是继续往下看看其他请求都是干什么的吧!
选中XHR查看所有的接口请求,发现第一个接口返回的json中包含了所有想要的信息,发帖人信息,帖子信息,有水印的视频链接、视频封面图链接,无水印的视频链接、视频封面图链接等等。都包含在了这一个接口中,好啊,这不就是想要的吗,但是我又思考,代码该怎么写呢,怎么通过一个分享的短链接去获取到这个接送呢,像那种一个链接就返回一串json的请求还好操作,直接代码请求,获取相应json就可以了。
但是这个短链接302重定向了一次真实地址,然后又请求了一个接口才得到的数据啊!
通过分析真实地址和接口地址找到了突破口,先看看这两个地址之间的联系,上地址:
真实地址:https://h5.pipix.com/item/6762160710051961101?app_id=1319&app=super×tamp=1582362058&user_id=5516739140&carrier_region=cn®ion=cn&language=zh&utm_source=weixin
json接口:https://h5.pipix.com/bds/webapi/item/detail/?item_id=6762160710051961101&source=share
不难发现两者的联系已经很明显了,就是那串数字item_id=6762160710051961101
,而且json接口是GET请求,无任何其他参数了。
所以思路就有了,能不能通过重定向的地址获取item_id,然后进行拼接json接口的地址再请求呢?后来敲代码证实是可以的。
不过这地方有两个问题:1.怎么能获取到重定向的网址。2.怎么通过地址截取出来那串数字。
其实这些问题都不是问题,哈哈,第一个问题直接获取response中的location,第二个问题直接正则匹配就完事了。还有写代码时,直接不带header的去请求接口是不返回json数据的,必须加上User-Agent
才好使。
所以到此就基本结束了,有了思路,代码一眨眼就搞定了。下面关门,放代码。代码整体很简单,就不多说了。
我把这个功能放到了我的助聊软件 上面去了,软件软件也不仅这一个功能,还有很多丰富干货,欢迎大家下载使用,多多支持。
1 | /** |