吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2837|回复: 11
收起左侧

[讨论] 某音无水印最新算法

  [复制链接]
姬长信 发表于 2019-9-11 18:12
ios版抖音协议加密算法及源码
https://www.52pojie.cn/thread-923013-1-1.html
(出处: 吾爱破解论坛)
发表于 2019-4-7 18:37




过程这位老哥写的很清楚明了,来一份最新的


还有一些历史帖,感兴趣的童鞋可以翻来看看

这才是某音解析最新源码,别拿第三方的来糊弄人
https://www.52pojie.cn/thread-968123-1-1.html
(出处: 吾爱破解论坛)发表于 2019-5-30 22:46
话不多说,直接上代码,有问题可以提出来,我看到会第一时间回复


[Java] 纯文本查看 复制代码
@Slf4j
@SuppressWarnings("all")
public class DouYinDecodeMain {

    //链接测试
    //#在抖音,记录美好生活##开动就现在 #明日之后明日之后 游戏人生,钢琴 [url]http://v.douyin.com/rYs9HU/[/url] 复制此链接,打开【抖音短视频】,直接观看视频!
    //#在抖音,记录美好生活##开动就现在 #明日之后明日之后 游戏人生,钢琴 [url]http://v.douyin.com/rYs9HU/[/url] 复制此链接,打开【抖音短视频】,直接观看视频!
    //#在抖音,记录美好生活##开动就现在 #明日之后明日之后 游戏人生,钢琴 [url]http://v.douyin.com/rYs9HU/[/url] 复制此链接,打开【抖音短视频】,直接观看视频!
    static final String API[] = {
            //            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&iid=74655440239&device_id=57318346369&ac=wifi&channel=wandoujia&aid=1128&app_name=aweme&version_code=140&version_name=1.4.0&device_platform=android&ssmix=a&device_type=MI+8&device_brand=xiaomi&os_api=22&os_version=5.1.1&uuid=865166029463703&openudid=ec6d541a2f7350cd&manifest_version_code=140&resolution=1080*1920&dpi=1080&update_version_code=1400&as=a13520b0e9c40d9cbd&cp=064fdf579fdd07cae1&aweme_id=",
            //            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&iid=74655440239&device_id=57318346369&ac=wifi&channel=wandoujia&aid=1128&app_name=aweme&version_code=140&version_name=1.4.0&device_platform=android&ssmix=a&device_type=MI+8&device_brand=xiaomi&os_api=22&os_version=5.1.1&uuid=865166029463703&openudid=ec6d541a2f7350cd&manifest_version_code=140&resolution=1080*1920&dpi=1080&update_version_code=1400&as=a13510902a54ed1cad&cp=0a40dc5ba5db09cee1&aweme_id=",
            //            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&iid=43619087057&device_id=57318346369&ac=wifi&channel=update&aid=1128&app_name=aweme&version_code=251&version_name=2.5.1&device_platform=android&ssmix=a&device_type=MI+8&device_brand=xiaomi&language=zh&os_api=22&os_version=5.1.1&uuid=865166029463703&openudid=ec6d541a2f7350cd&manifest_version_code=251&resolution=1080*1920&dpi=480&update_version_code=2512&as=a1e500706c54fd8c8d&cp=004ad55fc8d60ac4e1&aweme_id=",
            //            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&$device&ac=wifi&channel=update&aid=1128&app_name=aweme&version_code=$version_code&version_name=$version_name&device_platform=android&ssmix=a&device_type=MI+8&device_brand=xiaomi&language=zh&os_api=22&os_version=5.1.1&uuid=865166029463703&openudid=ec6d541a2f7350cd&manifest_version_code=$version_code&resolution=1080*1920&dpi=480&update_version_code=2512&ts=1561136204&as=a1e500706c54fd8c8d&cp=004ad55fc8d60ac4e1&aweme_id=",
            //            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&iid=75364831157&device_id=68299559251&ac=wifi&channel=wandoujia&aid=1128&app_name=aweme&version_code=650&version_name=6.5.0&device_platform=android&ssmix=a&device_type=xiaomi+8&device_brand=xiaomi&language=zh&os_api=22&os_version=5.1.1&openudid=2e5c5ff4ce710faf&manifest_version_code=660&resolution=1080*1920&dpi=480&update_version_code=6602&mcc_mnc=46000&js_sdk_version=1.16.2.7&as=a1257080aec45ddcad&cp=0b4cd25fe4d00ccfe1&aweme_id=",
            //            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&iid=75364831157&device_id=68299559251&ac=wifi&channel=wandoujia&aid=1128&app_name=aweme&version_code=650&version_name=6.5.0&device_platform=android&ssmix=a&device_type=xiaomi+8&device_brand=xiaomi&language=zh&os_api=22&os_version=5.1.1&openudid=2e5c5ff4ce710faf&manifest_version_code=660&resolution=1080*1920&dpi=480&update_version_code=6602&mcc_mnc=46000&js_sdk_version=1.16.2.7&as=a125a0b01f946d2cdd&cp=0744d553ffd60cc3e1&aweme_id=",
            /**
             * 以上接口已经失效
            */
            "https://aweme.snssdk.com/aweme/v1/aweme/detail/?origin_type=link&retry_type=no_retry&$device&ac=wifi&channel=update&aid=1128&app_name=aweme&version_code=$version_code&version_name=$version_name&device_platform=android&ssmix=a&device_type=MI+8&device_brand=xiaomi&language=zh&os_api=22&os_version=5.1.1&uuid=865166029463703&openudid=ec6d541a2f7350cd&manifest_version_code=$version_code&resolution=1080*1920&dpi=480&update_version_code=2512&ts=1561136204&as=a1e500706c54fd8c8d&cp=004ad55fc8d60ac4e1&aweme_id="};

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        while (true) {
            try {
                System.out.println("请输入您要解析的视频连接(可以直接复制到窗框):");
                String inputText = inputText();
                // 输入判断需要解析的抖音地址
                String url2 = decodeHttpUrl(inputText);
                Document doc = null;
                try {
                    doc = Jsoup.connect(url2).cookie("cookie", "tt_webid=6711334817457341965; _ga=GA1.2.611157811.1562604418; _gid=GA1.2.1578330356.1562604418; _ba=BA0.2-20190709-51")
                            //模拟手机浏览器
                            .header("user-agent", "Mozilla/5.0 (Linux; U; Android 5.0; en-us; INSO API Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1")
                            //.header("cookie","tt_webid=6711334817457341965; _ga=GA1.2.611157811.1562604418; _gid=GA1.2.1578330356.1562604418; _ba=BA0.2-20190709-51")
                            .timeout(12138).get();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                // 解析网页标签
                Elements elem = doc.getElementsByTag("script");
                String url1 = elem.toString();
                int startLen = url1.indexOf("itemId: \"");
                int endLen = url1.indexOf("\",\n" +
                        "            test_group");
                String itemId = url1.substring(startLen, endLen).replaceAll("itemId: \"", "");
                /**
                 * 一个api解析接口
                 */
                String result2 = HttpRequest.get(API[0] + itemId)
                        //模拟手机浏览器
                        .header(Header.USER_AGENT, "Aweme/79025 CFNetwork/978.0.7 Darwin/18.7.0")//头信息,多个头信息多次调用此方法即可
                        .timeout(12138)//超时,毫秒
                        .execute().body();
                try {
                    //GOSN解析
                    JsonParser jsonParser = new JsonParser();
                    JsonObject jsonObject = jsonParser.parse(result2.toString()).getAsJsonObject();
                    String url = jsonObject.get("aweme_detail").getAsJsonObject().get("long_video").getAsJsonArray().get(0).getAsJsonObject().get("video").getAsJsonObject().get("play_addr").getAsJsonObject().get("url_list").getAsJsonArray().get(0).toString().replaceAll("\"", "");
                    OkHttpClient client = new OkHttpClient();
                    Request request = new Request.Builder()
                            .url(url)
                            .get().addHeader("User-Agent", "Mozilla/5.0 (Linux; U; Android 5.0; en-us; INSO API Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1")
                            .build();
                    Response response = client.newCall(request).execute();
                    url = response.request().url().toString();
                    int start = url.indexOf("http");
                    int end = url.lastIndexOf("?");
                    url = url.substring(start, end);
                    if (!StringUtils.isEmpty(url)) {
                        System.out.println("解析地址为:" + url);
                    }
                } catch (Exception e) {
                    System.out.println("解析失败,请更换地址重试,报错信息:" + e.getMessage());
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }


    private static String decodeHttpUrl(String url) {
        // 检测是否有中文,如果没有中文就是直接地址
        boolean containChinese = isContainChinese(url);
        if (containChinese) {
            int start = url.indexOf("http");
            int end = url.lastIndexOf("/");
            String decodeurl = url.substring(start, end);
            return decodeurl;
        } else
            return url;
    }

    private static String inputText() {
        Scanner text = new Scanner(System.in);
        String inputurl = text.nextLine();
        if (StringUtils.isEmpty(inputurl)) {//这里只判断了输入为空,根据业务自己更改
            throw new RuntimeException("输入有误,请重新输入");
        } else {
            return inputurl;
        }
    }

    private static boolean isContainChinese(String str) {
        Pattern p = Pattern.compile("[\u4e00-\u9fa5]");
        Matcher m = p.matcher(str);
        if (m.find()) {
            return true;
        }
        return false;
    }

    public static String getDownloadUrl(String url) {
        String url2 = decodeHttpUrl(url);
        Document doc = null;
        try {
            doc = Jsoup.connect(url2).cookie("cookie", "tt_webid=6711334817457341965; _ga=GA1.2.611157811.1562604418; _gid=GA1.2.1578330356.1562604418; _ba=BA0.2-20190709-51")
                    //模拟手机浏览器
                    .header("user-agent", "Mozilla/5.0 (Linux; U; Android 5.0; en-us; INSO API Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1")
                    //.header("cookie","tt_webid=6711334817457341965; _ga=GA1.2.611157811.1562604418; _gid=GA1.2.1578330356.1562604418; _ba=BA0.2-20190709-51")
                    .timeout(12138).get();
        } catch (Exception e) {
            e.printStackTrace();
        }
        // 解析网页标签
        Elements elem = doc.getElementsByTag("script");
        String url1 = elem.toString();
        int startLen = url1.indexOf("itemId: \"");
        int endLen = url1.indexOf("\",\n" +
                "            test_group");
        String itemId = url1.substring(startLen, endLen).replaceAll("itemId: \"", "");
        /**
         * API里面有7个网站,可以自己选择,
         * 最后一个是出问题的
         * 最后一个是出问题的
         * 最后一个是出问题的
         */
        String result2 = HttpRequest.get(API[0] + itemId)
                //模拟手机浏览器
                .header(Header.USER_AGENT, "Aweme/79025 CFNetwork/978.0.7 Darwin/18.7.0")//头信息,多个头信息多次调用此方法即可
                .timeout(12138)//超时,毫秒
                .execute().body();
        try {
            //GOSN解析
            JsonParser jsonParser = new JsonParser();
            JsonObject jsonObject = jsonParser.parse(result2.toString()).getAsJsonObject();
            url = jsonObject.get("aweme_detail").getAsJsonObject().get("long_video").getAsJsonArray().get(0).getAsJsonObject().get("video").getAsJsonObject().get("play_addr").getAsJsonObject().get("url_list").getAsJsonArray().get(0).toString().replaceAll("\"", "");
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .url(url)
                    .get().addHeader("User-Agent", "Mozilla/5.0 (Linux; U; Android 5.0; en-us; INSO API Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1")
                    .build();
            Response response = client.newCall(request).execute();
            url = response.request().url().toString();
            int start = url.indexOf("http");
            int end = url.lastIndexOf("?");
            url = url.substring(start, end);
            return url;
        } catch (Exception e) {
            return e.getMessage();
        }
    }
}

免费评分

参与人数 1吾爱币 +1 收起 理由
z569839 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

还不算晚 发表于 2019-9-11 18:15
感谢分享!
麦的祸冷 发表于 2019-9-11 18:18
yinyiwen2 发表于 2019-9-11 18:20
HEcong 发表于 2019-9-11 18:24
感谢分享
bigboss 发表于 2019-9-11 18:58
虽然看不懂。表示支持给予鼓励。
jy02888 发表于 2019-9-11 19:56
哇,感谢,学习下,在某音下载素材不错的
wakichie 发表于 2019-9-11 20:04
看不懂啊
wangggia 发表于 2019-9-11 20:13
写的不错,感谢分享。
lear 发表于 2019-9-11 20:23
感谢分享。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 02:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表