资讯专栏INFORMATION COLUMN

两个小时写了一个无广告版:百度搜索

lucas / 1897人阅读

摘要:的安全模式提供一个安全环境访问互联网搜索框关键词列表搜索按钮搜索结果搜索分页搜索安全搜索广告已过滤视频图片过滤搜索结果中的广告,和无效结果上键,下键上键下键

效果见图:

不为别的,怕家人搜索到不该搜索的东西、致命的毒药,医院....

代码逻辑目前比较简单,只实现了接口调用,还没有进行过多逻辑判断,这里跟大家分享的目的也是希望人人都能使用安全卫生的搜索环境:

完整代码:(需要油猴浏览器插件)
背景图是采集的bing.com的,会动态跟随变化。

// ==UserScript==
// @name         jsoncode的安全模式
// @namespace    test
// @version      0.1
// @description  提供一个安全环境访问互联网
// @author       jsoncode
// @match        http://**/*
// @match        https://**/*
// @require      https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @grant        GM_xmlhttpRequest
// @grant        GM.getResourceUrl
// @grant        unsafeWindow
// @run-at       document-start ==/ document-end context-menu==
// ==/UserScript==

var q = jQuery.noConflict();
(function() {
    if (location.host == "www.baidu.com") {
        baidu_setTitle();
        baidu_clearBody();
        addStyle();
        addHtml();
        // 搜索框
        var input = q("#search-input");
        // 关键词列表
        var inputList = q("#search-input-list");
        // 搜索按钮
        var searchBtn = q("#searchBtn");
        // 搜索结果
        var content = q("#content—result");
        // 搜索分页
        var pagination = q("#pagination");

        input.focus();
        input.on("keydown", function(e) {
            if (e.keyCode === 38 || e.keyCode === 40) {
                baidu_upAndDown(e);
                inputList.show();
            } else if (e.keyCode === 13) {
                baidu_search(input.val())
                inputList.hide();
            } else {
                var searchKeyword = q(this).val();
                baidu_getKeyWord(searchKeyword);
                inputList.show();
            }
        });

        searchBtn.click(function() {
            baidu_search(input.val());
        });

        q(document).click(function(e) {
            baidu_toggleList(e);
        });
        setTimeout(function() {
            console.clear();
            q("[href*="bdstatic"],[src*="bdstatic"]").remove();
        }, 1000);
    }


    function addStyle() {
        q("head").append("");
        var style = `
            
            `;
        q("head").append(style);
    }

    function addHtml() {
        q("body").css({
            overflow: "hidden"
        }).append(`
            
    `); } function baidu_setTitle(title) { document.title = title || "安全搜索-广告已过滤" } function baidu_clearBody() { document.head.innerHTML = ""; document.body.innerHTML = ""; getBg(function(img) { q("body").css({ backgroundImage:`url(${img})` }) }); } function baidu_getKeyWord(keyword, back) { var callback = back || function() {}; var t1 = new Date().getTime(); var t2 = t1 + 210; inputList.show(); GM_xmlhttpRequest({ method: "GET", url: `https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=${keyword}&json=1&p=3&sid=26524_1464_21098_26350_22160&req=2&bs=&csor=3&pwd=cs&cb=jQuery110208264721847970322_${t1}&_=${t2}`, onload: function(response) { var objStr = response.responseText.match(/(?<=[w+])(([sS]+)(?=))/)[1].replace(/"/g, """); var list = JSON.parse(objStr).s; list = list.concat(["视频", "图片", "api"].map(function(item) { return keyword + " " + item; })); var html = ""; list.forEach(function(item, i) { html += "
  • " + item + "
  • "; }); inputList.html(html); callback() }, onerror: function(reponse) { alert("error"); } }); } function baidu_search(value) { if (value === null || value === "") { return; } GM_xmlhttpRequest({ method: "GET", url: `https://www.baidu.com/s?ie=utf-8&mod=11&isbd=1&isid=10FCC76279E92878&ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=${encodeURIComponent(value)}&rsv_pq=ab4cc49200041a6f&rsv_t=8dfcL6IoYXAYa2vQiTntndpQUwLw3pJRQXVhnn9xy30VSdRSNNnie3QwINA&rqlang=cn&rsv_enter=1&rsv_sug3=6&rsv_sug1=6&rsv_sug7=101&rsv_sid=26524_1464_21098_26350_22160&_ss=1&clist=&hsug=%E5%89%8D%E7%AB%AF%E5%B7%A5%E7%A8%8B%E5%B8%88&csor=2&pstg=5&_cr1=28874`, onload: function(response) { var str = response.responseText.replace(/(data-click|style|tpl)="[^"]+"|/gi, ""); var dom = q(str); var list = dom.find("#content_left").children() var page = dom.find("#page a"); var htmlList = []; list.each(function(i, item) { // 过滤搜索结果中的广告,和无效结果 // if (q(item).hasClass("result")) { htmlList.push(`
    ${item.outerHTML}
    `); // } }); var html = `
    ${htmlList.join("")}
    `; content.html(html); // var pageHtml = []; // page.each(function(i, item) { // q(item).addClass("page-link").find(".fk").remove(); // pageHtml.push(`
  • ${item.outerHTML}
  • `); // }); // pagination.html(pageHtml.join("")); inputList.hide(); input.blur(); }, onerror: function(reponse) { alert("error"); inputList.hide(); } }); } function baidu_upAndDown(e) { var keyCode = e.keyCode; //30上键,40下键 inputList.show(); e.preventDefault(); var list = inputList.children(); if (list.length) { var current = inputList.children(".current"); if (current.length) { var index = current.data("index"); // 上键 if (keyCode === 38) { if (index == 0) { list.last().addClass("current").siblings().removeClass("current"); } else { list.eq(index - 1).addClass("current").siblings().removeClass("current"); } } else { // 下键 if (index >= list.length - 1) { list.first().addClass("current").siblings().removeClass("current"); } else { list.eq(index + 1).addClass("current").siblings().removeClass("current"); } } } else { list.first().addClass("current"); } var value = inputList.children(".current").text(); input.val(value); } return false; } function baidu_toggleList(e) { if (e.target.id === "search-input" || e.target.id === "search-input-list") { inputList.show(); } else { if (e.target.closest("#search-input-list")) { q(e.target).addClass("current").siblings().removeClass("current"); var value = q(e.target).text(); input.val(value); baidu_search(value); } inputList.hide(); } } function getBg(back) { GM_xmlhttpRequest({ method: "GET", url: `https://cn.bing.com/`, onload: function(response) { var img = "https://cn.bing.com" + response.responseText.match(/#bgDiv{[^)]+)/ig)[1].match(/url(([^)]+)?)/)[1]; back(img); }, onerror: function(reponse) {} }); } })();

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/98624.html

    相关文章

    • 九款程序员必备工具,老少皆宜

      摘要:传送门文本编辑器小巧高效的文本编辑器运行便携,体积小巧资源占用小,支持众多程序语言,比如等主流程序语言支持,等网页脚本语言。作为程序员们最喜爱的编辑器之一,像语法高亮,语法折叠,宏等编辑器常用功能一个都不少。 目录 CSDN浏览器助手(开发者必备的浏览器插件) Listary(最强文件搜索神...

      android_c 评论0 收藏0
    • 讲讲自己前端培训的亲身经历,给想去IT培训的人一些建议

      摘要:看到网上各种说达内怎么怎么滴,我以自己亲身经历来讲讲我在达内的这段经历吧。事先申明,中国很多城市都有达内,每个城市很可能不只一个达内培训区,并且达内每一培训期的情况可能不一样。我只讲我培训时所在的达内培训区。这些就是在达内个月基本的生活了。 看到知乎上很多说培训班出来的人咋个了,甚至还有人说培训3个月怎么能和大学四年如一日努力学习的人相比。想着我也是培训出来的,那么就我自身经历说一说吧...

      chunquedong 评论0 收藏1
    • flutter笔记3:基础语法、框架、控件

      摘要:是啥是谷歌推出的一套视觉设计语言。比如有的可以换皮肤,而每一套皮肤就是一种设计语言,有古典风呀炫酷风呀极简风呀神马的,而就是谷歌风,有兴趣的同学可以学习了解一下官方原版和中文翻译版,这是每一个产品经理的必修教材。 flutter环境和运行环境搭建好之后,可以开始撸码了,然而当你打开VScode,在打开项目文件夹后,摆在你面前的是main.dart被打开的样子,里面七七八八的已经写好了一...

      draveness 评论0 收藏0

    发表评论

    0条评论

    lucas

    |高级讲师

    TA的文章

    阅读更多
    最新活动
    阅读需要支付1元查看
    <