专栏首页张戈的专栏WordPress百度自动推送JS优化,规避错误、重复推送问题

WordPress百度自动推送JS优化,规避错误、重复推送问题

导读:关注 SEO、关注收录的站长,应该都知道百度搜索提供了一段自动推送的 js 代码,可将任意网页推送到搜索引擎,加快收录。但是,这段代码并不是简单的增加到网页中万事大吉了!百度埋坑技术,你我都懂的!本文主要分享埋坑之自动推送 JS 代码的优化...

一、问题描述

百度近些年推出过多种收录推送工具,比如结构化数据插件、主动推送、自动推送 js 等等。每一次张戈都会对这些东西进行优化处理,主要是因为这些工具都会出现重复推送的弊病!虽然百度并没有申明重复推送会带来什么副作用。但根据我个人的经验,同一篇文章,如果重复推送,可能会让百度蜘蛛认为你这文章更新频繁,不稳定从而进入收录沙盒短期内不会展示!

这一点,在以往的文章中我都反复提出过:

BaiduSubmit:百度 WordPress 结构化数据插件(改进版) WordPress 百度链接主动提交插件:Baidu-links-submit 优化版 WordPress 发布文章主动推送到百度,加快收录保护原创

对于百度最新推出的自动推送 JS 代码,通过站长平台的反馈来看,依然存在重复推送的坑:

Ps:看到这个回复,其实我是打心底鄙视了百度一把!这 js 只需要添加到新页面?那新页面收录之后,我们再去删除 js 代码?那我还要经常关注页面是不是被收录?那几万个页面的网站还得靠工具检测咯?

重复推送到底有没有副作用,百度并没有给我明确的答复。不过管理员明确回复,无需添加主动推送,就算是没有副作用,已收录的页面也添加自动推送 js 代码,也会浪费每天的可推送额度( 当天剩余的可推送 url 条数)!

另外,我们知道,很多时候多个 url 地址其实是同一个页面内容,比如:

http://zhangge.net/liuyan.html
http://zhangge.net/liuyan.html/comment-page-34/#comments

而且,当我们给页面带上查询参数,显示的依然是同一个页面内容,但是 Url 地址变了!!那么自动推送 js 获取到的 Url 也变了!它就会将这个 Url 推送到搜索引擎!实际上,这些相同内容的页面我们并不希望重复抓取和收录!

二、问题解决

根据上面的分析,这类自动推送 js 代码就不能整站添加,而是只需添加到未收录且正规 Url 的页面。

比如:

http://zhangge.net/5093.html 百度已收录,这种页面不添加

http://zhangge.net/5096.html 百度未收录,这种页面要添加

http://zhangge.net/5096.html?from_weixin 百度未收录,但属于重复内容页面,所以不添加

已收录、未收录的判断,关注张戈博客的朋友肯定记得我之前在博客分享过百度是否收录的插件和代码吧!而对于是否是正规页面,也只需要添加一个简单判断。

/**
* WordPress百度搜索自动推送、主动收录JS优化 By 张戈博客
* 文章地址:http://zhangge.net/5100.html
* 转载请保留出处,谢谢合作!
**/
add_action( 'wp_footer', 'bdPushData', 999);

if(!function_exists('baidu_check_record')){
  function baidu_check_record($url,$post_id){
    $baidu_record  = get_post_meta($post_id,'baidu_record',true);
    if( $baidu_record != 1){
        $url='http://www.baidu.com/s?wd='.$url;
        $curl=curl_init();
        curl_setopt($curl,CURLOPT_URL,$url);
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
        $rs=curl_exec($curl);
        curl_close($curl);
        if( BD_PUSH == 'yes' && !preg_match_all('/提交网址/u',$rs) && preg_match_all('/百度为您找到相关结果/u',$rs)){
            update_post_meta($post_id, 'baidu_record', 1) || add_post_meta($post_id, 'baidu_record', 1, true);
            return 1;
        } else {
            return 0;
        }
    } else {
       return 1;
    }
  }
}

if(!function_exists('bdPushData')){
  function bdPushData() {
    global $wpdb;
    $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
    $currentUrl = home_url(add_query_arg(array()));
    //这里修改了下:给get_permalink指定了文章ID
    if(baidu_check_record(get_permalink($post_id), $post_id) == 0 && $currentUrl == get_permalink($post_id)) {
        echo "<script>(function(){
            var bp = document.createElement('script');
            var curProtocol = window.location.protocol.split(':')[0];
            if (curProtocol === 'https') {
                bp.src = 'https://zz.bdstatic.com/linksubmit/push.js';        
            } else {
                bp.src = 'http://push.zhanzhang.baidu.com/push.js';
            }
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(bp, s);
            })();
            (function(){
                var src = (document.location.protocol == 'http:') ? 'http://js.passport.qihucdn.com/11.0.1.js?af9e600e6a4ba6d33cd7f1b088210cf7':'https://jspassport.ssl.qhimg.com/11.0.1.js?af9e600e6a4ba6d33cd7f1b088210cf7';
                document.write('<script src=\"' + src + '\" id=\"sozz\"><\/script>');
            })();</script>";
   }
 }
}

