JAVA对接百度API提交普通收录/SEO
说明:
为了增加内容的曝光量,除了主动让百度爬虫爬取之外,还有普通收录的API提交,程序主动向百度搜索推送资源,缩短爬虫发现网站链接的时间。
官网地址:http://data.zz.baidu.com/
百度推广API的token获取地址:
http://data.zz.baidu.com/site/index
进入之后点击 添加网站
填写完上面这些之后会进行验证, 验证完之后,选择链接提交,有个自动提交能看到密钥;
另外,其实当你完成添加网站之后,来到普通收录界面,API提交是可以直接看到你的token的,如下:
demo:
JAVA对接的demo完整版,可直接拿来用:
package com.test;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.conn.ssl.DefaultHostnameVerifier;import org.apache.http.conn.ssl.SSLConnectionSocketFactory;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClientBuilder;import org.apache.http.impl.client.HttpClients;import org.apache.http.util.EntityUtils;import javax.net.ssl.SSLContext;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import java.util.HashMap;import java.util.Map;public class Test2021117 { /** * 百度链接实时推送 * @param postUrl 需要推送的内容链接 * @return */ public String pushPost(String postUrl) { //推送链接的域名,即 你的网站的域名 String domain = "https://www.xxxxx.com"; //百度主动推送链接准入密钥,即获取到的token String bdToken = "xxxxxxxxxxxxxxxxx"; String linkSubmitUrl="http://data.zz.baidu.com/urls"; String host="data.zz.baidu.com"; linkSubmitUrl+="?site="+domain+"&token="+bdToken; String result=""; HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); //HttpClient CloseableHttpClient client = httpClientBuilder.build(); client = (CloseableHttpClient) wrapClient(client); Map<String, String> msg = new HashMap<>(); HttpPost post = new HttpPost(linkSubmitUrl); //发送请求参数 try { StringEntity s = new StringEntity(postUrl,"utf-8"); s.setContentType("application/json"); post.setEntity(s); post.setHeader("Host", host); post.setHeader("User-Agent", "curl/7.12.1"); post.setHeader("Content-Type", "text/plain"); HttpResponse res = client.execute(post); HttpEntity entity = res.getEntity(); String str= EntityUtils.toString(entity, "utf-8"); result=str; } catch (Exception e) { result=null; e.printStackTrace(); } return result; } private static org.apache.http.client.HttpClient wrapClient(HttpClient client) { try { SSLContext ctx = SSLContext.getInstance("TLSv1"); X509TrustManager tm = new X509TrustManager() { public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; ctx.init(null, new TrustManager[] { tm }, null); SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(ctx, new String[] { "TLSv1" }, null, new DefaultHostnameVerifier()); CloseableHttpClient httpclient = HttpClients.custom().setSSLSocketFactory(sslsf).build(); return httpclient; } catch (Exception ex) { return null; } }}
总结:
如果返回的 result 中包含 success 字段 即可说明提交成功,次日也可在百度的平台–站点信息 里面看到你主动提交的次数: