本文主要介绍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 //返回错误信息
?