節前的最后一天班,整點沒用的知識吧!

這不是前些天和女朋友賭氣,做了個抖音去水印工具嘛,《手寫一個抖音視頻去水印工具,千萬別剛一個程序員》,后來把它部署到線上讓小伙伴們體驗了下,結果反響還挺好,不少人對去抖音水印有了個新的認識,還有不少好心的小伙伴擔心我被抖音爸爸收拾了,哈哈~ 感謝大家關心目前暫時安全。

盡管不是什么太有技術含量的東西,但做出來有人用有人賞識,心里多少還是有點小成就感。

既然抖音去水印是這樣,那其他平臺是不是原理也差不多呢?在好奇心的驅動下,我開始對火山小視頻下手了!

(建議用谷歌瀏覽器),工具線上預覽效果:http://47.93.6.5:8888/index

在這里插入圖片描述

找了一個火山小視頻的分享鏈接,還按照抖音去水印的思路來分析,我們來看看它會不會也有一個像抖音一樣的視頻詳情接口?

https://share.huoshan.com/hotsoon/s/Ig5POVmqLb8/

URL 貼到瀏覽器上, F12 進入控制臺發現還真有一個詳情接口,判斷item_id 就是視頻的唯一ID。

https://share.huoshan.com/api/item/info?item_id=6873627998554164487&t=1601453437526&_signature=pcZzzAAgEAVNHFGxrDixf6XGc9AAPrB
在這里插入圖片描述

再看它的返回結果,發現只有封面 cover 和 水印視頻地址 URL 信息并不是很詳細。 上次分析抖音的無水印視頻 URL 運氣的成分比較大,這次火山的鼓搗了挺長時間,真是無從下手,最后沒辦法只能咨詢百度了。

https://api.huoshan.com/hotsoon/item/video/_reflow/?video_id=v0200c3e0000bti0gft6aoef18eb3k0g&line=0&app_id=0&vquality=normal&watermark=2&long_video=0&sf=5&ts=1601453598&item_id=6873627998554164487

網上說把_reflow 替換成 _playback 就可以,我嘗試了一下替換沒生效,水印依然在。但我看到有一個眼熟的參數 watermark,這不就是水印的意思嘛,去掉這個參數又試了一下成功了。

https://api.huoshan.com/hotsoon/item/video/_playback/?video_id=v0200c3e0000bti0gft6aoef18eb3k0g&line=0&app_id=0&vquality=normal&watermark=2&long_video=0&sf=5&ts=1601453598&item_id=6873627998554164487

后臺的代碼比抖音的少很多,因為這個步驟并沒有那么復雜。

    @Override
    public ResultDto hsParseUrl(String redirectUrl) throws Exception {
        redirectUrl = CommonUtils.getLocation(redirectUrl);
        ResultDto dyDto = new ResultDto();
        if (!StringUtils.isEmpty(redirectUrl)) {
            /**
             * 1、拿到itemId
             */

            String itemId = CommonUtils.hSMatchNo(redirectUrl);
            StringBuilder sb = new StringBuilder();
            sb.append(CommonUtils.HUO_SHAN_BASE_URL).append(itemId);
            /**
             * 2、itemId 拼接視頻詳情接口
             */

            String videoResult = CommonUtils.httpGet(sb.toString());
            HSResult hsResult = JSON.parseObject(videoResult, HSResult.class);
            dyDto.setVideoPic(hsResult.getData().getItem_info().getCover());
            /**
             * 3、替換URL地址
             */

            String replace = hsResult.getData().getItem_info().getUrl().replace("_reflow""_playback");
            dyDto.setVideoUrl(replace.substring(0, replace.indexOf("&")));
            dyDto.setDesc("火山小視頻");
        }
        return dyDto;
    }

好了今天就到這,本文源碼在 公眾號回復【源碼】自取

如果對你有用,歡迎 在看、點贊、轉發 ,您的認可是我最大的動力。

整理了幾百本各類技術電子書,送給小伙伴們。關注公號回復【666】自行領取。和一些小伙伴們建了一個技術交流群,一起探討技術、分享技術資料,旨在共同學習進步,如果感興趣就加入我們吧!

關注,邁開成長的第一步

文章轉載自微信公眾號程序員內點事