快手获取无水印视频及图片集

如题,在研究快手的时候,在网上看了很多方案,大多数方法都是获取页面的中js下面window.pageData的信息,但是按照网上的方法都不能实现,主要原因是找不到“window.pageData”这个元素。

/**
     * 方法描述: 快手解析下载视频
     * 用Jsoup 爬快手视频
     * 1、首先获取js信息
     *
     * @param url
     */
    public static String kuaiShouParseUrl(String url) throws IOException {

        HashMap httpHeaders = new HashMap<>();
        httpHeaders.put("User-Agent", "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Mobile Safari/537.36");

        httpHeaders.put("Referer", url);
        if (url.contains("v.kuaishou.com")) {
            // 获取重定向后的地址
            url = HttpUtil.createGet(url).addHeaders(httpHeaders).execute().header("Location");
            // 填充cookie
            httpHeaders.put("Cookie",convertSetCookieToCookie(url));
            // 设置Referer
            httpHeaders.put("Referer", url);
        }

        return parseLongVideo(url, httpHeaders);



    }


    private static String parseLongVideo(String url, HashMap headers) {

        // 获取domain(host)
        URI uri = URI.create(url);
        String host = uri.getHost();

        // 通过接口获取数据
        headers.put("Accept", "*/*");
        headers.put("Content-Type", "application/json");
        String requestApi = String.format("https://%s/rest/wd/photo/info?kpn=KUAISHOU&captchaToken=", host);
        String postData = JSON.toJSONString(getQueryParamMap(uri.getQuery()));
        String content = HttpUtil.createPost(requestApi).addHeaders(headers).body(postData).execute().body();



        return content;
    }

    public static Map getQueryParamMap(String queryString) {
        if (queryString == null) {
            return new HashMap<>(0);
        }
        if (queryString.contains("?")) {
            queryString = queryString.split("\\?")[1];
        }
        Map queryMap = new HashMap<>();
        String[] split = queryString.split("&");
        for (int i = 0; i < split.length; i++) {
            if ("".equals(split[i])) {
                continue;
            }
            String[] kv = split[i].split("=");
            if (kv.length == 1) {
                queryMap.put(kv[0], "");
            } else {
                queryMap.put(kv[0], kv[1]);
            }
        }
        return queryMap;
    }

    public static void main(String[] args) throws IOException {
        String url = "https://v.kuaishou.com/r2Sk7t";
        System.out.println(url);
        String result = kuaiShouParseUrl(url);
        System.out.println(result);
    }

到此,抖音和快手解析无水印功能已完成,后续回陆续更新其他短视频平台的解析方法。

此外,还找到一款去免费水印小程序【光头去水印工具】,无需积分、注册、费用、无广告,完全免费,需要白嫖的老铁赶快白嫖,全面支持绝大多数视频app平台,如斗音、西关、霍山、筷手、皮皮瞎等

QQ截图20220721150241.png

本文只作为学习使用。

你可能感兴趣的:(快手获取无水印视频及图片集)