您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动完成bilibili的每日任务
当前为
// ==UserScript== // @name BiliBili每日任务 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 自动完成bilibili的每日任务 // @author maxinimize // @match https://account.bilibili.com/account/home // @grant none // ==/UserScript== (function() { 'use strict'; const getRandomInt = (min, max) => { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min)) + min; } const fetchAttentions = async () => { try { let attentionList = []; const uid = document.cookie.split('; ').find(x => x.substr(0,11) === 'DedeUserID=').substr(11); const response = await fetch(`https://api.bilibili.com/x/relation/followings?vmid=${uid}&ps=50&order=desc`) const data = await response.json(); if (data.code === 0) { let attentionList = data.data.list.map(a => a.mid) return attentionList } else { console.log(data.message); } } catch (error) { console.log('错误', error); } } const fetchVideos = async () => { try { let attentionList = await fetchAttentions(); let videoList = []; for (let a of attentionList) { let response = await fetch(`https://space.bilibili.com/ajax/member/getSubmitVideos?mid=${a}&pagesize=100&tid=0`) let data = await response.json(); videoList = videoList.concat(data.data.vlist.map(v => v.aid)) } return videoList } catch (error) { console.log('错误', error); } } /* const fetchFiveMinsVideos = async () => { try { let attentionList = await fetchAttentions(); let videoList = []; for (let a of attentionList) { let response = await fetch(`https://space.bilibili.com/ajax/member/getSubmitVideos?mid=${a}&pagesize=100&tid=0`) let data = await response.json(); // parseInt(data.data.vlist[0].length.split(':')) let result = data.data.vlist.filter(v => v.length.split(':').length > 2 || v.length.split(':') = 2 && parseInt(v.length.split(':')[0], 10)) videoList = videoList.concat(data.data.vlist.map(v => v.aid)) } return videoList } catch (error) { console.log('错误', error); } } */ const fetchWatch = async (aid) => { try { let response = await fetch('https://api.bilibili.com/x/web-interface/view?aid='+aid) let data = await response.json(); if (data.code === 0) { const cid = data.data.cid; const duration = data.data.duration; const sid = document.cookie.split('; ').find(x => x.substr(0,4) === 'sid=').substr(4); const uid = document.cookie.split('; ').find(x => x.substr(0,11) === 'DedeUserID=').substr(11); const csrf = document.cookie.split('; ').find(x => x.substr(0,9) === 'bili_jct=').substr(9); response = await fetch('https://api.bilibili.com/x/report/click/h5', { credentials: 'include', method: 'post', headers: {'Content-type': 'application/x-www-form-urlencoded'}, body: `aid=${aid}&cid=${cid}&part=1&did=${sid}&ftime=${new Date().getTime()}&jsonp=jsonp&lv=None&mid=${uid}&csrf=${csrf}&stime=${new Date().getTime()}` }) data = await response.json(); if (data.code === 0) { response = await fetch('https://api.bilibili.com/x/report/web/heartbeat', { credentials: 'include', method: 'post', headers: {'Content-type': 'application/x-www-form-urlencoded'}, body: `aid=${aid}&cid=${cid}&jsonp=jsonp&mid=${uid}&csrf=${csrf}&played_time=0&pause=false&realtime=${duration}&dt=7&play_type=1&start_ts=${new Date().getTime()}` }) data = await response.json(); if (data.code === 0) { const controller = new AbortController(); const signal = controller.signal; const fetchPromise = fetch('https://api.bilibili.com/x/report/web/heartbeat', { credentials: 'include', method: 'post', headers: {'Content-type': 'application/x-www-form-urlencoded'}, body: `aid=${aid}&cid=${cid}&jsonp=jsonp&mid=${uid}&csrf=${csrf}&played_time=${duration-1}&pause=false&realtime=${duration}&dt=7&play_type=0&start_ts=${new Date().getTime()}` }) const timeoutId = setTimeout(() => controller.abort(), 5000); data = await fetchPromise.then(response => response.json()); if (data.code === 0) { console.log('观看成功'); return true } else { console.log('观看失败@4: ', data.message); return false } } else { console.log('观看失败@3: ', data.message); return false } } else { console.log('观看失败@2: ', data.message); return false } } else { console.log('获取视频信息失败: ', data.message); return false } } catch (error) { console.log('错误', error); return false } } const fetchShare = async (body) => { try { const response = await fetch('https://api.bilibili.com/x/web-interface/share/add', { credentials: 'include', method: 'post', headers: {'Content-type': 'application/x-www-form-urlencoded'}, body: body }) const data = await response.json(); if (data.code === 0) { console.log("分享成功"); return true } else { console.log(data.message); return false } } catch (error) { console.log('错误', error); return false } } const fetchCoin = async (body) => { try { const response = await fetch('https://api.bilibili.com/x/web-interface/coin/add', { credentials: 'include', method: 'post', headers: {'Content-type': 'application/x-www-form-urlencoded'}, body: body //'aid=36711746&multiply=1&csrf=49095dd563aaef3187cf9594c39a2085' }) const data = await response.json() if (data.code === 0) { console.log("投币成功"); return true } else { console.log(data.message); return false } } catch (error) { console.log('错误', error); return false } } const watch = async () => { let videoList = await fetchVideos(); let aid = videoList[getRandomInt(0, videoList.length)]; return fetchWatch(aid); } const share = async () => { let videoList = await fetchVideos(); let aid = videoList[getRandomInt(0, videoList.length)]; let csrf = document.cookie.split('; ').find(x => x.substr(0,9) === 'bili_jct=').substr(9); let payload = `aid=${aid}&csrf=${csrf}`; return fetchShare(payload); } const coin = async () => { let videoList = await fetchVideos(); let aid = videoList[getRandomInt(0, videoList.length)]; let csrf = document.cookie.split('; ').find(x => x.substr(0,9) === 'bili_jct=').substr(9); let payload = `aid=${aid}&multiply=1&csrf=${csrf}`; return fetchCoin(payload); } window.setTimeout(() => { if (document.querySelector('#app > div > div.security_content > div.security-right > div > div:nth-child(2) > div.home-daily-task-warp > div > div:nth-child(2) > div.home-dialy-exp-icon.position-rest')) { watch() } if (document.querySelector('#app > div > div.security_content > div.security-right > div > div:nth-child(2) > div.home-daily-task-warp > div > div:nth-child(3) > div.home-dialy-exp-icon.position-rest')) { if (document.querySelector('#app > div > div.security_content > div.security-right > div > div:nth-child(2) > div.home-daily-task-warp > div > div:nth-child(2) > p.re-exp-none').innerHTML === '未完成') { if (parseInt(document.querySelector('#app > div > div.security_content > div.security-right > div > div:nth-child(1) > div.index-info > div.home-right > div.home-top-bp > span:nth-child(4)').innerHTML, 10) >= 5) { let i = 0; let timer = setInterval(() => { coin(); i = i + 1; if (i >= 5) { clearInterval(timer); } },2000); } } } if (document.querySelector('#app > div > div.security_content > div.security-right > div > div:nth-child(2) > div.home-daily-task-warp > div > div:nth-child(4) > div.home-dialy-exp-icon.position-rest')) { share() } }, 5000) })();