如上 PHP 代码,添加到主题 functions.php 即可。当页面未被百度收录,且被访问的页面地址等于 WordPress 唯一页面地址时,将会输出百度自动推送 js 代码,不符合条件的页面则不会输出。

2016 年 5 月 31 日更新说明:有朋友反馈收录判断不准确,花时间 DEBUG 看了下,发现抓取到的百度搜索结果可能是空白内容等错误内容,导致判断为已收录! 所以,上述代码加入百度搜索结果必要关键词【百度为您找到相关结果】的条件判断,目前来看应该比较准确了,已在使用的朋友请更新到最新代码。

三、其他说明

和以前分享的百度是否收录代码一样的工作原理,文章加载时,会在百度搜索当前文章的 url 地址,如果百度未收录,查询结果中会匹配到【没有找到该 URL。您可以直接访问】或【很抱歉,没有找到与】文字内容。当代码确认页面已收录时,将会在文章中添加一个值为 1 的 baidu_record 自定义栏目。

只有当 baidu_record 这个自定义栏目的值不存在时,代码才会去百度查询收录结果。并且在确认未收录之后,才会在网页 footer 中输出自动推送 js 代码。

这样就规避了已收录页面重复推送和百度实时查询导致加载慢两个问题!

另外,其实还有另一个值得关注的坑:百度统计代码也会自动推送,是否也存在本文提到的问题,就不得而知了。

最后,顺便说明一下,360 搜索也推出了主动收录 js 代码,喜欢折腾的朋友可以参考本文进行优化。

效果补充:实施后,自动推送数量以从 200+降为 20+,说明已收录的文章不会重复推送了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 备案不被K:利用关站保护或搜索引擎线路解析确保无痛备案

    最新消息:张戈博客已分享更完善的无痛备案技巧,欢迎查看!==>http://zhangge.net/5017.html 相信很多站长不想备案的绝大部分原因有 2...

    张戈
  • 分享一个入门级可控多线程shell脚本方案

    说到 shell 可控多线程,网上分享的大部分是管道控制的方案。这种方案,张戈博客也曾经实战并分享过一次:《Shell+Curl 网站健康状态检查脚本,抓出中国...

    张戈
  • 在Linux中发现IP地址冲突的方法

    Linux 下出现 IP 冲突,是不会像 Windows 那样,在右下角弹出冲突提示的。博主就出过一次糗,记得当时是在 VM 虚拟机里面安装了 4 个 redh...

    张戈
  • 马云将于下周一辞去阿里董事长职务

    阿里巴巴董事长马云,在纽约时报采访时宣布,将于下周一辞去阿里巴巴董事长职务。马云,年仅54岁,辞去这一网络金融帝国的宝座,多少令人意外。

    用户1634449
  • BBS论坛(二十二)

     现在点击“添加图片”,上传成功后,在图片的input框里面会显示图片的地址,并且图片存到你的七牛空间里面。

    zhang_derek
  • 数学学位给予我的财富:与数字无关,与生活有关

    大数据文摘
  • 【Hexo实战】SEO(百度、Google)设置

    推广是一个烦人的事情啊喂,特别是对于我们搞技术的来说,可能就不擅长推广,那么怎么才能让别人知道我们呢,我们就要想办法让别人通过搜索就可以搜索到你博客的内容,给我...

    用户1149268
  • Confluence 6 如何保持我空间的整洁

    如果你有很多用户在同一个空间中编辑和创建内容,你的空间将会很快的变得混乱不堪。你可以使用下面的一些步骤来避免这个的发生。

    HoneyMoose
  • openpose模型在AI challenge人体骨骼关键点检测的表现

    因为之前正好看了CMU在CVPR2017上的论文《Realtime Multi-Person 2D Pose Estimation using Part Aff...

    用户7043923
  • 关注性能提升?软件定义一切真实情况分析

    软件定义数据中心、软件定义平台化等等,好像一夜之间软件定义一切这句话深深的印在了每个IT圈内人的脑海中,这句话也成为了现在IT圈里人饭后的谈资。同时随着云计算、...

    静一

扫码关注云+社区

领取腾讯云代金券