PHP采集类snoopy详细介绍(snoopy使用教程)

PHP采集类snoopy详细介绍(snoopy使用教程)

本文主要介绍PHP集合类snoopy的详细介绍,以及PHP集合类snoopy的详细使用教程。有需要的朋友可以参考一下。

Snoopy是一个php类,用来模拟浏览器的功能。它可以获取web内容和发送表单,可以用来开发一些收款程序和小偷程序。本文详细介绍了史努比的使用教程。

史努比的一些功能:

抓取网页的内容

抓取网页的文本内容(去掉HTML标签)

抓取网页的链接,表单fetchlinks fetchform

支持代理主机

支持基本用户名/密码认证。

支持User_agent、referer、cookies和header内容。

支持浏览器重定向,并且可以控制重定向深度。

可以将网页中的链接扩展为高质量的URL(默认)

提交数据并获取返回值。

支持跟踪HTML框架

支持重定向时传递cookies

要求php4以上就够了。由于它是php的一个类,所以当支持服务器不支持curl时,它是最佳选择,

Snoopy类方法和示例:

获取(URI)

这是用来抓取网页内容的方法。

$URI参数是被抓取的网页的URL地址。

捕获的结果存储在$this-results中。

如果你正在抓取一帧,Snoopy将跟踪每一帧并将其存储在一个数组中,然后将其存储在$this-results中。

fetchtext(URI)

这个方法类似于fetch(),唯一的区别是这个方法会去掉HTML标签和其他无关数据,只返回网页中的文本内容。

胎儿形态(URI)

这个方法类似于fetch(),唯一不同的是这个方法会去掉HTML标签等无关数据,只返回网页中的表单内容(form)。

fetchlinks(URI)

这个方法类似于fetch(),唯一不同的是这个方法会去掉HTML标签和其他无关数据,只返回网页中的链接。

默认情况下,相对链接将自动完成,并转换为完整的网址。

提交($URI,$formvars)

这个方法向$URL指定的链接地址发送一个确认表单。$formvars是存储表单参数的数组。

提交文本($URI,$formvars)

这种方法类似于submit(),唯一不同的是这种方法会去掉HTML标签等无关数据,登陆后只返回网页中的文本内容。

提交链接(URI)

这个方法类似于submit(),唯一不同的是这个方法会去掉HTML标签等无关数据,只返回网页中的链接。

默认情况下,相对链接将自动完成,并转换为完整的网址。

Snoopy采集类属性: (默认值在括号里)

$host

连接的主机

$port

连接端口

$proxy_host

使用的代理主机(如果有)

$proxy_port

使用的代理主机端口(如果有)

$agent

用户代理伪装(Snoopy v0.1)

$referer

路线信息,如果有的话

$cookies cookies

,如果有的话

$rawheaders

其他标题信息(如果有)

$maxredirs

最大重定向次数,0=不允许(5)

$offsiteok

是否允许异地重定向。(正确)

$expandlinks

完成所有链接以完成地址(真)

$user

验证用户名(如果有)

$pass

验证用户名(如果有)

$accept

