// ==UserScript==
// @name 【广告去除】新闻网站
// @namespace http://tampermonkey.net/
// @version 1.3
// @description 去除网易新闻、百家号、腾讯新闻的广告
// @author You
// @match *://news.163.com/*
// @match *://sports.163.com/*
// @match *://money.163.com/*
// @match *://auto.163.com/*
// @match *://tech.163.com/*
// @match *://mobile.163.com/*
// @match *://hea.163.com/*
// @match *://fashion.163.com/*
// @match *://v.163.com/*
// @match *://culture.163.com/*
// @match *://travel.163.com/*
// @match *://*.house.163.com/*
// @match *://home.163.com/*
// @match *://edu.163.com/*
// @match *://jiankang.163.com/*
// @match *://art.163.com/*
// @match *://bendi.news.163.com/*
// @match *://*.news.163.com/*
// @match *://*.163.com/news/*
// @match *://*.163.com/sports/*
// @match *://ent.163.com/*
// @match *://*.163.com/dy/*
// @match *://*.163.com/ent/*
// @match *://comment.tie.163.com/*
// @match *://new.qq.com/*
// @match *://news.sina.com.cn/*
// @match *://finance.sina.com.cn/*
// @match *://tech.sina.com.cn/*
// @match *://k.sina.com.cn/*
// @match *://*.sohu.com/a/*
// @match *://*.china.com/*
// @match *://*.huanqiu.com/*
// @match *://*.1905.com/*
// @match *://store.rg-adguard.net/
// @match *://22.do/*
// @match *://ask.zol.com.cn/*
// @exclude *://tech.163.com/game/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=17173.com
// @grant none
// @run-at document-start
// @license MIT
// ==/UserScript==
/*
1.0更新内容
创建
1.1更新内容
*/
(function() {
'use strict';
//*************************************************************************************
//----------------------------------------广告匹配规则
//*************************************************************************************
let url = window.location.href;
let domain = document.domain;
let pathSegment = window.location.pathname.split('/')[1]
let names = [];
//******************
//---------网易新闻
//******************
if (domain.match(/(www|news|sports|ent|money|auto|tech|mobile|hea|fashion|v|culture|travel|house|home|edu|jiankang|art).163.com/)
|| (domain.match('163.com')
&& pathSegment.match(/(news|sports)/))
) {
console.log('[广告去除] 网易新闻');
//'anything'
names = [
['class','ns_area area_column_ad channel_relative_2016 mod_js_ad'],//头部广告,通用
['class','post_area post_columnad_top'],//顶通
['data-adid',/\barticle_cms_column_[0-9]{1,2}\b/],//顶通
['class','ns_area second2016_top_ad channel_relative_2016 channel_relative_2016_lh'],//顶通
['class',/\b[^ ]*top_ad[^ ]*\b/],//顶部
['class',/\b[^ ]*mod_js_ad[^ ]*\b/],//顶部,area topad channel_relative_2016 mod_js_ad
['class',/\b[^ ]*advertisement[^ ]*\b/],//顶部
['id','js_ads_banner_top'],//顶部
['class','mod_ad_toutu channel_relative_2016'],//右侧文字广告
['class','rg_ad_text mb25 channel_relative_2016'],//右侧文字广告
['data-adid',/\bnews_index_column_[0-9]{1,2}\b/],//通用
['ad-location','anything'],//通用
['class',/\bmt[0-9]{1,2} mod_ad_[0-9]{1,2} mod_ad_r\b/],//右侧图片广告,mt27 mod_ad_8 mod_ad_r
['id',/\bssp_[0-9a-z]{7,10}\b/],//广告位:网易-内页矩形M1,ssp_7365610
['class',/\bblank[0-9]{1,2}\b/],//右侧
['data-adid',/\barticle_cms_right_[0-9]{1,2}\b/],//右侧,article_cms_right_2
['class',/\brg_ad mb[0-9]{1,2}\b/],//右侧严选广告
['class',/\bsports_shangxun_ad[0-9]{1,2}[^ ]*\b/],//AD 文字广告
['class',/\bchannel_ad_text_[0-9]{4}\b/],//AD 文字广告
['class',/\bimg_ad_[0-9]{3} mb[0-9]{1,2}[^ ]*\b/],//AD 广告图片300*250 +文字
['class',/\bad-wrapper underlive-ad[^ ]*\b/],//两侧
['class','ad'],//
['class','ns_side_qrcode'],//右侧APP二维码
['class','ns-side-qrcode'],//右侧APP二维码
['class','newsapp-qrcode'],//右侧APP二维码
['class','sidebar_qrcode'],//右侧APP二维码
['class','ntes-nav-mobile-title ntes-nav-entry-bgblack'],//顶部APP
];
}
//******************
//---------网易号
//******************
else if (url.includes('163.com/dy')||url.includes('comment.tie.163.com')) {
console.log('[广告去除] 网易号');
names = [
['class','newsapp-qrcode'],//右侧APP二维码
['class','ntes-nav-mobile-title ntes-nav-entry-bgblack'],//顶部APP
['class','ad_module'],//右侧广告
['data-adid',/\barticle_dy_right_[0-9]{1}\b/],//右侧广告,article_dy_right_1
['data-adid',/\barticle_dy_column_[0-9]{1}\b/],//顶部广告,article_dy_column_1
['id',/\bssp_[0-9a-z]{7,10}\b/],//广告位:网易号--内页矩形M1,ssp_7365630
['id','top-banner'],//顶部
['id','ad-inner'],//右侧
];
}
//******************
//---------腾讯网
//******************
else if (domain.includes('new.qq.com')) {
console.log('[广告去除] 腾讯网');
names = [
//全屏
//顶部
['id',/\b[Tt]{1}op[Aa]{1}d\b/],//顶部广告
['class',/\b[^ ]*widthAd[^ ]*\b/],//顶部广告
//侧面
['id',/\badCon[0-9]{1,2}\b/],//夹杂广告
['id','focus-bar'],//右侧轮换
['class','focus-bar swiper-container-horizontal'],//右侧轮换
['dt-eid','em_ad'],//右侧图片
['data-role','hd-ad-adapter-interactivelayer'],//右侧视频
['data-role','creative-player-video-layer'],//右侧视频
['class','article-item ad-author-item'],//右侧
['id','pc_bot_author_ad'],//右侧
//['class','pc_bot_hotlist_ad'],//右侧
//底部
['class','g-bot-box'],//底部
//['class','recommend-con'],//底部
//['id','ArticleBottom'],//底部
['id','pic'],//底部
];
}
//******************
//---------新浪新闻
//******************
else if (domain.match(/(news|finance|tech|k).sina.com.cn/)) {
console.log('[广告去除] 新浪新闻');
names = [
['id',/\bad_[0-9]{5}\b/],//顶部
['class','tb-left auto_switch'],//顶部
['class','tb-left'],//顶部空白
['class','blk-zcapp clearfix'],//正文底部
['data-sudaclick','ad_content_bottom'],//正文底部
['id',/\bBAIDU_SSP__wrapper_u[0-9]{7}_[0-9]{1}\b/],//侧面悬浮,BAIDU_SSP__wrapper_u6838895_0
['id',/\biframeu[0-9]{7}_[0-9]{1}\b/],//侧面悬浮
['name',/\biframeu[0-9]{7}_[0-9]{1}\b/],//侧面悬浮
['id',/\bsinaadToolkitBox[0-9]{1}\b/],//侧面悬浮
['class','side-btns-2w'],//侧面悬浮
['data-ad-pdps','anything'],//侧面文字
['class',/\bside-btns-answer[0-9]{4}\b/],//侧面悬浮
['class','right-bar-btn zc-app-btn'],//侧面APP
['id','sina-pages-u'],//
['class','yyy-wrap-2021'],//
['id','bgAdWrap'],//背景
];
}
//******************
//---------搜狐
//******************
else if (url.includes('sohu.com/a/')) {
console.log('[广告去除] 新浪号');
names = [
//全屏
['class','left-bottom-float-fullScreenSleepContainer'],//全屏弹窗
//顶部
//['id',/\bad_[0-9]{5}\b/],//顶部
//侧面
//['data-spm','left-author-card-ad'],//左侧悬浮
['id',/\bgoogle_ads_iframe_[^ ]*\b/],//左侧悬浮
['data-spm','ad-right-sponsor'],//右侧
['data-ad-status','filled'],//两侧悬浮
['id','god_fix_container'],//右侧悬浮
['class','right-fixed'],//右侧悬浮
['data-spm',/\bad-sq[0-9]{1}\b/],//两侧图片
//['class','article-do article-do-fixed'],//左侧悬浮分享
//['id','article-do'],//左侧悬浮分享
['data-spm','ad-ss'],//左下悬浮
['class','hot-article clear bord'],//右侧空白
['id','hot-news-container'],//右侧空白
//底部
['class',/\bpublift-widget-[0-9]{11}-container\b/],//底部悬浮
['data-spm','middle-banner-ad'],//文章底部
['class','allsee-item clear bd-wrap'],//底部“大家都在看”夹杂
['data-spm','ad-text-bottom'],//底部“大家都在看”底部
['class','google-auto-placed'],//底部空白
['id',/\b[0-9a-z]{6,8}_\b/],//右侧“24小时推文”夹杂,其他夹杂
//底部
//背景
['id','bgAdWrap'],//背景
//激进
//['class','groom-read'],//文章底部推荐阅读
['class','news-list clear'],//文章底部推荐阅读
];
}
//******************
//---------中国网
//******************
else if (domain.includes('china.com')) {
console.log('[广告去除] 中国网');
names = [
//全屏悬浮
['id','plugin-newspush'],//底部
//顶部
['id',/\bBAIDU_SSP__wrapper_u[0-9_]{9,11}\b/],//
//正文
['id',/\bpicNewList_ad[0-9]{1,2}\b/],//
['class','listItem tt_xxl_L clearfix'],//
['id',/\bCH_MTL_[0-9]{5}\b/],//正文空白
//侧面
['class','container'],//右侧
['src',/\b[^ ]*bd-china-2.appmobile.cn[^ ]*\b/],//右侧
['onmouseup',/\b[^ ]*mouseUpAd_JC[^ ]*\b/],//右侧
['class',/\bside_ads side_ads[0-9]{1,2}\b/],//左侧
['class','adcon margin_bot'],//右侧
['id',/\bnewsListJingcai_[0-9]{1}\b/],//右侧
['id',/\bmedia-[0-9]{1}-[0-9]{1}\b/],//左侧
//底部
['id',/\bpicNewList_ad_[0-9]{1,2}_[0-9]{1,2}\b/],//底部大图
['id',/\bQIHOO__WEB__SO__[0-9_]{16,18}\b/],//底部大图
//底部
//背景
//激进
];
}
//******************
//---------环球网
//******************
else if (domain.includes('finance.huanqiu.com')) {
console.log('[广告去除] 环球网');
names = [
//全屏悬浮
['id','next-box'],//右下
//顶部
//正文
//侧面class="ad-content"
['class','ad-content'],//右侧
['__attr__id','anything'],//右侧
//底部
['class','feed-item feed-other'],//底部夹杂
['class',/\bmediav-newsfeed-listitem-ads_[0-9]{1}\b/],//底部夹杂
//底部
//背景
//激进
];
}
//******************
//---------1905
//******************
else if (domain.includes('1905.com')) {
console.log('[广告去除] 1905电影网');
names = [
//全屏悬浮
['id','next-box'],//右下
//顶部
//正文
['class','mdb-ad'],
//侧面class="ad-content"
['class','ad ad-content bottom'],//右侧
['id',/\badjs_[0-9]{5}\b/],//右侧adjs_32001
//底部
//底部
//背景
//激进
];
}
//******************
//---------通用-接口广告
//******************
if (url) {
console.log('[广告去除] 通用-接口广告');
names.push(...[
['src',/\b[^ ]*pos.baidu.com[^ ]*\b/],//通用
['src',/\b[^ ]*dup.baidustatic.com[^ ]*\b/],//通用
['src',/\b[^ ]*cpro.baidustatic.com[^ ]*\b/],//通用
['src',/\b[^ ]*c.gdt.qq.com[^ ]*\b/],//通用
['herf',/\b[^ ]*c.gdt.qq.com[^ ]*\b/],//通用
['src',/\b[^ ]*sina.cn\/check\?[^ ]*\b/],//通用
['src',/\b[^ ]*googleads.g.doubleclick.net[^ ]*\b/],//通用
['src',/\b[^ ]*pagead2.googlesyndication.com[^ ]*\b/],//通用
//src="https://qgnu18wo.sina.cn/check?src=https%3A%2F%2Fmjs.sinaimg.cn%2Fwap%2Fcustom_html%2Fwap%2F20230511%2F645c9e2002215.html%3Fpdps%3DPDPS000000067809"
//blogbf
])
}
//*************************************************************************************
//----------------------------------------其他提升可读性的操作
//*************************************************************************************
function doOtherThing() {
//******************
//---------搜狐
//******************
if (url.includes('sohu.com/a/')) {
//展开文章
//lookall-box
//lookall-box control-hide
var openA = document.querySelector('div[class="lookall-box"]');
if (openA) {
openA.setAttribute("class", "lookall-box control-hide");
}
//hidden-content control-hide
//hidden-content
var openB = document.querySelector('div[class="hidden-content control-hide"]');
if (openB) {
openB.setAttribute("class", "hidden-content");
}
//显示来源作者
var comeUrl = document.querySelector('span[data-role="original-link"]');
if (comeUrl) {
comeUrl.setAttribute("data-role", "");
}
}
}
//*************************************************************************************
//----------------------------------------广告去除函数
//*************************************************************************************
function delAd(names) {
if (names.length) {
var flag = false;
for (var name of names) {
var tagType = name[0];
var value = name[1];
var elements = [];
//属性内容正则
if (value instanceof RegExp) {
var elementsZero = document.querySelectorAll(`[${tagType}]`);
elements = Array.from(elementsZero).filter(element => value.test(element.getAttribute(tagType)));
}
//只要存在属性
else if (value === 'anything'){
elements = document.querySelectorAll(`[${tagType}]`);
}
//其他正常情况
else{
elements = document.querySelectorAll(`[${tagType}="${value}"]`);
}
if (elements && elements.length) {
for (var i = 0; i < elements.length; i++) {
elements[i].remove();
}
console.log(`[广告去除] ${name} 元素移除成功!`);
flag = true;
} else {
//console.log(`[广告去除] 未发现 ${name} 元素!`);
}
}
if (!flag) {
//console.log("[广告去除] 未发现要移除的元素!");
}
} else {
//console.log("[广告去除] 暂不支持此站点。");
}
}
//*************************************************************************************
//----------------------------------------广告去除
//*************************************************************************************
// 定义要运行的函数
function runDelAd() {
delAd(names);
//console.log("[广告去除] names:"+names);
}
var counter = 0; // 计数器变量
var interval = setInterval(function() {
runDelAd();
counter++; // 每次执行时计数器加一
if (counter === 100) { // 在达到指定次数后停止执行
clearInterval(interval);
}
}, 50);
// 每隔一秒运行一次函数
setInterval(runDelAd, 1000);
setInterval(doOtherThing, 1000);
})();