大家都知道每个搜索引擎的站长平台都有死链提交工具,为什么要提交死链?引用百度站长平台原话:"当网站死链数据累积过多时,并且被展示到搜索结果页中,对网站本身的访问体验和用户转化都起到了负面影响。另一方面,百度检查死链的流程也会为网站带来额外负担,影响网站其他正常页面的抓取和索引"。 既然要提交死链,那么有没有什么办法能自动收集死链然后提交呢,答案是肯定的,通过Shell脚本每天获取404链接然后提交。
0x01 获取404链接
#!/bin/bash
#定义蜘蛛UA信息(默认是百度蜘蛛)
UA=+http://www.baidu.com/search/spider.html
#前一天的日期(nginx日志)
DATE=`date +%Y-%m-%d -d "1 day ago"`
#定义日志路径
logfile=/opt/nginx/logs/yangfannie.com.log_${DATE}.log
#定义死链文件存放路径
deathfile=/xxxx/deathlink.txt
#定义网站访问地址
website=http://yangfannie.com
#分析日志并保存死链数据
for url in `awk -v str="${UA}" '$9=="404" && $15~str {print $7}' ${logfile}`
do
grep "$url" ${deathfile} >/dev/null || echo ${website}${url} >>${deathfile}
done
然后把脚本通过定时任务每天跑一次即可。
0x02 提交死链
404链接获取到了,接下来就可以上百度站长平台提交了。
站长平台页面
PS:由于脚本是通过nginx的log来获取404链接的,这边就会出现个问题是第一次获取404链接时可能会获取不全的问题,这边可以通过360站长平台的网站安全检测工具来检测出所有的404页面。