用snoopy类采集豌豆角的做法荚一个站点的游戏数据需要哪些属性

博客分类:
php 采集 Snoopy 详解
PHP采集利器snoopy应用详解
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy正确运行需要你的服务器的PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),基本的LAMP服务都支持。
一、Snoopy的一些特点:
  1.抓取网页的内容 fetch
  2.抓取网页的文本内容 (去除HTML标签) fetchtext
  3.抓取网页的链接,表单 fetchlinks fetchform
  4.支持代理主机
  5.支持基本的用户名/密码验证
  6.支持设置user_agent, referer(来路), cookies和header content(头文件)
  7.支持浏览器重定向,并能控制重定向深度
  8.能把网页中的链接扩展成高质量的url(默认)
  9.提交数据并且获取返回值
  10.支持跟踪HTML框架
  11.支持重定向的时候传递cookies,要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。
二、类方法:
fetch($URI)
———–
  这是为了抓取网页的内容而使用的方法。$URI参数是被抓取网页的URL地址。抓取的结果被存储在 $this-&results 中。如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this-&results。
fetchtext($URI)
—————
  本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。
fetchform($URI)
—————
  本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。
fetchlinks($URI)
—————-
  本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。
submit($URI,$formvars)
———————-
  本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。
submittext($URI,$formvars)
————————–
  本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。
submitlinks($URI)
—————-
  本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。
三、类属性: (缺省值在括号里)
$host 连接的主机
$port 连接的端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 来路信息,如果有的话
$cookies cookies, 如果有的话
$rawheaders 其他的头信息, 如果有的话
$maxredirs 最大重定向次数, 0=不允许 (5)
$offsiteok whether or not to allow redirects off-site. (true)
$expandlinks 是否将链接都补全为完整地址 (true)
$user 认证用户名, 如果有的话
$pass 认证用户名, 如果有的话
$accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$error 哪里报错, 如果有的话
$response_code 从服务器返回的响应代码
$headers 从服务器返回的头信息
$maxlength 最长返回数据长度
$read_timeout 读取操作超时 (requires PHP 4 Beta 4+)
设置为0为没有超时
$timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+)
$maxframes 允许追踪的框架最大数量
$status 抓取的http的状态
$temp_dir 网页服务器能够写入的临时文件目录 (/tmp)
$curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false
四、以下是demo
include "Snoopy.class.php";
$snoopy = new S
$snoopy-&proxy_host = "";
$snoopy-&proxy_port = "8080";
$snoopy-&agent = "( MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";
$snoopy-&referer = "/";
$snoopy-&cookies["SessionID"] = 489l;
$snoopy-&cookies["favoriteColor"] = "RED";
$snoopy-&rawheaders["Pragma"] = "no-cache";
$snoopy-&maxredirs = 2;
$snoopy-&offsiteok =
$snoopy-&expandlinks =
$snoopy-&user = "joe";
$snoopy-&pass = "bloe";
if($snoopy-&fetchtext(""))
echo " &PRE&".htmlspecialchars($snoopy-&results)." &/PRE&\n"; &BR&
echo "error fetching document: ".$snoopy-&error."\n";
snoopy采集phpchina示例
//采集phpchina
set_time_limit(0);
require_once("Snoopy.class.php");
$snoopy=new Snoopy();
//登陆论坛
$submit_url = "/bbs/logging.php?action=login";
$submit_vars["loginmode"] = "normal";
$submit_vars["styleid"] = "1";
$submit_vars["cookietime"] = "";
$submit_vars["loginfield"] = "username";
$submit_vars["username"] = "***"; //你的用户名
$submit_vars["password"] = "*****"; //你的密码
$submit_vars["questionid"] = "0";
$submit_vars["answer"] = "";
$submit_vars["loginsubmit"] = "提 交";
$snoopy-&submit($submit_url,$submit_vars);
if ($snoopy-&results)
//获取连接地址
$snoopy-&fetchlinks("/bbs");
$url=array();
$url=$snoopy-&
//print_r($url);
foreach ($url as $key=&$value)
//匹配/bbs/forumdisplay.php?fid=156&sid=VfcqTR地址即论坛板块地址
if (!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\/forumdisplay\.php\?fid=)[0-9]*&sid=[a-zA-Z]{6}/i",$value))
unset($url[$key]);
//print_r($url);
//获取到板块数组$url,循环访问,此处获取第一个模块第一页的数据
foreach ($url as $key=&$value)
if ($i&=1)
//测试限制
//访问该模块,提取帖子的连接地址,正式访问里需要提取帖子分页的数据,然后根据分页数据提取帖子数据
$snoopy=new Snoopy();
$snoopy-&fetchlinks($value);
$tie=array();
$tie[$i]=$snoopy-&
//print_r($tie);
//转换数组
foreach ($tie[$i] as $key=&$value)
//匹配/bbs/viewthread.php?tid=68127& extra=page%3D1&page=1&sid=iBLZfK
if (!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\/viewthread\.php\?tid=)[0-9]*&extra=page\%3D1&page=[0-9]*&sid=[a-zA-Z]{6}/i",$value))
unset($tie[$i][$key]);
//print_r($tie[$i]);
//归类数组,将同一个帖子不同页面的内容放一个数组里
$left='';//连接左边公用地址
$page=array();
foreach ($tie[$i] as $key=&$value)
$left=substr($value,0,52);
foreach ($tie[$i] as $pkey=&$pvalue)
//重组数组
if (substr($pvalue,0,52)==$left)
$page[$j][$m]=$
//去除重复项开始
//$page=array_unique($page);只能用于一维数组
$paget[0]=$page[0];
$nums=count($page);
for ($n=1;$n &$$n++)
$paget[$n]=array_diff($page[$n],$page[$n-1]);
//去除多维数组重复值结束
//去除数组空值
unset($page);
$page=array();//重新定义page数组
$page=array_filter($paget);
//print_r($page);
$title=array();
$content=array();
$tt=array();
foreach ($page as $key=&$value)
//外围循环,针对一个帖子
if (is_array($value))
foreach ($value as $k1=&$v1)
//页内循环,针对一个帖子的N页
$snoopy=new Snoopy();
$snoopy-&fetch($v1);
$temp=$snoopy-&
//读取标题
if (!preg_match_all("/ &h2&(.*) &\/h2&/i",$temp,$tt))
echo "no title";
$title[$u]=$tt[1][1];
unset($tt);
//读取内容
if (!preg_match_all("/ &div id=\"postmessage_[0-9]{1,8}\" class=\"t_msgfont\"&(.*) &\/div&/i",$temp,$tt))
print_r($tt);
echo "no content1";
foreach ($tt[1] as $c=&$c2)
$content[$u].=$c2;
//直接取页内容
$snoopy=new Snoopy();
$snoopy-&fetch($value);
$temp=$snoopy-&
//读取标题
if (!preg_match_all("/ &h2&(.*) &\/h2&/i",$temp,$tt))
echo "no title";
$title[$u]=$tt[1][1];
unset($tt);
//读取内容
if (!preg_match_all("/ &div id=\"postmessage_[0-9]*\" class=\"t_msgfont\"&(.*) &\/div&/i",$temp,$tt))
echo "no content2";
foreach ($tt[1] as $c=&$c2)
$content[$u].=$c2;
print_r($content);
echo "login failed";
浏览: 139866 次
来自: 北京
可以的,测试了。
真的挺方便的啊
定位的话,现在用接口不很方便吗?http://www.haos ...
连你自己都调试不出来的玩意
能否给广告滚动条添加事件监听呢,如何添加呢,我试着用一般的给控 ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'PHP采集类snoopy详细介绍(snoopy使用教程) - CSDN博客
PHP采集类snoopy详细介绍(snoopy使用教程)
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序,本文章详细介绍snoopy的使用教程。
Snoopy的一些特点:
抓取网页的内容 fetch
抓取网页的文本内容 (去除HTML标签) fetchtext
抓取网页的链接,表单 fetchlinks fetchform
支持代理主机
支持基本的用户名/密码验证
支持设置 user_agent, referer(来路), cookies 和 header content(头文件)
支持浏览器重定向,并能控制重定向深度
能把网页中的链接扩展成高质量的url(默认)
提交数据并且获取返回值
支持跟踪HTML框架
支持重定向的时候传递cookies
要求php4以上就可以了 由于本身是php一个类 无需扩支持 服务器不支持curl时候的最好选择,
Snoopy类方法及示例:
fetch($URI)
这是为了抓取网页的内容而使用的方法。
$URI参数是被抓取网页的URL地址。
抓取的结果被存储在 $this-&results 中。
如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this-&results。
fetchtext($URI)
本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。
fetchform($URI)
本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。
fetchlinks($URI)
本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。
submit($URI,$formvars)
本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。
submittext($URI,$formvars)
本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。
submitlinks($URI)
本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。
默认情况下,相对链接将自动补全,转换成完整的URL。
Snoopy采集类属性: (默认值在括号里)
$host 连接的主机
$port 连接的端口
$proxy_host 使用的代理主机,如果有的话
$proxy_port 使用的代理主机端口,如果有的话
$agent 用户代理伪装 (Snoopy v0.1)
$referer 来路信息,如果有的话
$cookies cookies 如果有的话
$rawheaders 其他的头信息, 如果有的话
$maxredirs 最大重定向次数, 0=不允许 (5)
$offsiteok whether or not to allow redirects off-site. (true)
$expandlinks 是否将链接都补全为完整地址 (true)
$user 认证用户名, 如果有的话
$pass 认证用户名, 如果有的话
$accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)
$error 哪里报错, 如果有的话
$response_code 从服务器返回的响应代码
$headers 从服务器返回的头信息
$maxlength 最长返回数据长度
$read_timeout 读取操作超时 (requires PHP 4 Beta 4+) 设置为0为没有超时
$timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+)
$maxframes 允许追踪的框架最大数量
$status 抓取的http的状态
$temp_dir 网页服务器能够写入的临时文件目录 (/tmp)
$curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false
下面是一个示例:
include &Snoopy.class.php&;
&$snoopy = new S
&$snoopy-&proxy_host = &http://www.jb51.net&;
&$snoopy-&proxy_port = &80&;
&$snoopy-&agent = &( MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)&;
&$snoopy-&referer = &http://www.jb51.net&;
&$snoopy-&cookies[&SessionID&] = 489l;
&$snoopy-&cookies[&favoriteColor&] = &RED&;
&$snoopy-&rawheaders[&Pragma&] = &no-cache&;
&$snoopy-&maxredirs = 2;
&$snoopy-&offsiteok =
&$snoopy-&expandlinks =
&$snoopy-&user = &joe&;
&$snoopy-&pass = &bloe&;
&if($snoopy-&fetchtext(&http://www.jb51.net&))
&echo &&PRE&&.htmlspecialchars($snoopy-&results).&&/PRE&\n&;
&echo &error fetching document: &.$snoopy-&error.&\n&;
获取指定url内容
&$url = &http://www.jb51.net&;
&include(&snoopy.php&);
&$snoopy = new S
&$snoopy-&fetch($url); //获取所有内容
&echo $snoopy-& //显示结果
&//可选以下
&$snoopy-&fetchtext //获取文本内容(去掉html代码)
&$snoopy-&fetchlinks //获取链接
&$snoopy-&fetchform& //获取表单
$formvars[&username&] = &admin&;
$formvars[&pwd&] = &admin&;
$action = &http://www.jb51.net&;//&/a&表单提交地址
$snoopy-&submit($action,$formvars);//$formvars为提交的数组
echo $snoopy-& //获取表单提交后的 返回的结果
//可选以下
$snoopy-& //提交后只返回 去除html的 文本
$snoopy-&//提交后只返回 链接
既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器
伪装浏览器
$formvars[&username&] = &lanfengye&;
$formvars[&pwd&] = &lanfengye&;
$action = &http://www.jb51.net&;
include &snoopy.php&;
$snoopy = new S
$snoopy-&cookies[&PHPSESSID&] = 'fc106bcc863f36890e6fff7'; //伪装sessionid
$snoopy-&agent = &( MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)&; //伪装浏览器
$snoopy-&referer = &http://www.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-&
原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。
例如 带验证码,验证ip 投票, 可以不停的投。
ps:这里伪装ip ,其实是伪装http头, 所以一般的通过 REMOTE_ADDR 获取的ip是伪装不了,
反而那些通过http头来获取ip的(可以防止代理的那种) 就可以自己来制造ip。
关于如何验证码 ,简单说下:
首先用普通的浏览器, 查看页面 , 找到验证码所对应的sessionid,
同时记下sessionid和验证码值,
接下来就用snoopy去伪造 。
原理:由于是同一个sessionid 所以取得的验证码和第一次输入的是一样的。
有时我们可能需要伪造更多的东西,snoopy完全为我们想到了
$snoopy-&proxy_host = &http://www.jb51.net&;
$snoopy-&proxy_port = &8080&; //使用代理
$snoopy-&maxredirs = 2; //重定向次数
$snoopy-&expandlinks = //是否补全链接 在采集的时候经常用到
// 例如链接为 /images/taoav.gif 可改为它的全链接 &a href=&http://www.jb51.net/images/taoav.gif&&http://www.jb51.net/images/taoav.gif&/a&
$snoopy-&maxframes = 5 //允许的最大框架数
//注意抓取框架的时候 $snoopy-&results 返回的是一个数组
$snoopy-&error //返回报错信息
来源:http://www.jb51.net/article/51250.htm
本文已收录于以下专栏:
相关文章推荐
NAME:Snoopy - the PHP net client v2.0.0
SYNOPSIS(简单示例):include &Snoopy.class.php&;
$snoopy = new Sno...
第一篇文章介绍了使用原生的PHP和PHP的扩展库实现了爬虫技术。本文尝试使用PHP爬虫框架来写,首先对三种爬虫技术phpQuery,PHPcrawer, snoopy进行对比,然后分析模拟浏览器行为的...
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。Snoopy正确运行需要你的服务器的PHP版本在4以上, 并且支持PCRE(Perl Compatible Regular...
Snoopy的一些特点:
1抓取网页的内容 fetch
2 抓取网页的文本内容 (去除HTML标签) fetchtext
3抓取网页的链接,表单 fetchlinks fetchform...
Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单,可以用来开发一些采集程序和小偷程序。
Snoopy的一些特点:
抓取网页的内容 fetch
抓取网页的文本内容 ...
Snoopy的一些特点:
1抓取网页的内容 fetch
2 抓取网页的文本内容 (去除HTML标签) fetchtext
3抓取网页的链接,表单 fetchlinks fetchform...
snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。官方网站 http://snoopy.sourceforge.net/
Snoopy的一些功能特点:
Snoopy是什么? 
Snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。
Snoopy的一些特点:
1抓取网页的内容 fetch
2 抓取网页...
Snoopy.class.php 是一个关于HTTP协议访问操作的类库,主要是使用在 MagpieRSS 中用于远程文件的抓取,我原来转载的一篇文章大致有简单的介绍这个东西,今天无聊,把代码帖出来,大...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)snoopy 强大的PHP采集类使用实例代码_PHP教程_编程技术
您的位置: &
& snoopy 强大的PHP采集类使用实例代码
下载地址: http://www.jb51.net/codes/33397.html Snoopy的一些特点: 1抓取网页的内容 fetch 2 抓取网页的文本内容 (去除HTML标签) fetchtext 3抓取网页的链接,表单 fetchlinks fetchform 4 支持代理主机 5支持基本的用户名/密码验证 6 支持设置 user_agent, referer(来路), cookies 和 header content(头文件) 7支持浏览器重定向,并能控制重定向深度 8能把网页中的链接扩展成高质量的url(默认) 9提交数据并且获取返回值 10 支持跟踪HTML框架 11支持重定向的时候传递cookies 要求php4以上就可以了 由于本身是php一个类 无需扩支持 服务器不支持curl时候的最好选择, 类方法: fetch($URI) ―――C 这是为了抓取网页的内容而使用的方法。 $URI参数是被抓取网页的URL地址。 抓取的结果被存储在 $this-&results 中。 如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this-&results。 fetchtext($URI) ――――― 本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。 fetchform($URI) ――――― 本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。 fetchlinks($URI) ―――――- 本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。 默认情况下,相对链接将自动补全,转换成完整的URL。 submit($URI,$formvars) ―――――――- 本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。 submittext($URI,$formvars) ――――――――C 本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。 submitlinks($URI) ―――――- 本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。 默认情况下,相对链接将自动补全,转换成完整的URL。 类属性: (缺省值在括号里) $host 连接的主机 $port 连接的端口 $proxy_host 使用的代理主机,如果有的话 $proxy_port 使用的代理主机端口,如果有的话 $agent 用户代理伪装 (Snoopy v0.1) $referer 来路信息,如果有的话 $cookies cookies, 如果有的话 $rawheaders 其他的头信息, 如果有的话 $maxredirs 最大重定向次数, 0=不允许 (5) $offsiteok whether or not to allow redirects off-site. (true) $expandlinks 是否将链接都补全为完整地址 (true) $user 认证用户名, 如果有的话 $pass 认证用户名, 如果有的话 $accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*) $error 哪里报错, 如果有的话 $response_code 从服务器返回的响应代码 $headers 从服务器返回的头信息 $maxlength 最长返回数据长度 $read_timeout 读取操作超时 (requires PHP 4 Beta 4+) 设置为0为没有超时 $timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+) $maxframes 允许追踪的框架最大数量 $status 抓取的http的状态 $temp_dir 网页服务器能够写入的临时文件目录 (/tmp) $curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false 以下是demo 复制代码 代码如下:
include "Snoopy.class.php"; $snoopy = new S $snoopy-&proxy_host = "http://www.jb51.net"; $snoopy-&proxy_port = "80"; $snoopy-&agent = "( MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; $snoopy-&referer = "http://www.jb51.net"; $snoopy-&cookies["SessionID"] = 489l; $snoopy-&cookies["favoriteColor"] = "RED"; $snoopy-&rawheaders["Pragma"] = "no-cache"; $snoopy-&maxredirs = 2; $snoopy-&offsiteok = $snoopy-&expandlinks = $snoopy-&user = "joe"; $snoopy-&pass = "bloe"; if($snoopy-&fetchtext("http://www.jb51.net")) { echo "&PRE&".htmlspecialchars($snoopy-&results)."&/PRE&\n"; } else echo "error fetching document: ".$snoopy-&error."\n";
以下是一些代码片段: 1、获取指定url内容 复制代码 代码如下:
&? $url = "http://www.jb51.net"; include("snoopy.php"); $snoopy = new S $snoopy-&fetch($url); //获取所有内容 echo $snoopy-& //显示结果 //可选以下 $snoopy-&fetchtext //获取文本内容(去掉html代码) $snoopy-&fetchlinks //获取链接 $snoopy-&fetchform //获取表单 ?&
2 表单提交 复制代码 代码如下:
&?php $formvars["username"] = "admin"; $formvars["pwd"] = "admin"; $action = "http://www.jb51.net";//&/a&表单提交地址 $snoopy-&submit($action,$formvars);//$formvars为提交的数组 echo $snoopy-& //获取表单提交后的 返回的结果 //可选以下 $snoopy-& //提交后只返回 去除html的 文本 $snoopy-&//提交后只返回 链接 ?&
既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器 3 伪装 复制代码 代码如下:
&?php $formvars["username"] = "admin"; $formvars["pwd"] = "admin"; $action = "http://www.jb51.net"; include "snoopy.php"; $snoopy = new S $snoopy-&cookies["PHPSESSID"] = "fc106bcc863f36890e6fff7"; //伪装sessionid $snoopy-&agent = "( MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //伪装浏览器 $snoopy-&referer = http://www.jb51. //伪装来源页地址 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-& ?&
原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。 例如 带验证码,验证ip 投票, 可以不停的投。 ps:这里伪装ip ,其实是伪装http头, 所以一般的通过 REMOTE_ADDR 获取的ip是伪装不了, 反而那些通过http头来获取ip的(可以防止代理的那种) 就可以自己来制造ip。 关于如何验证码 ,简单说下: 首先用普通的浏览器, 查看页面 , 找到验证码所对应的sessionid, 同时记下sessionid和验证码值, 接下来就用snoopy去伪造 。 原理:由于是同一个sessionid 所以取得的验证码和第一次输入的是一样的。 4 有时我们可能需要伪造更多的东西,snoopy完全为我们想到了 复制代码 代码如下:
&?php $snoopy-&proxy_host = "http://www.jb51.net"; $snoopy-&proxy_port = "8080"; //使用代理 $snoopy-&maxredirs = 2; //重定向次数 $snoopy-&expandlinks = //是否补全链接 在采集的时候经常用到 // 例如链接为 /images/taoav.gif 可改为它的全链接 &a href="http://www.jb51.net/images/taoav.gif"&http://www.jb51.net/images/taoav.gif&/a& $snoopy-&maxframes = 5 //允许的最大框架数 //注意抓取框架的时候 $snoopy-&results 返回的是一个数组 $snoopy-&error //返回报错信息 ?&
( 02:05:12)
( 15:43:00)
相关排行总榜PHP采集类 使用Snoopy.class.php做http get post请求
我的图书馆
PHP采集类 使用Snoopy.class.php做http get post请求
,用来模拟浏览器的功能,可以获取网页内容,发送表单。一.Snoopy的特点:1、抓取网页的内容 fetch2、抓取网页的文本内容 (去除HTML标签) fetchtext3、抓取网页的链接,表单 fetchlinks fetchform4、支持代理主机5、支持基本的用户名/密码验证6、支持设置 user_agent, referer(来路), cookies 和 header content(头文件)7、支持浏览器重定向,并能控制重定向深度8、能把网页中的链接扩展成高质量的url(默认)9、提交数据并且获取返回值10、支持跟踪HTML框架11、支持重定向的时候传递cookies要求php4以上就可以了,由于本身是php一个类,无需扩支持,服务器不支持curl时候的最好选择。通过get方法获取指定url内容fetch($url);&//获取所有内容&&&
echo&$snoopy-&&//显示结果&&&
//可选以下&&&
$snoopy-&fetchtext&//获取文本内容(去掉html代码)&&&
$snoopy-&fetchlinks&//获取链接&&&
$snoopy-&fetchform&&//获取表单&&&
?&//表单提交
submit($action,$formvars);//$formvars为提交的数组&&&
echo&$snoopy-&&//获取表单提交后的&返回的结果&&&
//可选以下&&&
$snoopy-&&//提交后只返回&去除html的&文本&&&
$snoopy-&//提交后只返回&链接&&&
?&既然已经提交的表单 那就可以做很多事情 接下来我们来伪装ip,伪装浏览器 伪装cookies["PHPSESSID"]&=&'fc106bcc863f36890e6fff7';&//伪装sessionid&&&
$snoopy-&agent&=&"(&MSIE&4.01;&MSN&2.5;&AOL&4.0;&Windows&98)";&//伪装浏览器&&&
$snoopy-&referer&=&;&//伪装来源页地址&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-&&&&
?&原来我们可以伪装session 伪装浏览器 ,伪装ip, haha 可以做很多事情了。例如 带验证码,验证ip 投票, 可以不停的投。ps:这里伪装ip ,其实是伪装http头, 所以一般的通过 REMOTE_ADDR 获取的ip是伪装不了,反而那些通过http头来获取ip的(可以防止代理的那种) 就可以自己来制造ip。关于如何验证码 ,简单说下:首先用普通的浏览器, 查看页面 , 找到验证码所对应的sessionid,同时记下sessionid和验证码值,接下来就用snoopy去伪造 。原理:由于是同一个sessionid 所以取得的验证码和第一次输入的是一样的。有时我们可能需要伪造更多的东西,snoopy完全为我们想到了proxy_host&=&"";&&&
$snoopy-&proxy_port&=&"8080";&//使用代理&&&
$snoopy-&maxredirs&=&2;&//重定向次数&&&
$snoopy-&expandlinks&=&&//是否补全链接&在采集的时候经常用到&&&
//&例如链接为&/images/taoav.gif&可改为它的全链接&/images/taoav.gif&&&
$snoopy-&maxframes&=&5&//允许的最大框架数&&&
//注意抓取框架的时候&$snoopy-&results&返回的是一个数组&&&
$snoopy-&error&//返回报错信息&&&
?&二、类方法:fetch($URI)&———–  这是为了抓取网页的内容而使用的方法。$URI参数是被抓取网页的URL地址。抓取的结果被存储在 $this-&results 中。如果你正在抓取的是一个框架,Snoopy将会将每个框架追踪后存入数组中,然后存入 $this-&results。fetchtext($URI)&—————  本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中的文字内容。fetchform($URI)&—————  本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中表单内容(form)。fetchlinks($URI)&—————-  本方法类似于fetch(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。默认情况下,相对链接将自动补全,转换成完整的URL。submit($URI,$formvars)&———————-  本方法向$URL指定的链接地址发送确认表单。$formvars是一个存储表单参数的数组。submittext($URI,$formvars)&————————–  本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回登陆后网页中的文字内容。submitlinks($URI)&—————-  本方法类似于submit(),唯一不同的就是本方法会去除HTML标签和其他的无关数据,只返回网页中链接(link)。&默认情况下,相对链接将自动补全,转换成完整的URL。三、类属性: (缺省值在括号里)$host 连接的主机&$port 连接的端口&$proxy_host 使用的代理主机,如果有的话&$proxy_port 使用的代理主机端口,如果有的话&$agent 用户代理伪装 (Snoopy v0.1)&$referer 来路信息,如果有的话&$cookies cookies, 如果有的话&$rawheaders 其他的头信息, 如果有的话&$maxredirs 最大重定向次数, 0=不允许 (5)&$offsiteok whether or not to allow redirects off-site. (true)&$expandlinks 是否将链接都补全为完整地址 (true)&$user 认证用户名, 如果有的话&$pass 认证用户名, 如果有的话&$accept http 接受类型 (image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*)&$error 哪里报错, 如果有的话&$response_code 从服务器返回的响应代码&$headers 从服务器返回的头信息&$maxlength 最长返回数据长度&$read_timeout 读取操作超时 (requires PHP 4 Beta 4+)&设置为0为没有超时&$timed_out 如果一次读取操作超时了,本属性返回 true (requires PHP 4 Beta 4+)&$maxframes 允许追踪的框架最大数量&$status 抓取的http的状态&$temp_dir 网页服务器能够写入的临时文件目录 (/tmp)&$curl_path cURL binary 的目录, 如果没有cURL binary就设置为 false四、以下是demoinclude&"Snoopy.class.php";&&
$snoopy&=&new&S&
$snoopy-&proxy_host&=&"";&&
$snoopy-&proxy_port&=&"8080";&
$snoopy-&agent&=&"(&MSIE&4.01;&MSN&2.5;&AOL&4.0;&Windows&98)";&&
$snoopy-&referer&=&"/";&
$snoopy-&cookies["SessionID"]&=&489l;&&
$snoopy-&cookies["favoriteColor"]&=&"RED";&
$snoopy-&rawheaders["Pragma"]&=&"no-cache";&
$snoopy-&maxredirs&=&2;&&
$snoopy-&offsiteok&=&&&
$snoopy-&expandlinks&=&&
$snoopy-&user&=&"joe";&&
$snoopy-&pass&=&"bloe";&
if($snoopy-&fetchtext(""))&&
&&&&&&echo&"&&PRE&".htmlspecialchars($snoopy-&results)."&&/PRE&\n";&&BR&&&
else&&BR&&&
&&&&echo&"error&fetching&document:&".$snoopy-&error."\n";
snoopy采集phpchina示例&
//采集phpchina&
set_time_limit(0);&
require_once("Snoopy.class.php");&
$snoopy=new&Snoopy();&
//登陆论坛&
$submit_url&=&"/bbs/logging.php?action=login";&
$submit_vars["loginmode"]&=&"normal";&
$submit_vars["styleid"]&=&"1";&
$submit_vars["cookietime"]&=&"";&
$submit_vars["loginfield"]&=&"username";&
$submit_vars["username"]&=&"***";&//你的用户名&
$submit_vars["password"]&=&"*****";&//你的密码&
$submit_vars["questionid"]&=&"0";&
$submit_vars["answer"]&=&"";&
$submit_vars["loginsubmit"]&=&"提&交";&
$snoopy-&submit($submit_url,$submit_vars);&
if&($snoopy-&results)&
&&&&//获取连接地址&
&&&&$snoopy-&fetchlinks("/bbs");&
&&&&$url=array();&
&&&&$url=$snoopy-&&
&&&&//print_r($url);&
&&&&foreach&($url&as&$key=&$value)&
&&&&&&&&//匹配/bbs/forumdisplay.php?fid=156&sid=VfcqTR地址即论坛板块地址&
&&&&&&&&if&(!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\/forumdisplay\.php\?fid=)[0-9]*&sid=[a-zA-Z]{6}/i",$value))&
&&&&&&&&{&
&&&&&&&&&&&&unset($url[$key]);&
&&&&&&&&}&
&&&&//print_r($url);&
&&&&//获取到板块数组$url,循环访问,此处获取第一个模块第一页的数据&
&&&&$i=0;&
&&&&foreach&($url&as&$key=&$value)&
&&&&&&&&if&($i&=1)&
&&&&&&&&{&
&&&&&&&&&&&&//测试限制&
&&&&&&&&&&&&&
&&&&&&&&}&
&&&&&&&&else&
&&&&&&&&{&
&&&&&&&&&&&&//访问该模块,提取帖子的连接地址,正式访问里需要提取帖子分页的数据,然后根据分页数据提取帖子数据&
&&&&&&&&&&&&$snoopy=new&Snoopy();&
&&&&&&&&&&&&$snoopy-&fetchlinks($value);&
&&&&&&&&&&&&$tie=array();&
&&&&&&&&&&&&$tie[$i]=$snoopy-&&
&&&&&&&&&&&&//print_r($tie);&
&&&&&&&&&&&&//转换数组&
&&&&&&&&&&&&foreach&($tie[$i]&as&$key=&$value)&
&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&//匹配/bbs/viewthread.php?tid=68127&&extra=page%3D1&page=1&sid=iBLZfK&
&&&&&&&&&&&&&&&&if&(!preg_match("/^(http:\/\/www\.phpchina\.com\/bbs\/viewthread\.php\?tid=)[0-9]*&extra=page\%3D1&page=[0-9]*&sid=[a-zA-Z]{6}/i",$value))&
&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&unset($tie[$i][$key]);&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&}&
&&&&&&&&&&&&//print_r($tie[$i]);&
&&&&&&&&&&&&//归类数组,将同一个帖子不同页面的内容放一个数组里&
&&&&&&&&&&&&$left='';//连接左边公用地址&
&&&&&&&&&&&&$j=0;&
&&&&&&&&&&&&$page=array();&
&&&&&&&&&&&&foreach&($tie[$i]&as&$key=&$value)&
&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&$left=substr($value,0,52);&
&&&&&&&&&&&&&&&&$m=0;&
&&&&&&&&&&&&&&&&foreach&($tie[$i]&as&$pkey=&$pvalue)&
&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&//重组数组&
&&&&&&&&&&&&&&&&&&&&if&(substr($pvalue,0,52)==$left)&
&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&$page[$j][$m]=$&
&&&&&&&&&&&&&&&&&&&&&&&&$m++;&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&$j++;&
&&&&&&&&&&&&}&
&&&&&&&&&&&&//去除重复项开始&
&&&&&&&&&&&&//$page=array_unique($page);只能用于一维数组&
&&&&&&&&&&&&$paget[0]=$page[0];&
&&&&&&&&&&&&$nums=count($page);&
&&&&&&&&&&&&for&($n=1;$n&&$$n++)&
&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&$paget[$n]=array_diff($page[$n],$page[$n-1]);&
&&&&&&&&&&&&}&
&&&&&&&&&&&&//去除多维数组重复值结束&
&&&&&&&&&&&&//去除数组空值&
&&&&&&&&&&&&unset($page);&
&&&&&&&&&&&&$page=array();//重新定义page数组&
&&&&&&&&&&&&$page=array_filter($paget);&
&&&&&&&&&&&&//print_r($page);&
&&&&&&&&&&&&$u=0;&
&&&&&&&&&&&&$title=array();&
&&&&&&&&&&&&$content=array();&
&&&&&&&&&&&&$temp='';&
&&&&&&&&&&&&$tt=array();&
&&&&&&&&&&&&foreach&($page&as&$key=&$value)&
&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&//外围循环,针对一个帖子&
&&&&&&&&&&&&&&&&if&(is_array($value))&
&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&foreach&($value&as&$k1=&$v1)&
&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&//页内循环,针对一个帖子的N页&
&&&&&&&&&&&&&&&&&&&&&&&&$snoopy=new&Snoopy();&
&&&&&&&&&&&&&&&&&&&&&&&&$snoopy-&fetch($v1);&
&&&&&&&&&&&&&&&&&&&&&&&&$temp=$snoopy-&&
&&&&&&&&&&&&&&&&&&&&&&&&//读取标题&
&&&&&&&&&&&&&&&&&&&&&&&&if&(!preg_match_all("/&&h2&(.*)&&\/h2&/i",$temp,$tt))&
&&&&&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&echo&"no&title";&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&&&&&else&
&&&&&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&$title[$u]=$tt[1][1];&
&&&&&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&&&&&unset($tt);&
&&&&&&&&&&&&&&&&&&&&&&&&//读取内容&
&&&&&&&&&&&&&&&&&&&&&&&&if&(!preg_match_all("/&&div&id=\"postmessage_[0-9]{1,8}\"&class=\"t_msgfont\"&(.*)&&\/div&/i",$temp,$tt))&
&&&&&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&print_r($tt);&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&echo&"no&content1";&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&&&&&else&
&&&&&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&foreach&($tt[1]&as&$c=&$c2)&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&$content[$u].=$c2;&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&else&
&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&//直接取页内容&
&&&&&&&&&&&&&&&&&&&&$snoopy=new&Snoopy();&
&&&&&&&&&&&&&&&&&&&&$snoopy-&fetch($value);&
&&&&&&&&&&&&&&&&&&&&$temp=$snoopy-&&
&&&&&&&&&&&&&&&&&&&&//读取标题&
&&&&&&&&&&&&&&&&&&&&if&(!preg_match_all("/&&h2&(.*)&&\/h2&/i",$temp,$tt))&
&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&echo&"no&title";&
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&else&
&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&$title[$u]=$tt[1][1];&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&unset($tt);&
&&&&&&&&&&&&&&&&&&&&//读取内容&
&&&&&&&&&&&&&&&&&&&&if&(!preg_match_all("/&&div&id=\"postmessage_[0-9]*\"&class=\"t_msgfont\"&(.*)&&\/div&/i",$temp,$tt))&
&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&echo&"no&content2";&
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&else&
&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&foreach&($tt[1]&as&$c=&$c2)&
&&&&&&&&&&&&&&&&&&&&&&&&{&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&$content[$u].=$c2;&
&&&&&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&}&
&&&&&&&&&&&&&&&&$u++;&
&&&&&&&&&&&&}&
&&&&&&&&&&&&print_r($content);&
&&&&&&&&}&
&&&&&&&&$i++;&
&&&&echo&"login&failed";&
转载请注明: ?
TA的最新馆藏
喜欢该文的人也喜欢}

我要回帖

更多关于 豌豆角的做法大全 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信