百度站长平台外链提交的主动推送实现
admin 发布于:2019-01-23 10:59:24
阅读:loading
本站挂起来也已经超过3年了,一直没有去关注搜索引擎的收录,直到去年年底发现“雪地里走”、“陈冬冬”这些关键词能够在百度首页搜索排上号时,才发现这个SEO优化的事情还是应该去做的。另外一点本人查看到了好多的个人性质的博客平台,有的人气也老高了,我觉得本站不能纯粹的为经验分享平台了,我也得让更多的人去关注到才行,于是我将详情页面的ajax加载数据的方式给修改成了页面直接显示的方式,不扯多了,本篇文章意不在此,毕竟对于搜索引擎方面我是业余中的业余。
回到主题上,本篇文章主要是用Java代码实现百度站长平台-->链接提交-->自动提交-->主动推送(实时)的功能,前提需要你登录百度站长平台维护站点等(登入看看就知道了),对于链接提交,平台提供了自动提交和手动提交,自动提交又分为主动推送(实时)、自动推送、sitemap,本文实现的就是主动推送。
主动推送是指可以通过平台提供的接口进行实时交互,并返回提交结果,接口示例处提供了4中示例参考,分别为:curl、post推送示例、php推送示例、ruby推送示例,以及推送响应的具体解释,可自行查看。关键的信息是接口的调用地址和参数传递,我们选择以post为例的参数提交方式,参考如下图所示:
package cn.chendd.toolkit;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 百度站长平台收录功能
*
* @author chendd
* @date 2023/3/12 1:50
*/
public class BaiduSiteTest {
public static void main(String[] args) throws Exception {
String urlToken = "http://data.zz.baidu.com/urls?site=https://www.chendd.cn&token=你自己的TOKEN";
//site.txt是每行一个url资源文件的地址
String urls = FileUtils.readFileToString(new File("site.txt"), "utf-8");
new BaiduSiteTest().postUrl(urlToken, urls);
}
/**
* 百度site提交,https://ziyuan.baidu.com/site/index
*/
public String postUrl(String urlToken , String urls) throws Exception {
if(StringUtils.isEmpty(urlToken)) {
throw new RuntimeException("urlToken参数不能为空");
}
int a = urlToken.indexOf("site=");
int b = urlToken.indexOf("token=");
if(a == -1 || b == -1) {
throw new RuntimeException("urlToken参数不合法");
}
final String result = this.postUrls(urlToken, urls);
System.out.println("操作结果:" + result);
new Thread(new Runnable() {
@Override
public void run() {
//将数据存储更新至数据库
}
}).start();
return result;
}
private String postUrls(String urlToken , String url) throws Exception{
String urls[] = StringUtils.split(url , "\r\n");
return this.postUrls(urlToken, urls);
}
private String postUrls(String urlToken , String urls[]) throws Exception {
String result = null;
OutputStreamWriter os = null;
BufferedReader br = null;
try {
URL url = new URL(urlToken);
HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
urlConn.setDoInput(true);
urlConn.setDoOutput(true);
urlConn.setUseCaches(false);
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("Host", "data.zz.baidu.com");
urlConn.setRequestProperty("User-Agent", "curl/7.12.1");
urlConn.setRequestProperty("Content-Length", "83");
urlConn.setRequestProperty("Content-Type", "text/plain");
StringBuilder paramBuilder = new StringBuilder();
for (String u : urls) {
if(StringUtils.isBlank(u)) {
continue;
}
paramBuilder.append(u).append('\n');
}
os = new OutputStreamWriter(urlConn.getOutputStream());
os.append(paramBuilder.toString());
os.flush();
br = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
String line = null;
StringBuilder resultBuilder = new StringBuilder();
while ((line = br.readLine()) != null) {
resultBuilder.append(line);
}
result = resultBuilder.toString();
} catch(Exception e){
throw new Exception("请求发生错误:" + e.getMessage() , e);
} finally {
IOUtils.close(os);
IOUtils.close(br);
}
return result;
}
}
在线访问地址:“/demo/site/baidu.jsp”
其它说明:本站不会记录任何请求出站的参数信息,包含此功能的输入输出结果数据,可放心使用。
点赞