百度自动推送,将要推送的链接整合到一个txt里面,获取txt里的链接推送给百度。
百度官方给出的PHP推送实例如下:
$urls = array(
'http://www.example.com/1.html',
'http://www.example.com/2.html',
);
$api = 'http://data.zz.baidu.com/urls?site=xxxx&token=xxxxxxx';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $urls),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
echo $result;
我们可以看到这个arry里面就是你要推送的网址,如果你有几百甚至上千条网址,那这就会变得很麻烦
我们可以将要推送的网址整合到一个txt里面进行推送
代码如下:
<?php
$str = file_get_contents('url.txt');//将整个文件内容读入到一个字符串中
$str_encoding = mb_convert_encoding($str, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5');//转换字符集(编码)
$arr = explode("\r\n", $str_encoding);//转换成数组
//去除值中的空格
foreach ($arr as &$row) {
$row = trim($row);
}
unset($row);
//得到后的数组
echo "<pre>";
var_dump($arr);
echo "</pre>";
//$urls = array(
// 'http://www.example.com/1.html',
// 'http://www.example.com/2.html',
//);
$api = 'http://data.zz.baidu.com/urls?site=www.xxxx.net&token=xxxxx';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => implode("\n", $arr),
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
echo $result;
?>
我们url.txt放在本php程序目录,和本程序是同一级目录。推送成功显示如下:
然后我们放到目录下,在宝塔设置定时任务即可完成URL自动推送!
我们为了这个PHP的安全可以给他限制IP访问,仅仅允许一个固定IP才能访问,防止被他人恶意访问造成多次推送的情况。
参考这篇文章:《PHP实现限制IP访问网站的方法》
比如我的IP是 1.1.1.1 只有这个IP才能进行百度推送,其他IP访问不可推送!