shell脚本——爬取域名一级页面元素并判断其可缓存性
来源:互联网 发布:mp3音频剪辑软件 编辑:程序博客网 时间:2024/05/18 12:38
来了一个域名如何判断其缓存与否,高大上的专业爬虫当然可以做分析,如果不是很严谨的分析,通过shell脚本也可以实现,来看看我这个一层页面的小爬吧,哈哈哈,先脚本执行后的结果图:
在处理的时候,会用elinks把页面上所有的元素爬出来,并做统计,用curl探测头信息,通过cache-control头来做判断是否可缓存,如果一个域名下超过70%的url可缓存,那么我就简单认为这个host是可以缓存的,虽然比较粗糙,但是做一个粗略的参考和学习应该足够。
脚本程序如下:
#/bin/sh#### 分析域名一级页面元素的可缓存的情况################writer:gaolixushowprint(){tput clearecho -e `tput bold`"The web has the url host is(more than 70% item can be cache is yes):"echo -e `tput bold;tput setaf 1;`"Times\tHost\t\t\t\tIp\t\t\t\t\t\t\tyes%\t\tno%\t\tunknown%\tCache(yes/no)"tput sgr0i=2cat /tmp/cachetest/cache.test |awk -F'+' '{print $1}' |sort|uniq -c |sort -nr |while read urldourl_host=`echo $url |awk '{print $2}'`url_yes=`cat /tmp/cachetest/cache.test|egrep $url_host 2>/dev/null |awk -F'+' '{print $5}'|egrep -c yes`url_no=`cat /tmp/cachetest/cache.test|egrep $url_host 2>/dev/null |awk -F'+' '{print $5}'|egrep -c no`url_unknown=`cat /tmp/cachetest/cache.test|egrep $url_host 2>/dev/null |awk -F'+' '{print $5}'|egrep -c unknown`((url_sum=url_yes+url_no+url_unknown))url_yes_b=`awk -v url_yes=$url_yes -v url_sum=$url_sum 'BEGIN{printf "%.1f", url_yes/url_sum*100}'`url_no_b=`awk -v url_no=$url_no -v url_sum=$url_sum 'BEGIN{printf "%.1f", url_no/url_sum*100}'`url_unknown_b=`awk -v url_unknown=$url_unknown -v url_sum=$url_sum 'BEGIN{printf "%.1f", url_unknown/url_sum*100}'`url_ip=`cat /tmp/cachetest/cache.test|egrep $url_host 2>/dev/null |head -1|awk -F'+' '{print $3}'`url_status=`awk -v url_yes_b=$url_yes_b 'BEGIN{if (url_yes_b>70) print "yes";else print "no"}'`echo -n -e "$url"|sed 's/ /\t/'tput cup $i 40echo -n "$url_ip"tput cup $i 96echo -n "$url_yes_b%"tput cup $i 112echo -n "$url_no_b%"tput cup $i 128echo "$url_unknown_b%"tput cup $i 144echo "$url_status"((i+=1))done} host $1 &>/dev/null || { echo "The url is error,can't host!!";exit;}mkdir /tmp/cachetest &> /dev/null[ -f /tmp/cachetest/cache.test ] && rm /tmp/cachetest/cache.testnum=`elinks --dump $1 |egrep $2|sed '/http:/s/http:/\nhttp:/'|awk -F'[/|,]' '/^http/{print $0}' |sort|wc -l`echo `tput bold`"The sum links is $num!!"echo `tput bold`"The analysis is running..."tput sgr0elinks --dump $1 |egrep $2|sed '/http:/s/http:/\nhttp:/'|awk -F'[/|,]' '/^http/{print $0}' |sort|while read urldo url_host=`echo $url|awk -F'[/|,]' '/^http/{print $3}'` url_url=`echo $url|sed "s/$url_host/\t/"|awk '{print $2}'` url_ip=`host $url_host | egrep address |awk '{print $NF}'|sed '{1h;1!H;$g;$!d;s/\n/\//g}'` cc=`curl -s -I -m 3 $url |egrep Cache-Control|head -1|egrep Cache-Control|sed '{1h;1!H;$g;$!d;s/\n/ /g}'` if [ "$cc" ];then cc_n=${#cc} ((cc_n-=1)) cc=`echo $cc|cut -b1-$cc_n` else cc="no cache-control flags or time out" fi cc_i=`echo $cc |sed 's/max-age=/\n/'|awk -F"[,| ]" 'NR==2{print $1}'` if echo $cc|egrep no-cache &>/dev/null || echo $cc|egrep no-store &>/dev/null;then cc_status="no" elif [[ $cc_i = 0 ]];then cc_status="no" elif [[ $cc_i > 0 ]];then cc_status="yes" else cc_status="unknown" fi echo -e "$url_host+$url_url+$url_ip+$cc+$cc_status" >> /tmp/cachetest/cache.test echo -n "#"donesleep 2(showprint)
本文出自 “奔跑的linux” 博客,请务必保留此出处http://benpaozhe.blog.51cto.com/10239098/1747543
0 0
- shell脚本——爬取域名一级页面元素并判断其可缓存性
- Hibernate——一级缓存
- MyBatis——【一级缓存】
- Shell脚本———判断文件
- Linux Shell 脚本自动创建文件并修改其权限
- 在ASPX页面中动态加载ASCX控件,并取其值和给其赋值
- hibernate —— 一级缓存和二级缓存
- Hibernate一级缓存——Session
- mybatis 详解——一级缓存、二级缓存
- 根据一个域名取其根域
- shell脚本中执行python脚本并接收其返回值的例子
- shell脚本判断进程是否存在,并重新启动
- shell脚本判断进程是否存在,并重新启动
- shell脚本 判断文件存在,并比较文件时间
- shell脚本接收参数并判断是否为空
- Shell实现判断进程是否存在并重新启动脚本
- Mybatis介绍之缓存——一级缓存和二级缓存
- Hibernate——一级缓存__二级缓存__查询缓存
- vsftp服务
- ATS代理缓存工作机制流程图(自画)
- 调整ATS日志处理机制及相关脚本
- ATS巧玩儿缓存策略增加动态服务吞吐量
- shell脚本——linux主机监控
- shell脚本——爬取域名一级页面元素并判断其可缓存性
- linux下PXE无人值守环境自动安装脚本
- 栈输入月份输出月份
- mysql互主自动化配置脚本
- ATS通过header头重写解决HIT/502故障
- 深入浅出剖析内容分发网络CDN业务架构
- CDN的cache节点(http)结构及工作原理总结(图自画)
- 大并发下TCP内存消耗优化小记(86万并发业务正常服务)
- 十几万连接几M的流量,吓死“宝宝”了