实践:扒抖音无水印视频的方法

CrazyMing 2019-11-01
0条评论 129 次浏览
CrazyMing 2019-11-010条评论 129 次浏览

想将抖音里的视频分享出来, 可是上面加了抖音的水印,很难看,于是打开抖音app研究抓包,
使用charls抓包工具代理https请求,无水印的视频地址找是找到了,但是又想自己做一个获取无水印视频的接口,不然每次想要无水印的视频都要来抓包, 可惜研究半天没有在抓包抓到的视频地址中找到任何规律

快要放弃的时候 竟然在抖音的 分享页里边找到了现成的接口

使用谷歌浏览器打开手机调试模式 然后打开 抖音分享页 发现一个异步请求:
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=6758410476016749831&dytk=4634eadaa36b25a00fd770f1d96b90350c9c3565c5de0e00b967f8f6108b6f20

在该接口的返回结果里 可以看到 play_addr.url_list 就是 两个 该视频的 无水印地址,直接复制地址拿去用就好了…

"play_addr": {
"uri": "v0200f500000bn5b51r82vu88ogv9ol0",
"url_list": [
"https://aweme.snssdk.com/aweme/v1/play/?video_id=v0200f500000bn5b51r82vu88ogv9ol0&line=0&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1",
"https://api.amemv.com/aweme/v1/play/?video_id=v0200f500000bn5b51r82vu88ogv9ol0&line=1&ratio=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1"
]
},

前面 那个 api地址中 有两个参数 item_ids 和 dytk 这两个参数意思应该就是 视频id 和 抖音token,

使用谷歌调试工具搜索js代码 搜索:dytk 可以找打这句:

 function init(e) {
        if (PAGE_DATA = e, dytk = e.dytk || dytk, e.itemId || (e.itemId = location.pathname.replace(/^\/|\/$/g,

可以看到 有地方调用init 方法 然后传入了item_ids 和 dytk 两个参数,也可以看到item_ids这个参数也可以从url中的pathname中获取到…

然后找调用init的地方,就在html页面~~~

$(function(){
        __M.require('douyin_falcon:page/reflow_video/index').init({
            videoWidth: 720,
            videoHeight: 1280,
            parent_rid: "2019111222001601001606403637900D",
            itemId: "6758410476016749831",
            test_group: 2,
            uid: "63773045320",
            hasData: 1,
            authorName: "\u963f\u5cf0\u554a",
            dytk: "4634eadaa36b25a00fd770f1d96b90350c9c3565c5de0e00b967f8f6108b6f20" });

    });

ok,如果要自己做接口的话 就在html页面扒出item_ids 和 dytk 这两个参数并将它们作为url参数请求 https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/ 这个接口就可以了
最好模拟user-agent模拟手机 伪造refer, 访问这个接口

1+

发表评论

电子邮件地址不会被公开。