// ==UserScript== // @name 净化B站跟踪链接(推荐视频),百度<相关搜索>链接净化 // @name:zh-TW 凈化B站鏈接跟蹤(推薦視頻),百度<相關搜索>鏈接凈化 // @name:en Clean Bilibili Tracking URLs (Recommended Videos), Baidu URLs. // @namespace https://greasyfork.org/ // @version 0.3.6 // @description 净化B站推荐视频跟踪链接,百度<相关搜索>链接净化 // @description:zh-tw 淨化B站推薦視頻跟蹤鏈接,百度<相關搜索>鏈接凈化 // @description:en Clean urls those can tracking you, effective sites:bilibili, Baidu // @author cilxe // @match *://www.bilibili.com/* // @match *://space.bilibili.com/* // @match *://www.baidu.com/s* // @icon https://www.bilibili.com/favicon.ico // @run-at document-start // @license MIT // @downloadURL none // ==/UserScript== /* # Changelog v0.3.6 2022.12.28 Optimise Baidu related search URL, paging URL processing method. v0.3.5 2022.12.27 Script logic optimisations. */ (function () { // const sites = ['bilibili', 'baidu.com', 'youtube.com']; const time_delay = 4000; const index_string_qm = "?"; // bilibili index strings const index_string_b1 = "spm_id_from"; const index_string_b2 = "vd_source"; // baidu index strings const index_string_bd1 = "rsf"; const index_string_bd2 = "rsv_pq"; // Bilibili Restore history state session stack function restoreState(indexStr) { let cur_url = window.location.href; let video_index = cur_url.indexOf(indexStr); let clean_url = cur_url.substring(0, video_index - 1); window.history.replaceState({}, "Restore", clean_url); } // space.bilibili.com/* function cleanSpaceURL() { let links_cover = document.getElementsByClassName('cover'); let links_title = document.getElementsByClassName('title'); for (let i = 0; i < links_cover.length; i++) { links_cover[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) } for (let i = 0; i < links_title.length; i++) { links_title[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) } } // www.bilibili.co/*, ww.bilibili.com/v/popular/* function cleanMainURL() { function onFresh() { let metas = document.getElementsByTagName('meta'); for (let i = 0; i < metas.length; i++) { if (metas[i].name == "spm_prefix") { metas[i].content = "000.0000"; } }; // 净化滚动卡片链接 let scroll_videos_1 = document.getElementsByClassName('carousel-inner'); let scroll_videos_2 = document.getElementsByClassName('carousel-item'); for (let i = 0; i < scroll_videos_1.length; i++) { scroll_videos_1[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; for (let i = 0; i < scroll_videos_2.length; i++) { let url = scroll_videos_2[i].href; let index = url.indexOf(index_string_b1); let left_url = url.substring(0, index - 1); let url2 = scroll_videos_2[i].getAttribute('data-target-url'); let index2 = url2.indexOf(index_string_b1); let left_url2 = url2.substring(0, index2); if (url.includes(index_string_b1) || url2.includes(index_string_b1)) { scroll_videos_2[i].href = left_url; scroll_videos_2[i].setAttribute('data-target-url', left_url2); }; }; // Remove tracking event let front_rec_videos = document.getElementsByClassName('recommended-card'); for (let i = 0; i < front_rec_videos.length; i++) { front_rec_videos[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; let front_rec_videos2 = document.getElementsByClassName('bili-video-card__image--wrap'); for (let i = 0; i < front_rec_videos2.length; i++) { front_rec_videos2[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; // // 排行榜视频封面 // let videos_cards = document.getElementsByClassName('video-card__content'); // for (let i =0; i < videos_cards.length; i++){ // videos_cards[i].addEventListener('click', function (event) { // event.stopPropagation(); // }, true) // }; // 视频封面事件 let links = document.getElementsByTagName('a'); for (let i = 0; i < links.length; i++) { links[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; let front_imgs0 = document.getElementsByTagName('img'); for (let i = 0; i < front_imgs0.length; i++) { front_imgs0[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; let front_imgs = document.getElementsByTagName('picture'); for (let i = 0; i < front_imgs.length; i++) { front_imgs[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; // v-img bili-bangumi-card__cover v-img bili-video-card__cover let front_imgs2 = document.getElementsByClassName('v-img'); for (let i = 0; i < front_imgs2.length; i++) { front_imgs2[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; // watch-later van-watchlater black let after_videos = document.getElementsByClassName('watch-later'); for (let i = 0; i < after_videos.length; i++) { after_videos[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) }; // 排行榜页视频标题事件 // let video_titles = document.getElementsByClassName('video-card__info'); // for (let i =0; i < video_titles.length; i++){ // video_titles[i].addEventListener('click', function (event) { // event.stopPropagation(); // }, true) // }; } // In case of page loading incomplete, add time out. setTimeout(() => { onFresh() }, time_delay); // Loop execution while scrolling window.onscroll = () => { var scroll_top = 0; // Scroll range let scroll = document.documentElement.scrollTop || document.body.scrollTop; if (scroll - scroll_top > 200) { onFresh(); scroll_top = scroll; } } } // www.bilibili.com/video/* function cleanVideoURL() { function cleanURL() { let links = document.getElementsByTagName('a'); let videos = document.getElementsByClassName('video-awesome-img'); for (let i = 0; i < links.length; i++) { let url = links[i].href; let index = url.indexOf(index_string_qm); if (links[i].href.includes(index_string_b1)) { links[i].href = url.substring(0, index); } }; for (let i = 0; i < videos.length; i++) { videos[i].addEventListener('click', function (event) { event.stopPropagation(); }, true) // let url = videos[i].href; // let index = url.indexOf(index_string_qm); // videos[i].href = url.substring(0,index); }; }; // Restore State session restoreState(index_string_b2); cleanURL(); let unfold_videos = document.getElementsByClassName('rec-footer'); unfold_videos[0].onclick = () => { cleanURL() }; } // Baidu related search URL cleaning function cleanBaiduRelatedURL() { function cleanRS() { // class = "c-color-link" let links = document.getElementsByClassName('c-color-link'); for (let i = 0; i < links.length; i++) { if (links[i].href.includes(index_string_bd1)) { let index = links[i].href.indexOf(index_string_bd1); links[i].href = links[i].href.substring(0, index - 1); } } } // bottom of html paging block function clearPages() { let page_links = document.getElementById('page').getElementsByTagName('div')[0].getElementsByTagName('a'); for (let i = 0; i < page_links.length; i++) { if (page_links[i].href.includes(index_string_bd2)) { let index = page_links[i].href.indexOf(index_string_bd2); page_links[i].href = page_links[i].href.substring(0, index - 1); } } } window.onscroll = () => { var scroll_top = 0; let scroll = document.documentElement.scrollTop || document.body.scrollTop; if (scroll - scroll_top > 200) { cleanRS(); clearPages(); scroll_top = scroll; } } } // Handle different sites window.onload = () => { // bilibili if (location.hostname.includes('bilibili.com')) { // Restore history state session stack if (location.href.includes(index_string_b1)) { restoreState(index_string_b1); } else if (location.href.includes(index_string_b2)) { restoreState(index_string_b2); } if (location.href.includes('bilibili.com/video')) { setTimeout(() => { cleanVideoURL() }, 500); setTimeout(() => { cleanVideoURL() }, time_delay); restoreState(index_string_b1); restoreState(index_string_b2); } else if (location.href.includes('space.bilibili.com')) { setTimeout(() => { cleanSpaceURL() }, 1000); setTimeout(() => { cleanSpaceURL() }, time_delay); } else { cleanMainURL(); } // baidu } else if (location.hostname.includes('baidu.com')) { cleanBaiduRelatedURL(); } } })(); // function declaration methods: // function functionName() {}; window.onload = functionName() // window.onload = function() {} // window.onload = () => {}