douyin-video-get
Version:
抖音视频抖音无水印下载 douyin video crack
79 lines (76 loc) • 2.76 kB
JavaScript
const puppeteer = require('puppeteer');
let browser;
(async () => {
browser = await puppeteer.launch({ headless: true,
// slowMo: 150
});
})();
class DouYin {
constructor(opt){
this.userAgent = opt && opt.userAgent || "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
}
getVideo(url,callback){
(async () => {
if(!url){
throw "url is empty"
}
if(!browser){
browser = await puppeteer.launch();
}
const page = await browser.newPage();
page.setUserAgent(this.userAgent);
const blockTypes = new Set(['image','media', 'font','stylesheet']);
await page.setRequestInterception(true); //开启请求拦截
page.on('request', request => {
const type = request.resourceType();
const shouldBlock = blockTypes.has(type);
if(shouldBlock){
return request.abort();
}else{
return request.continue({
});
}
});
try{
await page.goto(url,{});
await page.waitForSelector('video')
await page.exposeFunction('nodelog',(src,title )=>{
if(!src){
page.evaluate(async () => {
console.log('ok')
// let title = document.getElementsByTagName("html")[0].innerHTML;
let v = document.getElementsByTagName("video");
console.log(v[0])
let src = 0
let title =''
if(v[0]){
src = v[0].getAttributeNode("src").textContent;
title = document.getElementsByTagName("h1")[0].textContent
}
const myHash = await window.nodelog(src,title);
});
}else{
callback({status:0, video_url:src,title:title})
}
}
);
await page.evaluate(async () => {
let v = document.getElementsByTagName("video");
console.log(v[0])
let src = 0
let title =''
if(v[0]){
src = v[0].getAttributeNode("src").textContent;
title = document.getElementsByTagName("h1")[0].textContent
}
const myHash = await window.nodelog(src,title);
});
await page.close();
}catch(e){
console.log(e)
callback({status:1, video_url:"#",title:"网络错误!!"})
}
})();
}
}
module.exports = DouYin