Typecho 文章页面显示是否已被百度谷歌收录

看到 wordpress 博客上有自动检测并展示是否被百度/谷歌收录的功能,在想 Typecho 是不是也可以实现呢?答案是肯定的!

一、效果

1、文章《【杂记】流水线小计》设置了密码访问,搜索引擎访问均返回 403,故百度和谷歌均未收录:

ALL.NO.RECORD.png

2、文章《【杂记】2/28 起国内 iCloud 将由云上贵州运营》已被谷歌收录,但百度未收录:

BAIDU.NO.GOOGLE.YES.png

3、文章《【教程】给网页标题增加特效》已被百度和谷歌收录:

ALL.RECORD.png

4、被百度收录,但谷歌未收录:

BAIDU.YES.GOOGLE.NO.png

二、实现

主要修改主题模板中的 function.php 和 post.php,可以在后台主题中直接编辑这两个文件,也可以下载下来通过代码编辑器(如 Editplus、Notepad++ 等)编辑后再覆盖上传。

① function.php

文件路径:网站根目录/usr/themes/模板名/function.php,建议修改前先做个备份。

直接在最尾巴或者合适的位置添加以下代码:

//百度收录查询
function baidu_record() {
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
$url2='https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

if(checkBaidu($url)==1)
{echo "已收录";
}
else
{echo "<a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录!\" target=\"_blank\" href=\"https://ziyuan.baidu.com/linksubmit/url?sitename=$url2\">未收录</a>";}
}

   function checkBaidu($url) { 
    $url = 'http://www.baidu.com/s?wd=' . urlencode($url); 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $rs = curl_exec($curl); 
    curl_close($curl); 
    if (!strpos($rs, '没有找到')) { //没有找到说明已被百度收录 
        return 1; 
    } else { 
        return -1; 
    } 
}

//谷歌收录查询
function google_record() {
$url='https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

if(checkGoogle($url)==1)
{echo "已收录";
}
else
{echo "<span style=\"color:red;\">未收录</span>";}
}

   function checkGoogle($url) { 
    $url = 'http://www.google.com/search?q="' . urlencode($url).'"'; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $rs = curl_exec($curl); 
    curl_close($curl); 
    if (!strpos($rs, 'No results') && !strpos($rs, 'Your search')) { //没有结果说明已被谷歌收录 
        return 1; 
    } else { 
        return -1; 
    } 
}

注:关于判断百度谷歌是否收录的代码,网上有好多版本,有的准确有的准确度差些,如果有更好的代码,欢迎交流!

② post.php

文件路径:网站根目录/usr/themes/模板名/post.php,同样建议修改前先做个备份。

可以在最尾巴(如本站)或者你要展示的位置添加以下代码:

<i class="fa fa-search"></i>
<span>百度收录:<?php echo baidu_record() ?></span>
<i class="fa fa-google"></i>
<span>谷歌收录:<?php echo google_record() ?></span>

可以根据需要自己调整下样式。

保存后或者上传后,清理浏览器缓存,即可看到效果。

2018/01/26 更新:
谷歌收录判断似乎有间歇性出错的情况,间歇意思就是有时候可以正确判断,有时候会返回错误值,可能谷歌有做 curl 限制。


参考文章:
1、《typecho文章页面显示是否已被百度收录的方法


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 typecho收录搜索引擎 的文章

 本文最后更新于 2018/01/26 11:38:32,可能因经年累月而与现状有所差异

 引用转载请注明:VirCloud's Blog > 系统 > Typecho 文章页面显示是否已被百度谷歌收录

精选评论

  1. cnfox

    可以授权转载嘛?
    标注来源

    1. 欧文斯

      可以,使用评论时的 IP 访问文章授权地址:https://vircloud.net/action/share/664.md。

  2. 七月

    这个挺好的,请问我可以转载一下么,会标注来源的

    1. 欧文斯

      可以的,保留原文链接即可。

  3. 森纯博客

    这个代码太好了,我拿走了,之前也看过类似的,不过没有谷歌的

    1. 欧文斯

      短期用是可以比较准确判断,久了貌似谷歌会限制