Greasy Fork

Greasy Fork is available in English.

百度搜索优化sp

Tampermonkey脚本,屏蔽百度推广和各种广告+页面样式美化+url重定向

当前为 2022-11-03 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         百度搜索优化sp
// @namespace    bdso_sp
// @description  Tampermonkey脚本,屏蔽百度推广和各种广告+页面样式美化+url重定向
// @update-url   http://greasyfork.icu/zh-CN/users/218062-vizo
// @author       vizo
// @version      3.0.2
// @require      https://lib.baomitu.com/jquery/3.6.0/jquery.min.js
// @include      https://www.baidu.com/s*
// @run-at       document-start
// @grant        GM_addStyle
// @grant        GM_addElement
// @grant        GM_xmlhttpRequest
// @connect      *
// @license      MIT
// ==/UserScript==

let bdcss = `
body,
div,
th,
td,
.p1,
.p2,
h1,
h2,
h3,
h4,
h5,
h6,
a {
  font-family: sans-serif,"Helvetica Neue",Helvetica,"PingFang SC","Microsoft YaHei","Hiragino Sans GB",Arial;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-weight: normal !important;
}
.c-tools,
.to_tieba,
.res_top_banner,
.op-soft-normal-tip,
.hint_right_middle,
.rrecom-container,
.hint_common_restop,
.rrecom-btn-parent,
.c-pingjia,
.ad-block,
#m2c69bdd0,
#imsg,
#rs_top_new,
#foot,
#page .fk,
#content_left .leftBlock,
#content_left > table,
#content_right .c-gray,
#content_right .hint_right_top,
#content_right .opr-toplist-info,
#content_right table table {
  display: none !important;
}
a.m {
  box-shadow: -9px 0px 0 0px #fff;
  color: #fff;
  pointer-events: none;
}
.container_l {
  width: 100%;
}
#wrapper.wrapper_l {
  overflow: hidden;
}
#head .headBlock {
  margin: 4px 0 10px 0 !important;
}
#head .headBlock a:hover {
  text-decoration: underline !important;
}
#head .headBlock .hint_toprq_tips {
  width: 730px;
  margin: 0 auto;
}
body .result-molecule {
  width: 748px !important;
  margin: 10px auto 10px auto !important;
  padding: 0 !important;
}
#form {
  float: none !important;
  margin: 0 auto !important;
  width: 740px;
  display: block;
  padding-top: 16px;
  padding-left: 0;
  transform: translateX(-6px);
}
#form .s_ipt_wr {
  width: 616px !important;
  height: 36px;
  border: 1px solid #c4c7ce;
  border-radius: 0;
}
#form .s_btn {
  height: 38px !important;
  line-height: 40px;
  font-size: 16px;
  display: block;
  border-radius: 0;
  background-color: #07e;
}

#head.fix-head #form {
  padding-top: 8px;
}
#head.fix-head #form #xyb_goo_so_btn {
  top: 16px;
}
#head.fix-head #form .bdsug-new {
  top: 49px;
}

.soutu-env-result .soutu-layer,
.soutu-env-imgresult .soutu-layer {
  width: 748px !important;
}
.soutu-layer .soutu-url-btn {
  width: 186px !important;
}
.wrapper_l #kw {
  height: 36px;
  font: 16px/36px Microsoft YaHei;
  width: 570px !important;
  margin: 0 !important;
  padding-left: 7px;
}
.content_none {
  width: 748px;
  padding: 40px 0;
  margin: 0 auto;
}
.search_tool_conter {
  margin: 0 auto !important;
}
.nums {
  margin: 0 auto !important;
}
#s_tab {
  width: 717px;
  margin: 0 auto;
  position: relative;
  padding: 72px 0 0 0 !important;
  overflow: visible !important;
  border-bottom: none !important;
  opacity: 0;
  animation: fadeIn 1s both;
}
.s_form::after,
.s_tab::after {
  visibility: visible !important;
}
#s_tab::after {
  content: '';
  width: 5000px;
  height: 1px;
  background: #e1e1e1;
  position: absolute;
  left: -2500px;
  bottom: -2px;
  z-index: 3;
}
.head_nums_cont_inner {
  overflow-x: hidden !important;
  opacity: 0;
  animation: fadeIn 1s both;
}

#content_right {
  display: none !important;
}

body {
  background: #f9f9f9;
  background-attachment: fixed;
}
a {
  text-decoration: none !important;
  color: #07e;
}
a:hover {
  color: #07e;
}
a em {
  text-decoration: none;
}

#u,
#head,
#tool,
#search,
#foot {
  font-size: 14px;
}
#form .s_ipt_wr {
  width: 625px;
}

body .wrapper_new #form .bdsug-new {
  width: 615px;
  border: 1px solid #c4c5c6 !important;
  border-radius: 0;
  top: 57px;
}
.wrapper_new #form .bdsug-new ul {
  border-top: 0 !important;
}
#s_tab b {
  border-bottom: 3px #07e solid;
  color: #07e;
}

#rs {
  width: 690px;
  padding: 10px 20px 10px;
  margin: 10px auto 10px auto !important;
  background-color: #fff;
  border-radius: 2px;
  box-shadow: 0 0 5px #dbdbdb;
  opacity: 0;
  overflow: hidden;
  animation: fadeInUp 0.35s both;
}
#rs a:hover {
  text-decoration: underline !important;
}
#rs .tt {
  border-bottom: 1px solid #ddd;
}
#rs th {
  width: 300px;
  font-size: 15px;
  padding-top: 5px;
  padding-left: 50px;
}
#container {
  margin: 0 auto !important;
}
#content_left {
  width: 748px !important;
}
#content_left td a:hover,
#content_left .c-row a:hover {
  text-decoration: underline !important;
}
#wrapper_wrapper #content_left {
  width: 730px;
  padding-left: 0;
  float: none;
  margin: 0 auto !important;
  padding: 0 !important;
  opacity: 0;
  animation: fadeInUp 0.35s both;
}
#content_left > .c-container {
  width: 100% !important;
  box-sizing: border-box;
  margin-bottom: 10px !important;
  padding: 10px 15px 10px 15px;
  background-color: #fff;
  border-radius: 5px;
  box-shadow: 0 0 5px #d3d5d7;
}
#content_left article[class*="open-source-software-card_"],
#content_left article[class*="aladdin_"] {
  padding: 0;
  box-shadow: none;
}
#content_left .c-container h3 {
  padding-bottom: 5px;
  margin-bottom: 8px;
  font-weight: bold;
  border-bottom: 1px solid #ddd;
}
.c-container h3 a {
  position: relative;
  display: inline-block;
  font-size: 18px;
  font-family: Helvetica Neue, sans-serif, Microsoft YaHei, helvetica, arial;
}
#content_left .c-container h3 a.favurl {
  background-position: 0 5px;
  background-repeat: no-repeat;
}
#content_left .OP_LOG_LINK.c-text {
  font-size: 14px !important;
  vertical-align: -5px;
}
#content_left .OP_LOG_LINK.c-text:visited {
  color: #fff;
}
#content_left .OP_LOG_LINK.c-text:hover {
  color: #fff;
}
#content_left .c-container h3 a:hover {
  color: #07e;
}
#content_left .c-container h3 a:hover:after {
  left: 0;
  width: 100%;
  transition: width 0.35s;
}
#content_left .c-container h3 a:after {
  content: '';
  position: absolute;
  border-bottom: 2px solid #37e;
  bottom: -4px;
  left: 100%;
  width: 0;
  transition: width 0.35s, left 0.35s;
}

#content_left .c-container h3 a {
  position: relative;
}
#content_left .c-container h3 a:visited {
  color: #660099;
}
#content_left .c-container h3 a:visited:hover:after {
  left: 0;
  width: 100%;
  transition: width 0.35s;
}
#content_left .c-container h3 a:visited:after {
  content: '';
  position: absolute;
  border-bottom: 2px solid #660099;
  bottom: -2px;
  left: 100%;
  width: 0;
  transition: width 0.35s, left 0.35s;
}

#content_left .c-abstract {
  width: 100%;
}
#content_left .c-span18 {
  width: 560px;
}
#content_left .c-border {
  width: auto;
  box-shadow: none;
}

#content_left .op-soft-btnbox .c-btn-primary {
  display: none;
}
#content_left .op-soft-btnbox a {
  border: 1px solid;
  padding: 7px;
}

#content_left .op-soft-btnbox a:hover {
  text-decoration: none !important;
  background: #2c99ff;
  color: #fff;
}
#content_left .c-container .f13,
#content_left .c-container .c-row,
.c-abstract {
  font-size: 14px;
  line-height: 24px;
}
.c-border {
  width: 518px;
  padding: 9px;
  margin: auto;
  border: 1px solid #f3f3f3;
  border-bottom-color: #f3f3f3;
  border-right-color: #f3f3f3;
  box-shadow: 1px 2px 0px rgba(0, 0, 0, 0);
}
@keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translateY(30px);
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    -webkit-transform: none;
    transform: none;
  }
}
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

#page {
  display: block;
  width: 710px;
  height: 40px;
  line-height: 40px;
  background-color: transparent !important;
  padding: 5px 5px 5px 15px !important;
  border-radius: 3px;
  margin: 30px auto 80px auto !important;
  text-align: center;
}
#page a,
#page strong {
  height: auto;
  box-shadow: 0 0 10px #c4c5c6;
}
#page .pc:hover {
  background: #07e;
  color: #07e;
}
#page strong .pc {
  background: #07e;
  color: #fff;
}
#page strong .pc:hover {
  background: #07e;
  color: #fff;
}

#page a span:hover {
  background: #07e !important;
  color: #fff !important;
}

#page [class*="page-inner"] {
  padding: 0 !important;
}

#con-at .result-op {
  margin: 10px auto auto 10px;
  padding: 5px 40px 5px 20px;
  background: #fdfdfd;
  box-shadow: 0 0px 1px 0.5px #0f93d2, 0 1px 5px 0px rgba(0, 0, 0, 0.7);
  transition: 0.4s;
}

body > .result-op {
  background: none !important;
}

#content_left > div:not([id]) {
  width: 640px;
  margin-bottom: 10px;
  padding: 10px 45px;
  border-radius: 2px;
  box-shadow: 0 0 5px #c4c5c6;
}
.t > div:not([id]) {
  width: 640px;
  margin-bottom: 10px;
  padding: 10px 45px;
  border-radius: 3px;
  box-shadow: 0 0 10px #c4c5c6;
}

body > div[style*='position: absolute;'],
body > div[style*='position: fixed;'] {
  display: none !important;
}

#content_left > div[style*='display:block !important'] {
  position: absolute !important;
  top: -5000px !important;
  display: none !important;
}

.bdpage-l,
.bdpage-r {
  width: 300px;
  height: 500px;
  overflow: hidden;
  cursor: pointer;
  position: fixed;
  top: 0;
  bottom: 0;
  margin: auto;
}
.bdpage-l.disa,
.bdpage-r.disa {
  cursor: not-allowed;
}
.bdpage-l:hover,
.bdpage-r:hover {
  background: rgba(100, 100, 100, 0.03);
}
.bdpage-l::before,
.bdpage-r::before {
  content: '';
  width: 100px;
  height: 100px;
  border-left: 2px solid #e7e9eb;
  border-bottom: 2px solid #e7e9eb;
  position: absolute;
  top: 0;
  bottom: 0;
  margin: auto;
}
.bdpage-l:hover::before,
.bdpage-r:hover::before {
  border-color: #fff;
}
.bdpage-l {
  left: 0;
}
.bdpage-l::before {
  left: 45%;
  transform: rotate(45deg);
}
.bdpage-r {
  right: 0;
}
.bdpage-r::before {
  right: 45%;
  transform: rotate(225deg);
}
#xyb_goo_so_btn {
  font-size: 15px;
  cursor: pointer;
  position: absolute;
  top: 24px;
  right: -68px;
  z-index: 5;
}
.dn {
  display: none !important;
}

a.cdx_ed {
  position: relative;
}
a.cdx_ed::before {
  content: '已解析url';
  color: #ccc;
  font-size: 12px;
  width: 60px;
  height: 15px;
  line-height: 15px;
  text-align: left;
  position: absolute;
  top: -10px;
  left: 10px;
  z-index: 1;
}
.load-zp {
  width: 8px;
  height: 8px;
  border-radius: 55%;
  box-shadow: -9px -9px #098deb, 9px -9px #098deb, -9px 9px #098deb, 9px 9px #098deb;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
  z-index: 5000;
  pointer-events: none;
  animation: anim1z .9s linear infinite;
}

@keyframes anim1z {
  100% {
    transform: rotate(1turn);
  }
}

@media (max-width: 1280px) {
  .bdpage-l,
  .bdpage-r {
    width: 150px;
  }
}

`

appendBdCss()

function appendBdCss() {
  GM_addElement('style', {
    textContent: bdcss,
    class: 'bdso444yx',
  })
}

//导入CSS

function importCSS() {
  
  let isAddStyle = document.head.querySelector('.bdso444yx')
  
  if (!isAddStyle) {
    appendBdCss()
  }
  
  let gooSo = $('body').find('#xyb_goo_so_btn').length
  if (!gooSo) {
    $('body').find('#form').append('<a id="xyb_goo_so_btn" href="javascript:;">谷歌搜索</a>')
  }
}

$(function() {
  initFunc()

  try {
    let MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver
    let observer = new MutationObserver(initFunc)
    let wrapper = document.querySelector('#wrapper_wrapper')
    //动态监视DOM树的变化
    observer.observe(wrapper, {
      attributes: true,
      childList: true,
      subtree: true,
    })
  } catch (e) {}

  function initFunc() {
    importCSS()
    removeADS()
    cdxUrl()
    appendElem()
    setPNStatus()
  }

  // 设置a标签真实地址
  function cdxUrl() {
    $('#content_left .c-container[mu^="http"]').each((i, v) => {
      let tis = $(v)
      const murl = tis.attr('mu')
      const link = tis.find('.t > a')
      const lnkUrl = link.attr('href')
      if (
        lnkUrl !== murl
        && !murl.includes('baidu.com')
      ) {
        link.attr('href', murl)
      }
    })
  }

  // 上一页下一页按钮
  function appendElem() {
    let len = $('body').find('.bdpage-l').length
    if (!len) {
      $('body').append('<div class="bdpage-l"></div><div class="bdpage-r"></div>')
    }
  }
  
  function showLoading() {
    $('body').append('<div class="load-zp"></div>')
  }
  
  function hideLoading() {
    $('body').find('.load-zp')?.remove()
  }
  
  function throttle(func, wait) {
    let start = 0
    return function(...args) {
      let now = Date.now()
      if (now - start >= wait) {
        func.apply(this, args)
        start = now
      }
    }
  }

  // 设置上下页状态
  function setPNStatus() {
    let fkl = true
    let fkr = true
    $('#page .n').each(function() {
      let that = $(this)
      let text = that.text()
      if (text.includes('上一页')) {
        fkl = false
      }
      if (text.includes('下一页')) {
        fkr = false
      }
    })
    if (fkl) {
      $('body')
        .find('.bdpage-l')
        .addClass('disa')
    } else {
      $('body')
        .find('.bdpage-l')
        .removeClass('disa')
    }
    if (fkr) {
      $('body')
        .find('.bdpage-r')
        .addClass('disa')
    } else {
      $('body')
        .find('.bdpage-r')
        .removeClass('disa')
    }
  }
  
  function showDeferHideLoad() {
    showLoading()
    setTimeout(hideLoading, 3000)
  }
  
  function ckPage(type = 1) {
    $('#page .n').each(function() {
      let that = $(this)
      let text = that.text()
      if (text.includes(type === 1 ? '上一页' : '下一页')) {
        that[0].click()
        showDeferHideLoad()
      }
    })
  }
  
  //屏蔽广告和推广
  function removeADS() {
    let $ads = ['#content_left>div[style*="display:block !important"]', '#content_left>div:not([id])', '#content_left>#clone']
    let $selctor = $($ads.join())
    $selctor.remove()

    $('#content_left .result[id=1]').each(function() {
      let tis = $(this)
      let txt = tis.find('.f13 .m').text()
      if (txt == '广告') {
        tis.remove()
      }
    })
  }
  
  $('body').on('click', '.bdpage-l', function() {
    ckPage(1)
  })
  $('body').on('click', '.bdpage-r', function() {
    ckPage(2)
  })
  
  // 点击谷歌搜索
  $('body').on('mousedown', '#xyb_goo_so_btn', function(e) {
    e.preventDefault()
    if (e.button === 0 || e.button === 1) {
      const goo = localStorage.getItem('bdso[gooUrl]') || 'https://www.google.com.hk/search?q='
      const wd = $('body').find('#kw').val()
      const kw = wd ? encodeURIComponent(wd) : wd
      window.open(goo + kw, '_blank')
    }
  })
  
})