Greasy Fork

Greasy Fork is available in English.

净化B站跟踪链接(推荐视频)

净化B站推荐视频跟踪链接

当前为 2022-12-23 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         净化B站跟踪链接(推荐视频)
// @name:zh-TW   凈化B站鏈接跟蹤(推薦視頻)
// @name:en      Clean Bilibili Tracking URLs (Recommended Videos)
// @namespace    http://greasyfork.icu/
// @version      0.3.2.1
// @description  净化B站推荐视频跟踪链接
// @description:zh-tw 淨化B站推薦視頻跟蹤鏈接
// @description:en Clean urls those can tracking you, effective page: most bilibili home page, without [space.bilibili.com]
// @author       cilxe
// @match        *://www.bilibili.com/*
// @match        *://www.bilibili.com/video/av*
// @match        *://www.bilibili.com/video/BV*
// @icon         https://www.bilibili.com/favicon.ico
// @grant        none
// @license      MIT
// ==/UserScript==

const sites = ['bilibili', 'youtube'];
const time_delay = 4000;
const index_string = "spm_id_from";
const index_string_1 = "vd_source";
const index_string_2 = "?";


// Bilibili Restore pushState 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.pushState({}, "Restore", clean_url);
}

// 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 index_string = "spm_id_from";
        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);
            let left_url = url.substring(0,index-1);
            let url2 = scroll_videos_2[i].getAttribute('data-target-url');
            let index2 = url2.indexOf(index_string);
            let left_url2 = url2.substring(0,index2);
            if (url.includes(index_string) || url2.includes(index_string)) {
                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 bili-bangumi-card__cover');
        // for (let i =0; i < front_imgs2.length; i++){
        //     front_imgs2[i].addEventListener('click', function (event) {
        //         event.stopPropagation();
        //     }, true)
        // };
        // let front_imgs3 = document.getElementsByClassName('v-img bili-video-card__cover');
        // for (let i =0; i < front_imgs3.length; i++){
        //     front_imgs3[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() {
    setTimeout(() => {
     function cleanURL(){
        let next_videos = document.getElementsByClassName('box-a');
        let videos = document.getElementsByClassName('video-awesome-img');
        let links = document.getElementsByTagName('a');
        for (let i = 0; i < next_videos.length; i++){
            let url = next_videos[i].href;
            // https://www.bilibili.com/video/BV1pP4y1B7cf/?spm_id_from=000.000.recommend_more_video.-1
            // Remove characters behind "?"
            let index = url.indexOf(index_string_2);
            let left_url = url.substring(0,index); // https://www.bilibili.com/video/BV1pP4y1B7cf
            // let right_url = url.substring(index + 1, url.length); // spm_id_from=000.000.recommend_more_video.-1
            next_videos[i].href = left_url;
            // videos[i].href = url.slice(0, -44);
        };
        for (let i = 0; i < videos.length; i++){
            let url = videos[i].href;
            let index = url.indexOf(index_string_2);
            let left_url = url.substring(0,index);
            videos[i].href = left_url;
        };
        for (let i = 0; i < links.length; i++){
            let url = links[i].href;
            let index = url.indexOf(index_string_2);
            let left_url = url.substring(0,index);
            links[i].href = left_url;
        };
     };
    // Restore pushState session
    restoreState(index_string_1);
    cleanURL();
    let unfold_videos = document.getElementsByClassName('rec-footer');
    unfold_videos[0].onclick = () => {
        cleanURL();
    };
}, time_delay);}

// space.bilibili.com/*
function cleanSpaceURL(){
    // let links_cover = document.getElementsByClassName('cover');
    // let links_title = document.getElementsByClassName('title');
}

// Handle different sites
if (location.hostname.includes('bilibili.com')) {
    // Restore pushState session stack
    if (window.location.href.includes(index_string)) {
        restoreState(index_string);
    } else if (window.location.href.includes(index_string_1)) {
        restoreState(index_string_1);
    }
    if (window.location.href.includes('bilibili.com/video')){
        // www.bilibili.com/video/*
        cleanVideoURL();
    } else {
        setTimeout(() => {cleanSpaceURL()}, time_delay);
        cleanMainURL();
    }
 }


// fuintion  declaration  methods:
// function functionName() {};  window.onload = functionName()
// window.onload = function() {}
// window.onload = () => {}