PHP 小偷程序应用的几个函数

貌似Snoopy类灰常好用~~~~~~~~

 

#最后更新:07-10-21
#发表:http://kontboy.blog.163.com
#作者:kontboy[AT]Gmail.COM

PHP 小偷程序应用的几个函数

所谓小偷程序,就是读取其它网站的数据到本地,然后对获得的数据进行代码过虑、替换等操作后显示出来,整个过程就像在模仿网页浏览器。

本文将说明,使用fsockopen()函数实现GET和POST请求,以及字符串操作的几个函数。建议你了解一下HTTP请求的过程,这样可以让你更容易理解本文内容。



一,获得网站数据--fsockopen()函数的使用

我们需要用到fsockopen()函数,此函数的作用是建立一个socket链接。

我们举个例子,将fsockopen()看作是你的浏览器。当你想要进入某网站时,首先要在地址栏里输入网址,回车后浏览器会与这个网站建立一个链接,这时浏览器会发送请求信息头,服务器收到请求信息头后,开始返回相应的数据,这些数据就是我们看到的网页的原型(HTML、CSS、JAVASCRIPT、文本等数据)。

以上就是一个简单的HTTP请求过程,为了进一步说明这个函数的作用,我们动手个例子。

1.GET请求,获得网易的主页数据,代码如下:
<?php
//URL
$url='www.163.com';
$data LinkURL($url);
print 
$data;
function 
LinkURL($url)
{
  
//80是指端口,30是指超时时间
  
$fp = @fsockopen($url80$errno$errstr30);
  if (
$fp)
  {
    
//想一想浏览器的例子,我们必须得发送请求信息头,否则服务器不会返回数据,这里是一个GET请求。
    
fputs($fp"GET / HTTP/1.1/r/n");
    
fputs($fp"Host: $url/r/n");
    
fputs($fp"Accept: */*/r/n");
    
fputs($fp"Referer: http://$url//r/n");
    
fputs($fp"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)/r/n");
    
fputs($fp"Connection: Close/r/n/r/n");
  }
  while (
$str fread($fp4096))
  
$data .= $str;
  
fclose($fp); 
  return 
$data;
}
?>

主页数据及服务器返回的信息被保存在$data变量中:

HTTP/1.0 200 OK
Date: Sat, 20 Oct 2007 15:11:52 GMT
Server: Apache/2.2.4 (Unix)
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 129070
Content-Type: text/html; charset=gb2312
Age: 21
X-Cache: HIT from www.163.com
Connection: close



2.实现POST请求,有很多种方式,这里列举几种。

其一:使用stream_context_create()函数:

<?php
$data
=MovieSearch('1','s','1');
print 
$data;

function 
MovieSearch($key,$value,$isdel)
{
  
//例子网站有IP地址限制,最好自己找个网站测试。
  
$url='http://www.veryab.com/Movie/search/Search.jsp';
  
//POST数据
  
$post_data['key'] = $key;
  
$post_data['value'] = $value;
  
$post_data['isdel'] = $isdel;
  
//解析URL地址
  
$URL_Info=parse_url($url);
  
//对数据进行URL编码转换
  
foreach($post_data as $key=>$value)
    
$values[]="$key=".urlencode($value);
  
$data_string=implode("&",$values);
  
//请求信息头
  
$header.="Host: ".$URL_Info["host"]."/n";
  
$header.="Referer: $url/n";
  
$header.="User-Agent: Mozilla 4.0/r/n";
  
$header.="Content-type: application/x-www-form-urlencoded/n";
  
$header.="Content-length: ".strlen($data_string)."/n";
  
$header.="Connection: close";
  
  
//stream_context_create()提交请求信息。
  
$opts['http']['method'] = 'POST';
  
$opts['http']['header'] = $header;
  
$opts['http']['content'] = $data_string;
  
$context stream_context_create($opts);
  
$content file($urlfalse$context);
  
$data implode(''$content);
  return 
$data;
}

其二:使用fsockopen()函数:

<?php
$data
=MovieSearch('1','s','1');
print 
$data;

function 
MovieSearch($key,$value,$isdel)
{
  
$url='http://www.veryab.com/Movie/search/Search.jsp';
  
$post_data['key'] = $key;
  
$post_data['value'] = $value;
  
$post_data['isdel'] = $isdel;
  
$URL_Info=parse_url($url);
  if(!isset(
$URL_Info["port"]))
    
$URL_Info["port"]=80;
  foreach(
$post_data as $key=>$value)
    
$values[]="$key=".urlencode($value);
  
//POST数据
  
$data_string=implode("&",$values);
  
//请求信息头
  
$header.="POST ".$URL_Info["path"]." HTTP/1.1/n";
  
$header.="Host: ".$URL_Info["host"]."/n";
  
$header.="Referer: $referrer/n";
  
$header.="Content-type: application/x-www-form-urlencoded/n";
  
$header.="Content-length: ".strlen($data_string)."/n";
  
$header.="Connection: close/n";
  
$header.="/n";
  
$header.=$data_string."/n";
  
//建立链接
  
$fp fsockopen($URL_Info["host"],$URL_Info["port"],$errorno,$errorstr,30);
  
//发送请信息头
  
fputs($fp$header);
  
//获得数据
  
while ($str = @fread($fp4096))
    
$data .= $str;
  
fclose($fp);
  return 
$data;
}



