|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了。 Snoopy是甚么? (下载snoopy)
Snoopy是一个php类,用来仿照web阅读器的功效,它能完成获得网页内容和发送表单的义务。
Snoopy的一些特色:
* 便利抓取网页的内容
* 便利抓取网页的文本内容 (去除HTML标签)
* 便利抓取网页的链接
* 撑持代办署理主机
* 撑持根基的用户名/暗码验证
* 撑持设置 user_agent, referer(去路), cookies 和 header content(头文件)
* 撑持阅读器转向,并能掌握转向深度
* 能把网页中的链接扩大成高质量的url(默许)
* 便利提交数据而且获得前往值
* 撑持跟踪HTML框架(v0.92增添)
* 撑持再转向的时分传递cookies (v0.92增添)
要想懂得的更深切些,你本人Google一下吧。上面就给几个复杂的例子:
1获得指定url内容
PHP代码
复制代码 代码以下:
$url = "http://www.jb51.net";
include("snoopy.php");
$snoopy = new Snoopy;
$snoopy->fetch($url); //获得一切内容
echo $snoopy->results; //显示了局
$snoopy->fetchtext //获得文本内容(去失落html代码)
$snoopy->fetchlinks //获得链接
$snoopy->fetchform //获得表单
2 表单提交
PHP代码
复制代码 代码以下:
$formvars["username"] = "admin";
$formvars["pwd"] = "admin";
$action = "http://www.jb51.net";//表单提交地址
$snoopy->submit($action,$formvars);//$formvars为提交的数组
echo $snoopy->results; //获得表单提交后的 前往的了局
$snoopy->submittext; //提交后只前往 去除html的 文本
$snoopy->submitlinks;//提交后只前往 链接
既然已提交的表单 那就能够做良多工作 接上去咱们来假装ip,假装阅读器
3 假装
PHP代码
复制代码 代码以下:
$formvars["username"] = "admin";
$formvars["pwd"] = "admin";
$action = "http://www.jb51.net";
include "snoopy.php";
$snoopy = new Snoopy;
$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7'; //假装sessionid
$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //假装阅读器
$snoopy->referer = "http://s.jb51.net"; //假装来历页地址 http_referer
$snoopy->rawheaders["Pragma"] = "no-cache"; //cache 的http头信息
$snoopy->rawheaders["X_FORWARDED_FOR"] = "127.0.0.101"; //假装ip
$snoopy->submit($action,$formvars);
echo $snoopy->results;
本来咱们可以假装session 假装阅读器 ,假装ip, haha 可以做良多工作了。
例如 带验证码,验证ip 投票, 可以一直的投。
ps:这里假装ip ,实际上是假装http头, 所以普通的经由过程 REMOTE_ADDR 获得的ip是假装不了,
反而那些经由过程http头来获得ip的(可以避免代办署理的那种) 就能够本人来制作ip。
关于若何验证码 ,复杂说下:
起首用通俗的阅读器, 检查页面 , 找到验证码所对应的sessionid,
同时记下sessionid和验证码值,
接上去就用snoopy去捏造 。
道理:因为是统一个sessionid 所以获得的验证码和第一次输出的是一样的。
4 有时咱们能够需求捏造更多的器材,snoopy完整为咱们想到了
PHP代码
复制代码 代码以下:
$snoopy->proxy_host = "www.jb51.net";
$snoopy->proxy_port = "8080"; //利用代办署理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是不是补全链接 在收集的时分常常用到
// 例如链接为 /images/taoav.gif 可改成它的全链接 http://www.jb51.net/images/taoav.gif,这个中央其实可以在最初输入的时分用ereg_replace函数本人交换
$snoopy->maxframes = 5 //答应的最大框架数
//注重抓取框架的时分 $snoopy->results 前往的是一个数组
$snoopy->error //前往报错信息
下面的根基用法懂得了,上面我就实例演示一次:
PHP代码
复制代码 代码以下:
<?
//echo var_dump($_SERVER);
include("Snoopy.class.php");
$snoopy = new Snoopy;
$snoopy->agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-
CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 FirePHP/0.2.1";//这项是阅读器信
息,后面你用甚么阅读器检查cookie,就用谁人阅读器的信息(ps:$_SERVER可以检查到阅读器的信息)
$snoopy->referer = "http://bbs.jb51.net/index.php";
$snoopy->expandlinks = true;
$snoopy->rawheaders["COOKIE"]="__utmz=17229162.1227682761.29.7.utmccn=(referral)utmcsr=jb51.netutmcct=/html/index.htmlutmcmd=referral; cdbphpchina_smile=1D2D0D1; cdbphpchina_cookietime=2592000; __utma=233700831.1562900865.1227113506.1229613449.1231233266.16; __utmz=233700831.1231233266.16.8.utmccn=(referral)utmcsr=localhost:8080utmcct=/test3.phputmcmd=referral; __utma=17229162.1877703507.1227113568.1231228465.1231233160.58; uchome_loginuser=sinopf; xscdb_cookietime=2592000; __utmc=17229162; __utmb=17229162; cdbphpchina_sid=EX5w1V; __utmc=233700831; cdbphpchina_visitedfid=17; cdbphpchinaO766uPYGK6OWZaYlvHSuzJIP22VpwEMGnPQAuWCFL9Fd6CHp2e%2FKw0x4bKz0N9lGk; xscdb_auth=8106rAyhKpQL49eMs%2FyhLBf3C6ClZ%2B2idSk4bExJwbQr%2BHSZrVKgqPOttHVr%2B6KLPg3DtWpTMUI4ttqNNVpukUj6ElM; cdbphpchina_onlineusernum=3721";
$snoopy->fetch("http://bbs.jb51.net");
$n=ereg_replace("href=\"","href=\"http://bbs.jb51.net/",$snoopy->results );
echo ereg_replace("src=\"","src=\"http://bbs.jb51.net/",$n);
?>
这是摹拟上岸PHPCHINA服装论坛的进程,起首要检查本人阅读器的信
息:echo var_dump($_SERVER);这句代码可以看到本人阅读器的信息,把
$_SERVER['HTTP_USER_AGENT']后边的内容复制上去,粘在$snoopy->agent的中央,然后就是要检查本人的
COOKIE了,用本人在服装论坛的账号上岸服装论坛后,在阅读器地址栏里输出
javascript:document.write(document.cookie),回车,就能够看到本人的cookie信息,复制粘贴
到$snoopy->rawheaders["COOKIE"]=的后边。(我的cookie信息为了平安起见已删除一段内容)
然后再注重:
# $n=ereg_replace("href=\"","href=\"http://bbs.jb51.net/",$snoopy->results );
# echo ereg_replace("src=\"","src=\"http://bbs.jb51.net/",$n);
这两句代码,由于收集到的内容一切的HTML源码地址都是绝对链接,所以要交换成相对链接,如许就能够援用服装论坛的图片和CSS款式了。
多去关于PHP的网站,尤其有很多经典的文章,多读读这些文章显然是有好处的。 |
|