惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Martin Fowler
Martin Fowler
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
The GitHub Blog
The GitHub Blog
Blog — PlanetScale
Blog — PlanetScale
Microsoft Security Blog
Microsoft Security Blog
A
About on SuperTechFans
Vercel News
Vercel News
L
LangChain Blog
B
Blog RSS Feed
Y
Y Combinator Blog
IT之家
IT之家
H
Hackread – Cybersecurity News, Data Breaches, AI and More
GbyAI
GbyAI
V
V2EX
博客园 - 三生石上(FineUI控件)
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
有赞技术团队
有赞技术团队
D
Docker
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
Last Week in AI
Last Week in AI
月光博客
月光博客

PixelNest

会议是效率的杀手 国庆出游记录 对居家办公的一些想法 2022 春节 《搏击俱乐部》的结局 纪念 PAI 头一回达到 100 卡片笔记法 《刑法学讲义》的部分摘录 迁移博客 《UNIX 传奇》摘录 就地过年 一点记录:docker-compose 编排不同项目间的网络 近期读的几本书 办新身份证 git 获取其他分支的单个文件或目录 我的高考成绩 推荐 2020 年上半年的 8 部影视作品 ChromeOS 开发者模式 终于下单了《守望者》 联通来电管家服务 一些实用的 bash 代码片段 关于 鸟枪换炮 《架构整洁之道》摘录 惨淡的星球大战 旧笔记本电脑 if...then... 命令行检测 SSL 证书过期时间 《程序员的职业素养》读书笔记 2019 国庆假期
向百度主动推送网站链接
2019-07-10 · via PixelNest

百度站长工具提供了三种自动提交链接的方法,分别是主动推送、自动推送和 sitemap。

填 sitemap 最方便,但是效果很差。我提交的 sitemap 的最后抓取时间是 2019-06-22,已经有半个多月没有抓取,即使我去后台点击「手动更新文件」也无济于事,其状态一直是「等待」。

自动推送需要在页面上添加由百度提供的一段 JS。这种办法至少有以下缺点:

  • 让页面体积变大
  • 这段 JS 代码可能会被浏览器扩展屏蔽
  • 这段 JS 代码来自百度

只好再尝试主动推送了

今天无奈地写了一个脚本,向百度主动推送网站的各个 URL。实际上所有 URL 还是来自网站的 sitemap。

#!/bin/bash

set -o errexit

BAIDU_URL="http://data.zz.baidu.com/urls"
BAIDU_TOKEN="XXXXXXXXXXX" # replace with your own token

CURL="/usr/bin/curl"
XMLLINT="/usr/bin/xmllint"
URL_TEMP=$(mktemp /tmp/url_XXXXXXXXX)
XML_TEMP=$(mktemp /tmp/xml_XXXXXXXXX)

function green {
  local green="\033[0;32m"
  local end="\033[0m"
  echo -e -n "${green}${1}${end}"
}

function download {
    local website=$1
    local xml_url="$website/sitemap.xml"
    green "downloading $xml_url..."
    $CURL "$xml_url" > "$XML_TEMP" 2>/dev/null
    green "done\n"
}

function push {
    local website=$1
    local count=0
    count=$(wc -l "$URL_TEMP" | awk '{print $1}')
    if [[ $count -gt 0 ]]; then
        green "pushing $count urls to baidu\n"
        $CURL -H 'Content-Type:text/plain' --data-binary @"$URL_TEMP" "${BAIDU_URL}?site=${website}&token=${BAIDU_TOKEN}"
    else
        echo "nothing to push"
    fi
}

function parse {
    local file=$1
    $XMLLINT --format "$file" | grep loc | cut -d '>' -f2 | cut -d ' "$URL_TEMP"
}

function protocol {
    local website=$1
    if [[ ${website:0:4} != "http" ]]; then
        echo "https://$website"
    else
        echo "$website"
    fi
}

function clean {
    rm "$XML_TEMP"
    rm "$URL_TEMP"
    echo ""
    green "byebye"
    echo ""
}

function main {
    local website=$1
    if [[ "x$website" = "x" ]]; then
        echo "no website"
        exit -1
    fi
    website=$(protocol "$website")
    echo "website: $website"
    download "$website"
    parse "$XML_TEMP"
    push "$website"
    clean
}

main "$@"

写了那么多,其实核心就是使用 xmllint 那句,把 URL 从 XML 文件中取出来。本想用 xpath 直接获取 sitemap.xml 里的各个链接内容,摸索了半个小时也没弄成,索性改成粗暴的做法,也就是现在脚本里由管道串起来的一个个 grep 和 cut 命令。

百度站长工具的「主动推送」有推送数据、更新数据和删除数据三个接口,我这个博客的链接并不多,所以我只用了推送数据这一个接口,每次都推全量的 URL。

做主动推送的主要原因是这个博客在百度的收录量太少,而这个「主动推送」呢,也只是死马当活马医。

当前,2019 年 7 月 9 日,这个博客在百度的收录(站长工具后台查看)仅仅是 70 左右,在百度搜索 site:ifttl.com 有 52 个结果,而在 Google 和 Bing 的搜索结果分别有 245 和 148 个。

最后差点忘了,在 crontab 里加上一条,每天定时往百度 push 一把。

05 10 * * * /path/to/the/script/push_to_baidu.sh ifttl.com > /dev/null 2>&1