百度站点自动定期提交网址
通过百度官方 API 构建bash脚本,自动定期提交网址 sitemap 到百度站点收录
Beijing, China: ☀️ 🌡️+30°C 🌬️←7km/h
写在前面
之前尝试提交 sitemap 到 🐶 百度站点进行收录,修改多次还是失败(谷歌和必应都能正常收录 🤏),经过查询相关资料,实践探索,整理内容,构建了通过 API 批量自动化定期 收录方式,同时还能可将提交结果的日志发送至手机通知。
手机通知
- 目前,我使用的是 iPhone,可安装 Bark 应用,适用于安卓的 APP 可自行探索
- 安装
AppStore
直接搜索 Bark 安装- 打开 APP,注册设备(需要打开针对该 APP 的通知权限)
- 直接复制推送内容的命令,例如
curl -k -X POST https://api.day.app/3TMS6fi5A/hello
,即可将hello
这个单词推送到手机的通知;
- 注意: 使用 Windows 自带的 power shell 推送中文容易出现乱码,需要进入 Windows 的管理语言设置,开启非Unicode字符编码;
- 有条件,可以直接在自己的服务器部署
Bark docker server
,保证信息隐私安全
脚本构建
在 public
文件夹下新建baidu_site_api
文件夹,复制站点的 sitemap.xml
至该路径,编辑脚本vim run.sh
并写入以下内容,添加chmod 777 run.sh
确保脚本有执行权限:
#!/usr/bin/zsh
# 找到所有的网址
grep -o '<loc>.*</loc>' sitemap.xml | sed 's/<loc>\(.*\)<\/loc>/\1/' > allurl.txt
# 从allurl.txt中找到10条不在success.txt中的文本行 写入sendurl.txt
# baidu API限制每个站点每天提交的数量为10
[ ! -f "success.txt" ] && touch success.txt
grep -v -F -x -f success.txt allurl.txt | head -n 10 > sendurl.txt
# 调用百度API(可在百度站点中查询个人 token)
curl -H 'Content-Type:text/plain' --data-binary @sendurl.txt "http://data.zz.baidu.com/urls?site=https://www.shaohanyun.top&token=your_token" -o result.txt
# 收录成功则追加 sendurl.txt 的内容到 success.txt 文件
if grep -q "success" result.txt; then
cat sendurl.txt >> success.txt
fi
# 将结果通知到自己手机
result="百度搜索网址收录同步结果 $(cat result.txt)"
curl -k -X POST "https://api.day.app/3zgktMtZksPA/$result"
定时运行
运行crontab -e
,写入以下内容,设置每天早晨 6 点调用:
0 6 * * * cd /home/aliyun/MyBlog/public/baidu_sitemap_submit/ && bash run.sh > run.log
# 基本格式
# * * * * * command
# 分 时 日 月 周 命令
# 第1列表示分钟 00~59 每分钟用*或者 */1表示
# 第2列表示小时 00~23(0表示0点)
# 第3列表示日期 01~31
# 第4列表示月份 01~12
# 第5列标识号星期 0~6(0表示星期天)
# 第6列要运行的命令
# 此外每一列除了数字,还可以有这些符号,其含义如下所示:
# * 代表任何时间,比如第一个 * 就代表一小时中的每分钟都执行
# , 代表不连续的时间,比如 0 8,12,16 * * * 代表每天8,12,16点0分执行
# - 代表连续的时间范围,比如0 5 * * 1-6 代表在周一到周六凌晨5点0分执行
# */n 代表每个多久执行一次,比如*/10 * * * *代表每隔10分钟执行一次
📖 参考文献
💬 评论