2020年php搜索收录查询源码,UA模拟很强:2020年文章是否被百度收录检测代码(附API)...

其实很长时间不怎么收集类似功能性的代码文章,今天还是记录下吧,很早以前就尝试了「百度是否收录检测」这个功能,无论是从WP还是TP的各种途径都进行了测试,代码基本大同小异,通过php中科院使用crl模拟搜索请求,对返回的数据进行分析判断是否被收录,曾经在「Typecho添加“百度是否收录”判断的方法」文章提及,基于成功率太低太低,也就放弃了这个功能。

今天在wfblog看到了一篇文章,初始以为和以前的一样,瞄了一眼后才知道已经升级为API版本,通过模拟UA的方式绕过百度的反爬虫,再利用curl模拟header成功实现了「百度收录」的查询,结果准确度基本都是OK的。

2040375563.jpg

1、调用查询

在模板post.php加入(CSS样式自行修改吧)

加载中

2、JQ判断收录

还是在post.php内加入(必须引入jquery),提示文字在这里自行修改吧。

function baidu_check(){

$.getJSON("https://cn1.api.wfblog.net/baidu.php?domain="+window.location.href,function(result){

if (result.code == 200) {

$('#baidu_icon').removeClass('glyphicon-refresh');

$('#baidu_icon').addClass('glyphicon-ok-circle');

$('#baidu_result').text('百度已收录');

}else if(result.code == 403){

$('#baidu_icon').removeClass('glyphicon-refresh');

$('#baidu_icon').addClass('glyphicon-info-sign');

$('#baidu_result').text('百度未收录');

}else{

$('#baidu_icon').removeClass('glyphicon-refresh');

$('#baidu_icon').addClass('glyphicon-remove-circle');

$('#baidu_result').text('查询收录失败');

}

});

}

baidu_check();

3、API调用源码

为了防止第三方API调用挂掉,wfblog贡献了API的代码,可以自己建立一个php页面进行调用,如果不想建立调用Weifeng的也可以,我的是自己建立的。<?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;

}

$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,'百度为您找到相关结果约','个');

if(empty($number) || $number == 0){

$number = GetBetween($output,'找到相关结果数约','个

');

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];

}

}

?>

整体来说,检测结果的正确度是提升了很高,随便点开几个都是准确的,当然这个判断理论上适用于大多数的网站,TP也好、WP也好,自写的PHP都是很不错的。

the-end.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值