利用Golang实现百度实时主动推送url

首先需要申请百度站长账号:

1.百度站长入口

http://zhanzhang.baidu.com/linksubmit/index
网站提高了很多站长所需的东西。你一看便知。

2.登录后:网站抓取——>链接提交

你会发现,百度提供了多种链接提交的方式:
自动提交:
主动推送(实时)、自动推送、 sitemap
手动提交:。

下面主要演示通过java代码进行主动推送。

第一步:主动推送接口
来到主动推送页面,我们可以看到如下页面展示:
在这里插入图片描述
第二步:如何推送
百度站长给出了,相关的使用说明文档
http://zhanzhang.baidu.com/college/courseinfo?id=267&page=2#h2_article_title14

给出的Post推送示例如下:

post推送示例
-------------
POST /urls?site=www.58.com&token=edk7ychrEZP9pDQD HTTP/1.1
User-Agent: curl/7.12.1 
Host: data.zz.baidu.com 
Content-Length: 83
------------------
http://www.example.com/1.html
http://www.example.com/2.html

其中post:对应的推送地址;
User-Agent:用户带来;
Host:主机;
Content-Length内容长度;
接着是推送的地址

其中User-Agent、Content-Length需要我们在表头继续设置。

第三步:Go程序进行推送
利用 Gin进行推送

package main

import (
	"bytes"
	"fmt"
	"net/http"
	"strings"
)

func main() {
	// 定义URL列表
	urls := []string{"http://www.example.com/1.html", "http://www.example.com/2.html"}

	// 将URL列表转换为字符串,并用换行符分隔
	urlsData := strings.Join(urls, "\n")

	// 设置请求URL
	url := "http://data.zz.baidu.com/urls?site=https://www.i8n.com&token=CpdMkE6ArPbK1Uwl"

	// 创建HTTP客户端
	client := &http.Client{}

	// 创建POST请求
	req, err := http.NewRequest("POST", url, bytes.NewBufferString(urlsData))
	if err != nil {
		fmt.Println("创建请求失败:", err)
		return
	}

	// 设置请求头
	req.Header.Set("Content-Type", "text/plain")

	// 发送请求
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("发送请求失败:", err)
		return
	}
	defer resp.Body.Close()

	// 读取响应内容
	body := new(bytes.Buffer)
	_, err = body.ReadFrom(resp.Body)
	if err != nil {
		fmt.Println("读取响应失败:", err)
		return
	}

	// 打印响应内容
	fmt.Println("响应状态码:", resp.Status)
	fmt.Println("响应内容:", body.String())
}

代码说明:

  1. 定义URL列表:将 Ruby 代码中的 urls 数组转换为 Go 中的 []string。
  2. 将URL列表转换为字符串:使用 strings.Join 将 URL 列表转换为字符串,并用换行符分隔。
  3. 设置请求URL:将 Ruby 代码中的 URI.parse 解析后的 URL 赋值给 url 变量。
  4. 创建HTTP客户端:使用 http.Client 创建一个 HTTP 客户端。
  5. 创建POST请求:使用 http.NewRequest 创建一个 POST 请求,并将 URL 列表字符串作为请求体。
  6. 设置请求头:使用 req.Header.Set 设置 Content-Type 为 text/plain。
  7. 发送请求:使用 client.Do 发送请求,并获取响应。
  8. 读取响应内容:使用 bytes.Buffer 读取响应内容,并打印响应状态码和内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I8N社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值