PHP判断网站有没有被百度收录其实方法并不难,比如:PHP字符串函数strpos
39.103.148.125(LJhZcW75S4JZ2GLG)market/market

39.97.126.10 (G6aFSWzAd2frTiKG) www_yongtaikanga/www_yongtaikanga

seo.jpg

先说下strpos吧

网络上也有很多了,这里举个脚本之家的例子方法。原网址:https://www.jb51.net/article/74039.htm

<?php 
/* 
* 检测网页是否被百度收录,返回1则表示收录 返回0表示没有收录 
* @ param string $url 待检测的网址 
*/ 
function checkBaiduInclude($url){ 
 $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(!strpos($rs,'抱歉,没有找到')){ 
 return 1; 
 }else{ 
 return 0; 
 } 
} 

意思很简单了,比如需要检测 https://www.jb51.net/article/74039.htm 这个网址是否被收录,则只需要:
checkBaiduInclude(https://www.jb51.net/article/74039.htm‘);
反回结果为1为收录。为0则没有收录。

接下来我要说的是另外一种,更为稳定和强大的方法,当然我是觉得这个更加稳定。
目前原作者已经公布源代码了,

<?php

/**
 * Baidu
 * @editer: Weifeng
 * @link: https://wfblog.net
 * @version: 1.0
 */
error_reporting(0);
header("Access-Control-Allow-Origin:*");
header('Content-type: application/json');
$domain = @$_GET['domain'];
if(!isset($domain) || empty($domain) || $domain==''){
    $data = array(
        "code" => false,
        "msg" => "未传入请求参数!"
    );
    echo json_encode($data,JSON_UNESCAPED_UNICODE);
    exit;
}

if(substr($domain, -1) == '/'){
    $domain = substr($domain,0,strlen($domain)-1);
}

$data = checkBaidu($domain);
echo json_encode($data,JSON_UNESCAPED_UNICODE);

function checkBaidu($url){
    $header = array(
        "Host:www.baidu.com",
        "Content-Type:application/x-www-form-urlencoded",//post请求
        "Connection: keep-alive",
        "Referer:https://www.baidu.com",
        "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36"
    );

    $url = 'https://www.baidu.com/s?ie=UTF-8&wd='.urlencode($url).'&usm=3&rsv_idx=2&rsv_page=1';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_HTTPHEADER, $header);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($ch);
    curl_close($ch);
    if(strpos($output, '没有找到') || strpos($output, '很抱歉')){
        $data = array(
            "code" => 403,
            "msg" => "该域名暂时未被百度收录!"
        );
    }else{
        $number = GetBetween($output,'<span class="nums_text">百度为您找到相关结果约','个</span>');
        if(empty($number) || $number == 0){
            $number = GetBetween($output,'<b>找到相关结果数约','个</b></p>');
            if(empty($number) || $number == 0){
                $data = array(
                    "code" => false,
                    "msg" => "获取百度收录失败!"
                );
                return $data;
            }
        }

        $data = array(
            "code" => 200,
            "msg" => "该域名已被百度收录!",
            "number" => str_replace(',','',$number)
        );
    }
    return $data;
}

function GetBetween($content,$start,$end){
    $r = explode($start, $content);
    if (isset($r[1])){
        $r = explode($end, $r[1]);
        return $r[0];
    }
}

?>

这个好像也是仁者见仁智者见智,第二种方法也能检查出百度收录了网页的具体数量。

最后修改:2021 年 11 月 25 日 11 : 47 PM
如果觉得我的文章对你有用,请随意赞赏