站长工具开源分析之HTTP状态头查询原理与代码
2019-03-22 04:23:40来源: pmume.com 阅读 ()
通常站长朋友们会比较关心网站的404状态、301状态、302等状态,有时候302跳转可能被判为作弊,所以检测是301还是302比较重要,另外如果首页看似可以正常访问,但返回的不是200状态码,对搜索引擎来讲可能存在一些问题!同样,如果设置网站404错误页面时,如果采用跳转,设置不当,返回状态为302也会存在一些问题。
一般会到一些站长工具上去查询,落叶在早期制作站长工具时,通过很多方式思考过这些状态是怎么查询到的,原理是什么,PHP上怎样才能检测到网站页面的状态是不是404等。
本文作为落叶对站长工具“开源分析”系列文章的一部分,对HTTP状态查询的方法进行一些总结,希望大家有兴趣关注。
当用户在浏览器中输入一条网址,敲下回车后,浏览器向网址所在的服务器发出请求,服务器通过一些处理后,将信息返回给浏览器,浏览器再显示出来。服务器返回的信息中就有一部分包含HTTP状态码,那么就包含我们所熟悉的404状态,200状态,301状态等。
我们使用一些浏览器手抓包工具如httpwatch、finder等,通常会观察到返回的HTTP头信息大概如下:
HTTP/1.1 200 OK
Content-Length: 35264
Content-Type: text/html
Content-Location: http://www.pmume.com/index.html
Last-Modified: Sat, 13 Aug 2011 03:27:37 GMT
Accept-Ranges: bytes
ETag: "742a1f36859cc1:6c6bc"
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Date: Sat, 13 Aug 2011 12:18:05 GMT
其中大家一眼就能看到200状态。
那么从站长工具程序角度来看,大概我们需要做的是先能程序去自动访问目标页面,然后抓取返回的HTTP头信息,然后通过正则或者某些方式对返回的头信息进行处理,提取其中的状态头。
我们首先想到的是PHP自带的函数get_headers:
<?php
$url = 'http://www.example.com';
print_r(get_headers($url));
?>
即可得上述状态头信息,但实际使用中WIN平以下效率非常低,查询慢不说,经常查询失败,起初落叶考虑采用循环查询多次,直至成功的方式来返回结果。效果肯定不会太理想,所以重新考虑到更好的方法。
考虑到HTTP状态检测的过程实际也是采集的过程,采集的利器curl应该有更好的方法,一翻研究了解到PHP CURL中有一个提取HTTP头的函数curl_getinfo,不需经过特殊处理直接缓存干净地HTTP头数组,并且稳定比较好。具体代码如下:
<?php
$url=http://www.***.com;
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt ($curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
curl_setopt($curl, CURLOPT_HEADER, 1);//设置采集HTTP头信息
curl_setopt($curl, CURLOPT_NOBODY, 0);//设置不采集内部部分
curl_setopt($curl,CURLOPT_ENCODING, "gzip, deflate");
$data=curl_exec($curl);
$m=curl_getinfo($curl);//处理返回内容获到HTTP头数组信息
curl_close($curl);
if(empty($data)){
return 'fail';
}
echo $m['http_code'];
}
?>
返的$m数组中直接输出$m[‘http_code’]即得到了HTTP状态头。
当然CURL函数的使用,需要服务器开启PHP_CURL扩展,下面是对CURL扩展开启方法的介绍:
1、 将PHP文件夹下的三个文件php_curl.dll,libeay32.dll,ssleay32.dll复制到system32下;
2、 将php.ini(c:WINDOWS目录下)中的;extension=php_curl.dll中的分号去掉;
3、 重启apache或者IIS。
作者:落叶(t.qq.com/guohui) 网站:http://www.pmume.com
落叶原创,首发CHINAZ,尊重版权,转载请注明出处
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:企业如何组建微博营销团队
下一篇:浅谈网站推广之前的功课有哪些
- 工具类小程序10天增长103万全复盘 2021-05-04
- 什么是百度智能小程序单卡?如何获取智能小程序单卡 2020-03-16
- 关于飞聊、好物圈、乌托邦APP等新兴社区社群运营工具的运营 2019-12-27
- 今日头条站长平台:头条搜索爬虫spider介绍 2019-11-29
- 开发者利好!百度智能小程序推出“鱼跃扶持计划” 2019-11-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash