php snoopy采集类(模拟浏览器)介绍

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

Snoopy类的下载地址:http://sourceforge.net/projects/snoopy/

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

Snoopy使用示例:

(1)获取指定url内容

 代码如下 复制代码

$url='http://www.111cn.net';
include('snoopy.php');
$snoopy=new Snoopy;
$snoopy->fetch($url);//获取所有内容
echo $snoopy->results;//显示结果
$snoopy->fetchtext //获取文本内容(去掉html代码)
$snoopy->fetchlinks //获取页面所有链接
$snoopy->fetchform //获取页面表单信息

(2)提交表单

 代码如下 复制代码

include 'snoopy.php';
$snoopy=new Snoopy;
$formvars['username']='admin';
$formvars['pwd']='admin';
$action='http://www.111cn.net';//表单提交地址
$snoopy->submit($action,$formvars);//$formvars为提交的数组
echo $snoopy->results;//获取表单提交后的 返回的结果
$snoopy->submittext;//提交后只返回去除html的文本
$snoopy->submitlinks;//提交后只返回链接

(3)使用Snoopy来伪装

 代码如下 复制代码

$formvars['username']='admin';
$formvars['pwd']='admin';
$action='http://www.111cn.net';
include 'snoopy.php';
$snoopy=new Snoopy;
$snoopy->cookies['PHPSESSID']='fc206b1918bd522cc863p36890e6notef7';//伪装sessionid
$snoopy->agent='(compatible;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)';//伪装浏览器
$snoopy->referer='http://www.111cn.net';//伪装来源页地址 http_referer
$snoopy->rawheaders['Pragma']='no-cache';//cache 的http头信息
$snoopy->rawheaders['X_FORWARDED_FOR']='127.0.0.1';//伪装ip
$snoopy->submit($action,$formvars);
echo $snoopy->results;

时间: 2024-12-24 20:21:31

php snoopy采集类(模拟浏览器)介绍的相关文章

php snoopy采集类介绍

Snoopy是一个用来模拟浏览器的一些简单功能的php类,可以获取网页内容,发送表单等操作.Snoopy正确运行需要你的服务器的PHP版本在4以上,并且支持PCRE(Perl Compatible Regular Expressions),基本的LAMP服务都支持.由于它本身是php一个类,无需扩支持,因此在服务器不支持curl的时候是最好的选择. Snoopy的特点: 1.抓取网页的内容 fetch 2.抓取网页的文本内容 (去除HTML标签) fetchtext 3.抓取网页的链接,表单 f

在Python中使用mechanize模块模拟浏览器功能

  这篇文章主要介绍了在Python中使用mechanize模块模拟浏览器功能,包括使用cookie和设置代理等功能的实现,需要的朋友可以参考下 知道如何快速在命令行或者python脚本中实例化一个浏览器通常是非常有用的. 每次我需要做任何关于web的自动任务时,我都使用这段python代码去模拟一个浏览器. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import mechanize import cookielib # Br

Node.js模拟浏览器文件上传示例

 这篇文章主要介绍了Node.js模拟浏览器文件上传的实现代码,需要的朋友可以参考下 OSChina上发过了,那个也是我的,现在放到这来,哈哈     代码如下: var path=require("path");  var fs=require("fs");  var http=require("http");    //post值payload  var getfield=function(field, value) {  return 'C

PHP 模拟浏览器 CURL 采集阿里巴巴

 都说阿里巴巴有不能采集和防采集的神话,今天就用张老师讲的Curl采集写了一个模拟浏览器的代码.没有不可能只有不去做,哈哈 <?php set_time_limit(0); function _rand() { $length=26; $chars = "0123456789abcdefghijklmnopqrstuvwxyz"; $max = strlen($chars) - 1; mt_srand((double)microtime() * 1000000); $string

java.net.URLConnection类_java模拟浏览器

最近做个产品要用爬虫获得信息,可是这个网页要模拟浏览器输出,我参考了网上很多setRequestProperty里面User-Agent都写得Mozilla/5.0结果还是不能访问,最后研究了一下写出来了. public static String URLPostConnReturnHtml(String ip){ URL url = null ;HttpURLConnection conn = null ;BufferedReader br = null ;InputStreamReader

对抗模拟浏览器的DDoS攻击

 本文讲的是 :  对抗模拟浏览器的DDoS攻击  , 收藏该文基于浏览器的僵尸网络就是DDoS世界里的T-1000s.他们之所以如此危险是因为他们就跟终结者里的反派一样,被设计的可以适应各种情况的攻击.当其他原始的网络僵尸还在暴力破解你的防御的时候,基于浏览器的僵尸就已经模拟真实的人类从前门进入了. 当你意识到情况不对时,他们已经突破边界,搞宕服务器,已经无力回天了. 那么应该怎么防御T-1000呢,怎么分辨一次访问是来自与真实的浏览器还是一个基于浏览器的僵尸?传统的过滤僵尸的策略在面对能够保

php-【PHP求助】通过PHP Curl模拟浏览器远程抓取内容

问题描述 [PHP求助]通过PHP Curl模拟浏览器远程抓取内容 需要抓取的内容:页面做了限制:http://my.taobao.com/UvFc0vF8uvmx0vgTT 如图所示: 解决方案 你找到淘宝网的登陆接口,自己用账户名和密码发送到接口登陆后获取返回的cookie,后续的请求附带上获取的cookie信息就行. 也有个偷懒的办法,就是自己用浏览器先登录淘宝.然后用浏览器开发工具查看获取到的cookie信息,将这些cookie信息附带到你的php请求里面就行了,可以省略模拟登陆那个步骤

post、get模拟浏览器访问能留下记录

问题描述 post.get模拟浏览器访问能留下记录 求代码.................................... 解决方案 推荐你用 httpclient 和 jsoup 结合用 http://www.sh0745.com/java/201501/20121513.html http://www.sh0745.com/java/201501/19223542.html 看看这两篇文章 解决方案二: 你说的是httpclient等后台方式访问留下历史记录? 如果这种分两步: 1.

android 使用 模拟浏览器,无法得到返回值

问题描述 android 使用 模拟浏览器,无法得到返回值 代码如下,根据输入的url地址来返回状态码. 可是,httpconnection.getResponseCode();返回的都是200,没有实际返回访问值. 请高手指点. public String stat_is(String strurl) { HttpURLConnection httpconnection; int rcode=0; String respon = "ok"; httpconnection = null