企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
如何写一个短视频去水印解析的接口,这里为大家提供一下思路。仅供参考! 由于平常刷皮皮虾比较多,所以这里拿皮皮虾做演示,其他短视频去水印思路也大致相同。 **获取链接:** 去皮皮虾获取视频的分享链接,这一点相信大家都会。 ![](https://wx3.sinaimg.cn/large/007WUzxmly1gnxuqk9c7dj30ef0avgpw.jpg) 例如获取到的链接:https://h5.pipix.com/s/hukXsy **打开链接:** 使用Edge浏览器打开我们获取的视频链接,当然你也可以选择其他浏览器,使用Edge是因为他的开发者工具是中文对小白友好方便进行演示。 打开链接后可以看到地址栏发生了变化,说明这个链接进行了一次跳转。 此时的链接变成了: https://h5.pipix.com/item/6706391587317881095?app\_id=1319&app=super&timestamp=1561611874&user\_id=52595782540&carrier\_region=cn&region=cn&language=zh&utm\_source=weixin **开始抓包:** 我们按下键盘的F12唤出开发者工具选择网络(Network) 选择保留日志(Preserve log)然后刷新页面,我们会抓到网页所有发送的请求。 ![](https://wx1.sinaimg.cn/large/007WUzxmly1gnxuqmfhddj311g0dwdkm.jpg) **得到接口:** 按下键盘Ctrl+F检索视频标题,我们会看到一个请求链接。 **得到链接:** https://h5.pipix.com/bds/webapi/item/detail/?item\_id=6706391587317881095&source=share 双击或者右键打开这个链接,你会发现出现一堆JSON。(一般官方接口大都是返回JSON格式) 大家可以去:https://www.json.cn/ 格式化一下方便查看。 格式化之后我们可以按下键盘Ctrl+F搜索video这样我们就得到了没有水印的视频链接。 ![](https://wx3.sinaimg.cn/large/007WUzxmly1gnxuqlejmgj312w0kvgse.jpg) ![](https://wx2.sinaimg.cn/large/007WUzxmly1gnxuqlqh9gj312w0kv7c5.jpg) 最后写成接口思路: ~~~ // 获取的分享链接 https://h5.pipix.com/s/hukXsy // 跳转后的链接 https://h5.pipix.com/item/6706391587317881095?app_id=1319&app=super&timestamp=1561611874&user_id=52595782540&carrier_region=cn&region=cn&language=zh&utm_source=weixin // 我们抓到的官方接口 https://h5.pipix.com/bds/webapi/item/detail/?item_id=6706391587317881095&source=share 是不是我们获取跳转后的链接item/和?app_id中的这串数字 填写到官方接口item_id=和&source中间就得到了无水印的视频下载地址,省掉了中间抓包的繁琐,有了思路后用世界上最好的语言写出了一个接口。 ~~~ 是不是我们获取跳转后的链接item/和?app\_id中的这串数字 填写到官方接口item\_id=和&source中间就得到了无水印的视频下载地址,省掉了中间抓包的繁琐,有了思路后用世界上最好的语言写出了一个接口。 **演示代码:** ~~~ <?php header("Access-Control-Allow-Origin: *"); // 既然是接口肯定得允许跨域 $url = @$_GET['url']; // 获取get传过来的参数 $loc = get_headers($url, true)["location"]; // 这里我们用PHP内置函数获取HTTP请求中重定向location的内容 也就是跳转后的链接 // get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组。 $left = 'item/'; // 获取 item/ 后面的内容 $right = '?app_id'; // 获取 ?app_id 前面的内容 $id = GetBetween($loc,$left,$right); // 截取后的内容赋值给$id $data =curl('https://h5.pipix.com/bds/webapi/item/detail/?item_id='.$id); // curl请求官方接口赋值给$data $arr = json_decode($data,true); // 把JSON转换成数组 $Json = array( "title" => $arr["data"]["item"]["video"]["text"], "cover" => $arr["data"]["item"]["origin_video_download"]["cover_image"]["url_list"]["0"]['url'], "url" => $arr["data"]["item"]["origin_video_download"]["url_list"]['0']['url'], ); $Json = json_encode($Json,JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE); echo stripslashes($Json); return $Json; // 这段是截取某些内容 百度来的 function GetBetween($content,$start,$end) { $r = explode($start, $content); if (isset($r[1])) { $r = explode($end, $r[1]); return $r[0]; } return ''; } // 这段是发送curl 百度来的 function curl($url) { $con=curl_init((string)$url); curl_setopt($con,CURLOPT_HEADER,False); curl_setopt($con,CURLOPT_SSL_VERIFYPEER,False); curl_setopt($con,CURLOPT_RETURNTRANSFER,true); curl_setopt($con,CURLOPT_TIMEOUT,5000); $result = curl_exec($con); return $result; } ?> ~~~ **测试请求:** ~~~ 访问链接你的域名/ppx?url=https://h5.pipix.com/s/hukXsy/ 就会返回如下数据 { "title":"标题交给你们了。", "cover":"https://p9-ppx.byteimg.com/img/mosaic-legacy/2ab8400068ec7576befea~272x480_q80.jpeg", "url":"http://v3-ppx.ixigua.com/35c007900ce2fabfe64f00734bfb639b/5f16f7aa/video/tos/hxsy/tos-hxsy-ve-0076/41064fc495f04f029e8629421b1352fd/?a=1319&br=1041&bt=347&cr=0&cs=0&dr=3&ds=1&er=&l=20200721211141010014043146120A948E&lr=&mime_type=video_mp4&qs=0&rc=anl4PGd0bDl4bjMzZGYzM0ApZGk1NTRpNjs5N2k4NDxnZGctYGsucWdjNDVfLS0yMS9zczMxLV82XjA0NDA0XzMuY2I6Yw%3D%3D&vl=&vr=" } ~~~ 有些其他短视频会直接把真实地址输出在网页源代码里,直接用正则匹配