🏠 返回首頁 

Greasy Fork is available in English.

remove_baijiahao

删除百度搜索中的百家号结果


Installer dette script?
  1. /* jshint esversion: 6 */
  2. // ==UserScript==
  3. // @name remove_baijiahao
  4. // @icon https://bjhstatic.cdn.bcebos.com/favicon.ico
  5. // @namespace http://tampermonkey.net/
  6. // @description 删除百度搜索中的百家号结果
  7. // @version 1.15
  8. // @match *://www.baidu.com/*
  9. // @author Greyh4t
  10. // @grant GM.xmlHttpRequest
  11. // @run-at document-end
  12. // @connect www.baidu.com
  13. // @license GNU GPLv3
  14. // ==/UserScript==
  15. (function () {
  16. 'use strict';
  17. let blockList = ["baijiahao.baidu.com"];
  18. deal_content();
  19. bind_change();
  20. function bind_change() {
  21. let titleEl = document.getElementsByTagName("title")[0];
  22. let MutationObserver = window.MutationObserver || window.WebKitMutationObserver;
  23. if (MutationObserver) {
  24. let MutationObserverConfig = {
  25. childList: true,
  26. subtree: true,
  27. characterData: true
  28. };
  29. let observer = new MutationObserver(function (mutations) {
  30. deal_content();
  31. });
  32. observer.observe(titleEl, MutationObserverConfig);
  33. } else if (titleEl.addEventListener) {
  34. titleEl.addEventListener("DOMSubtreeModified", function (evt) {
  35. deal_content();
  36. }, false);
  37. }
  38. }
  39. function deal_content() {
  40. let content = $('#content_left');
  41. let containers = content.find('.c-container.new-pmd');
  42. for (let i = 0; i < containers.length; i++) {
  43. let container = containers[i];
  44. let tpl = container.getAttribute('tpl');
  45. let top;
  46. let divs;
  47. switch (tpl) {
  48. case "se_com_default":
  49. case "realtime_weak":
  50. case "rel-timeline":
  51. case "wenda_abstract_pc":
  52. case "news-normal":
  53. case "rel-head":
  54. case "news-realtime-weak":
  55. case "rel-common-head":
  56. top = $(container);
  57. divs = [container];
  58. break;
  59. case "timeliness_news2":
  60. top = $(container);
  61. divs = top.children('div');
  62. break;
  63. case "news-realtime":
  64. top = $(container).children('div').children('div').children('div');
  65. divs = top.children('div');
  66. break;
  67. case "sp_realtime_bigpic5":
  68. top = $(container).children('div');
  69. divs = top.children('div');
  70. break;
  71. case "short_video_pc":
  72. top = $(container).children('div.op-short-video-pc').children('div');
  73. divs = top.children('div');
  74. break;
  75. case "short_video":
  76. top = $(container).children('div').children('div').children('div').children('div.c-row');
  77. divs = top.children('div');
  78. break;
  79. case "bjh_addressing":
  80. container.remove();
  81. continue;
  82. default:
  83. continue;
  84. }
  85. handle_divs(container, top, divs);
  86. }
  87. }
  88. // container 为要移除的最外层容器
  89. // top 用来判断top是否还有子元素,如果没有,则移除container
  90. // divs 本次要检查的div列表,应当是top的直接子元素或是container本身
  91. function handle_divs(container, top, divs) {
  92. for (let i = 0; i < divs.length; i++) {
  93. let div = divs[i];
  94. handle_div(container, top, div);
  95. }
  96. }
  97. function handle_div(container, top, div) {
  98. let as = $(div).find('a');
  99. for (let i = 0; i < as.length; i++) {
  100. let a = as[i];
  101. if (is_block(a.hostname)) {
  102. check_remove(container, top, div);
  103. return;
  104. }
  105. if (a.href.indexOf("www.baidu.com/link?url=") > -1) {
  106. handle_fake_url(container, top, div, a);
  107. }
  108. }
  109. }
  110. function is_block(hostname) {
  111. for (let i = 0; i < blockList.length; i++) {
  112. if (hostname.endsWith(blockList[i])) {
  113. return true;
  114. }
  115. }
  116. return false;
  117. }
  118. function handle_fake_url(container, top, div, a) {
  119. let tmpURL = a.href.indexOf("eqid") < 0 ? a.href + "&wd=&eqid=" : a.href;
  120. GM.xmlHttpRequest({
  121. method: "GET",
  122. url: tmpURL,
  123. headers: {
  124. "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
  125. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
  126. "Host": "www.baidu.com",
  127. "Accept-Encoding": "gzip, deflate, br",
  128. "Connection": "keep-alive"
  129. },
  130. onload: function (response) {
  131. let reg = /URL=['|"]([^'|"]+)/;
  132. if (reg.test(response.responseText)) {
  133. let realURL = response.responseText.match(reg)[1];
  134. let o = new URL(realURL);
  135. if (is_block(o.hostname)) {
  136. check_remove(container, top, div);
  137. } else {
  138. // 还原真实地址
  139. $(container).find('a[href="' + a.href + '"]').attr('href', realURL);
  140. }
  141. }
  142. }
  143. });
  144. }
  145. function check_remove(container, top, div) {
  146. div.remove();
  147. if (top.children('div').length == 0) {
  148. container.remove();
  149. }
  150. }
  151. })()