二.整理数据函数。

1.explode()函数,分割字符串。
  我们获得的网页数据,会有一大部分是不需要的,为了减少操作,我们需要对其进行裁减,把我们需要的部分留下,然后再使用其它函数进行处理。这里有一个“掐头去尾留中间”的函数:
<?php
//要被裁减的数据
$pizza  "piece1 piece2 piece3 piece4 piece5 piece6";
//调用 cut()函数
$data cut($pizza,"piece2","piece5");
//输出:piece3 piece4
print $data;

function 
cut($file,$from,$end)
{
  
//以"piece2"为分隔点对$pizza进行裁减。
  //处理后:$data[0]=piece1
  //       $data[1]=piece3 piece4 piece5 piece6
  
$data=explode($from,$file);
  
  
//再对$data[1]进行裁减,以piece5为分隔点。
  //处理后:$data[0]=piece3 piece4
  //       $data[1]=piece6
  
$data=explode($end,$data[1]);
  return 
$data[0];
}
?>
执行后输出:piece3 piece4,返回piece2和piece5二者之间的所有数据,非常方便。


2.str_replace(),替换数据内容。
由于版面的原因,我举一个简单的例子来说明,相信你一看就会明白:
<?php
$data
="a b c d e f g";
//将$data中的'a',替换成'b'
$data=str_replace("a","b",$data);
print 
$data;
?>
程序输出结果:b b c d e f g


3.strip_tags(),过虑HTML代码。
同样,我们举个简单例子:
<?php
$text 
'<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
//过虑所有html标签
echo strip_tags($text);
echo 
'<br>';
//不过虑 <p> and <a>标签
echo strip_tags($text'<p><a>');
?> 
程序执行结果:
Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vivi万能小偷程序是以php语言进行开发的网站采集系统,只需要输入目标站地址就能全自动采集,高智能的采集程序,支持98%的站点,规则制作十分简单,菜鸟也能制作采集规则,采集不求人。 功能简介: ·后台配置采集节点,输入目标站地址即可全自动智能转换自动全站采集 ·支持https、支持POST获取、支持搜索、支持cookie、支持代理、支持破解防盗链、支持破解防采集 ·全自动分析,内外链接自动转换、图片地址、css、js,自动分析CSS内的图片使得页面风格不丢失 ·广告标签,方便在规则里直接替换广告代码 ·支持自定义标签,标签可自定义内容、自由截取、内容正则截取。可以放在模板里,也可以在规则里替换 ·支持自定义模板,可使用标签diy个性模板,真正做到内容上移花接木 ·调试模式,可观察采集性能,便于发现和解决各种错误 ·多条采集规则一键切换,支持导入导出 ·内置强大替换和过滤功能,标签过滤、站内外过滤、字符串替换、等等 ·IP屏蔽功能,屏蔽想要屏蔽IP地址让它无法访问 蜘蛛访问记录 高级功能 ·url过滤功能,可过滤屏蔽不采集指定链接 ·伪原创,近义词替换有利于seo ·伪静态,url伪静态化,有利于seo ·自动缓存自动更新,可设置缓存时间达到自动更新,css缓存 ·简繁体互转 ·代理IP、伪造IP、随机IP、伪造user-agent、伪造referer来路、自定义cookie,以便应对防采集措施 ·url地址加密转换,个性化url,让你的url地址与众不同 ·关键词内链功能 ·插件机制,内容灵活控制 ·还有更多功能等你发现…… ftp上传需使用二进制上传方式,方法请百度 data文件夹需要读写权限 首次使用程序请到后台进行相关设置,否则出现错位、空白等现象 默认后台:http://网站地址/@admin/index.php 默认账号: admin 默认密码: admin 程序使用环境 php5.2 - php5.5 vivi万能小偷程序 v4.0 更新日志: 1.增加采集开关,关闭时将停止采集仅使用缓存 2.增加替换支持首页和内页区分 3.增加禁止手机版搜索引擎转码 4.增加目标站编码自动识别 5.增加支持首页使用目标站标题 6.优化替换算法 7.优化后台采集节点界面 8.强化后台插件管理 9.仅保留最近1万条蜘蛛记录,为提高性能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值