http可接受的类型(图像/gif、图像/x-x位图、图像/JPEG、图像/pjpeg、*/*)

$error

哪里报告了错误(如果有)?

从服务器返回

$response_code

响应代码

$headers

从服务器返回的标题信息

$maxlength

最大返回数据长度

$read_timeout

读取操作超时(需要PHP 4 Beta 4)设置为0表示无超时。

$timed_out

如果读取操作超时,该属性返回true(需要PHP 4 Beta 4)

$maxframes

允许跟踪的最大帧数

$status

http已爬网的状态

$temp_dir

web服务器可以写入的临时文件的目录(/tmp)

$curl_path

cURL二进制文件的目录,如果没有cURL二进制文件,则设置为false。

下面是一个例子:

复制代码如下:

包含“snoopy . class . PHP”;

$snoopy=新史努比;

$ snoopy-proxy _ host= https://www . jb51 . net ;

$ snoopy-proxy _ port= 80 ;

$snoopy-agent=(兼容;MSIE 4.01MSN 2.5AOL 4.0windows 98)’;

$ snoopy-referer= https://www . jb51 . net ;

$ snoopy-cookies[ session id ]=238472834723489 l;

$ snoopy-cookies[ favorite color ]= RED ;

$ snoopy-raw headers[ Pragma ]= no-cache ;

$ snoopy-maxredirs=2;

$ snoopy-offsite ok=false;

$ snoopy-expandlinks=false;

$ snoopy-user= Joe ;

$ snoopy-pass= bloe ;

if(snoopy-fetchtext( https://www . jb51 . net ))

{

回显“前”。htmlspecialchars($ snoopy-results)。/PRE n ;

}

其他

提取文档时出现“echo”错误:“”。$ snoopy-错误。 n ;

获取指定的url内容

复制代码如下:服务器端编程语言(Professional Hypertext Preprocessor的缩写)

$ URL= https://www . jb51 . net ;

include( snoopy . PHP );

$snoopy=新史努比;

$ snoopy-fetch($ URL);//获取所有内容

echo $ snoopy-结果;//显示结果

//以下是可选的

$snoopy-fetchtext //获取文本内容(删除html代码)

$snoopy-fetchlinks //获取链接

$snoopy-fetchform //获取表单

表单提交

复制代码如下:服务器端编程语言(Professional Hypertext Preprocessor的缩写)

$ formvars[ username ]= admin ;

$ formvars[ pwd ]= admin ;

$ action= https://www . jb51 . net ;///表单提交地址

$snoopy-submit($action,$ formvars);//$formvars是提交的数组。

echo $ snoopy-结果;//表单提交后获取返回结果。

//以下是可选的

$ snoopy-submit text;//提交后只返回去掉html的文本

$ snoopy-submit links;//提交后只返回链接

现在你已经提交了表格,你可以做很多事情。接下来,我们来伪装一下ip和浏览器。

伪装浏览器

复制代码如下:服务器端编程语言(Professional Hypertext Preprocessor的缩写)

$ formvars[ username ]= LAN fengye ;

$ formvars[ pwd ]= LAN fengye ;

$ action= https://www . jb51 . net ;

包含“snoopy . PHP”;

$snoopy=新史努比;

$ snoopy-cookies[ PHPSESSID ]= fc 106 b 1918 BD 522 cc 863 f 36890 e 6 fff 7 ;//伪装sessionid

$snoopy-agent=(兼容;MSIE 4.01MSN 2.5AOL 4.0windows 98)’;//伪装浏览器

$ snoopy-referer= https://www . jb51 . net ;//伪装源页面地址http_referer

$ snoopy-raw headers[ Pragma ]= no-cache ;//缓存的http头信息

$ snoopy-raw headers[ X _ FORWARDED _ FOR ]= 127 . 0 . 0 . 101 ;//伪装ip

$snoopy-submit($action,$ formvars);

echo $ snoopy-结果;

原来我们可以伪装会话,伪装浏览器,伪装ip,哈哈可以做很多事情。

比如有了验证码,ip投票可以验证,可以连续投票。

Ps:这里ip是伪装的,其实就是http头,所以REMOTE_ADDR得到的ip一般是伪装不了的。

相反,通过http头(可以防止代理的那种)获取ip的,可以自己做ip。

关于如何验证代码,简单说:

首先用常用浏览器查看页面,找到验证码对应的sessionid。

同时记下sessionid和验证码值,

然后用史努比来伪造。

原理:因为是同一个sessionid,所以得到的验证码和第一次输入的验证码是一样的。

有时候我们可能需要伪造更多的东西,史努比完全为我们想到了

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)

$ snoopy-proxy _ host= https://www . jb51 . net ;

$ snoopy-proxy _ port= 8080 ;//使用代理

$ snoopy-maxredirs=2;//重定向次数

$ snoopy-expandlinks=true;//收集时经常使用是否完成链接。

//比如链接/images/taoav.gif可以改成它的完整链接A href= 3359 www.jb51.net/images/taoav.gif 3359 www.jb51.net/images/taoav.gif/a

$snoopy-maxframes=5 //允许的最大帧数

//注意$snoopy-results在抓取帧时返回一个数组

$snoopy-error //返回错误信息

PHP采集类snoopy详细介绍(snoopy使用教程)