本文主要介绍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验证用户名(如果有)
$accepthttp可接受的类型(图像/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 允许跟踪的最大帧数
$statushttp已爬网的状态
$temp_dirweb服务器可以写入的临时文件的目录(/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 //返回错误信息
?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。