php fsock编程,PHP fsockopen 简单抓取网页内容

这几天在做采集的东东,php提供了很多访问远程计算机内容的方法,文件系统的函数些都支持读取远程文件,而fsockopen是争对于socket接口的编程函数,在网上搜了一下发现用这个函数来读取http内容也比较多,但是没有一个比较完善和适合我的,在某个小偷程序上改改,轻而易举的完善fsockopen请求http协议内容,从而获取请求内容.代码如下:

function get_page_content($url){

$url = eregi_replace(‘^http://’, ”, $url);

$temp = explode(‘/’, $url);

$host = array_shift($temp);

$path = ‘/’.implode(‘/’, $temp);

$temp = explode(‘:’, $host);

$host = $temp[0];

$port = isset($temp[1]) ? $temp[1] : 80;

$fp = @fsockopen($host, $port, &$errno, &$errstr, 30);

if ($fp){

@fputs($fp, "GET $path HTTP/1.1\r\nHost: $host\r\nAccept: */*\r\nReferer:$url\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\nConnection: Close\r\n\r\n");

}

$Content = ”;

while ($str = @fread($fp, 4096)){

$Content .= $str;

}

@fclose($fp);

//重定向

if(preg_match("/^HTTP\/\d.\d 301 Moved Permanently/is",$Content)){

if(preg_match("/Location:(.*?)\r\n/is",$Content,$murl)){

return get_page_content($murl[1]);

}

}

//读取内容

if(preg_match("/^HTTP\/\d.\d 200 OK/is",$Content)){

preg_match("/Content-Type:(.*?)\r\n/is",$Content,$murl);

$contentType=trim($murl[1]);

$Content=explode("\r\n\r\n",$Content,2);

$Content=$Content[1];

}

return $Content;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值