Greasy Fork is available in English.

百度搜索优化sp

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

// ==UserScript==
// @name         百度搜索优化sp
// @namespace    bdso_sp
// @description  Tampermonkey脚本,屏蔽百度推广和各种广告+页面样式美化+url重定向
// @update-url   https://greasyfork.org/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')
    }
  })
  
})