如题,在研究快手的时候,在网上看了很多方案,大多数方法都是获取页面的中js下面window.pageData的信息,但是按照网上的方法都不能实现,主要原因是找不到“window.pageData”这个元素。
/**
* 方法描述: 快手解析下载视频
* 用Jsoup 爬快手视频
* 1、首先获取js信息
*
* @param url
*/
public static String kuaiShouParseUrl(String url) throws IOException {
HashMap<String, String> 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<String, String> 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<String, String> getQueryParamMap(String queryString) {
if (queryString == null) {
return new HashMap<>(0);
}
if (queryString.contains("?")) {
queryString = queryString.split("\\?")[1];
}
Map<String, String> 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平台,如斗音、西关、霍山、筷手、皮皮瞎等
本文只作为学习使用。