百度站长平台外链提交的主动推送实现


placeholder image
admin 发布于:2019-01-23 10:59:24
阅读:loading

1.基本介绍

本站挂起来也已经超过3年了,一直没有去关注搜索引擎的收录,直到去年年底发现“雪地里走”、“陈冬冬”这些关键词能够在百度首页搜索排上号时,才发现这个SEO优化的事情还是应该去做的。另外一点本人查看到了好多的个人性质的博客平台,有的人气也老高了,我觉得本站不能纯粹的为经验分享平台了,我也得让更多的人去关注到才行,于是我将详情页面的ajax加载数据的方式给修改成了页面直接显示的方式,不扯多了,本篇文章意不在此,毕竟对于搜索引擎方面我是业余中的业余。

回到主题上,本篇文章主要是用Java代码实现百度站长平台-->链接提交-->自动提交-->主动推送(实时)的功能,前提需要你登录百度站长平台维护站点等(登入看看就知道了),对于链接提交,平台提供了自动提交和手动提交,自动提交又分为主动推送(实时)、自动推送、sitemap,本文实现的就是主动推送。

主动推送是指可以通过平台提供的接口进行实时交互,并返回提交结果,接口示例处提供了4中示例参考,分别为:curl、post推送示例、php推送示例、ruby推送示例,以及推送响应的具体解释,可自行查看。关键的信息是接口的调用地址和参数传递,我们选择以post为例的参数提交方式,参考如下图所示:

image.png

image.png

2.jsp代码

image.png

3.servlet代码

image.png

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


}


4.运行效果

image.png

在线访问地址:“/demo/site/baidu.jsp”

其它说明:本站不会记录任何请求出站的参数信息,包含此功能的输入输出结果数据,可放心使用。


 点赞


 发表评论

当前回复:作者

 评论列表


留言区