snoopy模拟登陆后采集https开头的aspx页面[转]

阅读前请看Snoopy+Https的配置文章:让Snoopy也支持HTTPS的解决办法

snoopy采集https,会调用curl模块,因为要确保安装了该模块,并且指明了路径。(snoopy默认指定的就是正确的)
继续阅读snoopy模拟登陆后采集https开头的aspx页面[转]

让Snoopy也支持HTTPS的解决办法

How to make Snoopy work with https, we will find out!
Class Name:Snoopy.class.php
Snoopy version:1.2.4

如何让Snoopy这个PHP支持HTTPS,即SSL安全协议,我们今天就来解决这个问题。

First of all, look at the comment of $curl_path in Snoopy.class.php.

Snoopy will use cURL for fetching SSL content if a full system path to the cURL binary is supplied here.
set to false if you do not have cURL installed.
See http://curl.haxx.se for details on installing cURL.
Snoopy does *not* use the cURL library functions built into php,as these functions are not stable as of this Snoopy release.

首先,看一下 Snoopy.class.php 中的注释。

如果系统支持cURL binary的话,Snoopy 将使用cURL来获取SSL内容.
如果没有安装cURL扩展,那这里的$curl_path默认就是false.
如何安装cURL请参见:http://curl.haxx.se .
虽然PHP5版本中已经内置了cURL函数,但Snoopy的作者认为,本版Snoopy发布时,这些cURL库的性能还不是很稳定。

如此说来,Snoopy的移情别恋是因为有更好的扩展库推荐。这个cURL库就是:http://curl.haxx.se。
访问这个站点,我看到当前的cURL版本已经更新到 2010年2月的 7.20.0,我顺道去看了一下PHP5.2.11 ext目录下的cURL.dll,可惜看不到版本号。

我使用的开发环境是Wamp,本以为在Windows环境下无法使用cURL功能,但很高兴,我在下载页面:http://curl.haxx.se/download.html 找到了Win32版本。而且,版本还比较丰富,包括Generic、MSVC和64位的版本。
默认支持2003/XP,so,尚不清楚在Win7下是否支持。有测试过的朋友可以反馈一下。

按照说明,下载openSSL和zlib并安装,Linux下基本已经默认自带了,各位可以可以检查一下,没有的可以按照说明编译,并重新配置一下PHP。

最后,重新在Snoopy.class.php中,指定cURL路径,设置端口为443,问题解决。

php在线翻译类,基于Google翻译API开发(Google Translate API For PHP)

Google Translate API For PHP是一个基于Google Translate开发的翻译类,可以帮助PHP程序员实现多国文字的翻译。
本类使用到了Google的AJAX Translate API和Snoopy类,以模拟HTTP请求的方式实现数据的翻译。

以下是更新日志,如果您的接口不是最新版,请下载更新

  1. 2010-03,发布基本功能版
  2. 2010-06,1.0.0,封装成类咯
  3. 2010-10,1.0.1,更换翻译服务器,数据返回处理由JSON改成数组

以下是使用方法:

<?php
//demo 1
$Google = new GoogleTranslate();
$Google->text = '这是一个基于Google在线翻译的工具';
$Google->from = 'zh-CN';
$Google->to = 'en';
$Google->translate();
echo $Google->result;

//demo 2
$Google = new GoogleTranslate('这是一个基于Google在线翻译的工具', 'zh-CN', 'en');
echo $Google->result;

//demo 3
$Google = new GoogleTranslate();
$Google->translate('这是一个基于Google在线翻译的工具', 'zh-CN', 'en');
echo $Google->result;
?>

部份同学不知道这个类是做什么用的,以下给出一份实例运用代码,用户可以保存为query.php跑一跑。

<?php
if($_POST['text'])
{
	include('GoogleTranslate.class.php');
	
	$Google = new GoogleTranslate();
	$Google->text = $_POST['text'];
	$Google->from = 'zh-CN';
	$Google->to = 'en';
	$Google->translate();
	$content = $Google->result;
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>采集进程控制台</title>
</head> 
<body>
<form method="post" action="">
	<textarea name="text" rows="5" cols="40"><?php
		echo $content ? $content : '请在这里输入要翻译的内容!';
	?></textarea><br />
	<input type="submit" />
</form>

</body>
</html>

以下是完整程序包:
本地下载:PHP翻译类
站长下载:PHP翻译类
A5下载:PHP翻译类

使用Snoopy下载论坛附件,并上传到网盘的实例

Snoopy无疑是我使用过的最强大的采集类,本博也做过一些简单的入门介绍。

近日,我完成了数个基于Snoopy的程序,如批量下载百度文档附件、论坛附件下载、本地文件批量上传,已经能比较熟练的使用此类。加上本博主要是做采集程序研究的,那么,有必要将Snoopy的一些高级功能拿出来晒晒,照顾下新人。那今天要演示的一个功能是,Snoopy模拟用户登陆论坛并下载附件,并上传到网盘的一个实例。

通过本例,我们要取得附件上传到网盘以后,返回附件在网盘的下载链接。这个功能,可以和火车采集器无缝结合,实现火车采集器文章、Snoopy下载附件并按自定义目录保存、附件同步上传的效果。

首先讲一下模拟用户登陆需要使用到的几个重要数据。

  1. 模拟一个浏览器,如Firefox 3.5,即User-agent;
  2. 登陆论坛的Cookie值;
  3. 一个referer,即来源页地址;

继续阅读使用Snoopy下载论坛附件,并上传到网盘的实例

PHP Client Snoopy.class.php 的扩展优化

这几天在研究Snoopy的采集程序,完成对百度文档的采集和附件下载。

其中需要使用到对HTML进行DOM模型操作,读取表单中某个字段的Value,于是在网上找了一些类,发现了HTML SQL 和 DOMDocument两个类,功能还算是比较完善,可惜并没有我想要的效果,于是决定自己动手开发。

其中要加上自己的一些想法,在离开北京的最后一天,写上此文,估计年后就能看到成品了。希望这次回家不要太贪玩了。吼吼。 继续阅读PHP Client Snoopy.class.php 的扩展优化

snoopy(强大的PHP采集类) 实例应用

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。

下载地址: http://sourceforge.net/project/showfiles.php?group_id=2091

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时候的最好选择, 继续阅读snoopy(强大的PHP采集类) 实例应用

Snoopy初试,

snoopy是一个php类,用来模仿web浏览器的功能,它能完成获取网页内容和发送表单的任务。
下面是它的一些特征:
1、方便抓取网页的内容
2、方便抓取网页的文字(去掉HTML代码)
3、方便抓取网页的链接
4、支持代理主机
5、支持基本的用户/密码认证模式
6、支持自定义用户agent,referer,cookies和header内容
7、支持浏览器转向,并能控制转向深度
8、能把网页中的链接扩展成高质量的url(默认)
9、方便提交数据并且获取返回值
10、支持跟踪HTML框架(v0.92增加)
11、支持再转向的时候传递cookies

下面是简单的例子,比如说我们抓取我的blog的文字

<?php
include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchtext("http://www.4wei.cn");
echo $snoopy->results;
?>
<?php

include "Snoopy.class.php";
$snoopy = new Snoopy;
$snoopy->fetchlinks("http://www.4wei.cn");
print_r($snoopy->results);
?>
<?php
/**
* @name Snoopy手册中文版
* @author 毛毛虫 wangchong1985@gmail.com
* @version Snoopy - the PHP net client v1.2.2
* @link http://www.wangchong.org
* @since 2008-04-27
*/

include "Snoopy.class.php";
$snoopy = new Snoopy;

$snoopy->fetchtext("http://www.php.net/");
print $snoopy->results;

$snoopy->fetchlinks("http://www.phpbuilder.com/");
print $snoopy->results;

$submit_url = "http://lnk.ispi.net/texis/scripts/msearch/netsearch.html";

$submit_vars["q"] = "amiga";
$submit_vars["submit"] = "Search!";
$submit_vars["searchhost"] = "Altavista";

$snoopy->submit($submit_url,$submit_vars);
print $snoopy->results;

$snoopy->maxframes=5;
$snoopy->fetch("http://www.ispi.net/");
echo "
 ";
    echo htmlentities($snoopy->results[0]);
    echo htmlentities($snoopy->results[1]);
    echo htmlentities($snoopy->results[2]);


include "Snoopy.class.php";
$snoopy = new Snoopy;

$snoopy->user = "joe";
$snoopy->pass = "bloe";

if($snoopy->fetch("http://www.slashdot.org/"))
{
echo "response code: ".$snoopy->response_code."
";
while(list($key,$val) = each($snoopy->headers))
echo $key.": ".$val."
";
echo "

";

例子: 展示所有属性的功能:

include "Snoopy.class.php";
$snoopy = new Snoopy;

$snoopy->proxy_host = "my.proxy.host";
$snoopy->proxy_port = "8080";

$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";
$snoopy->referer = "http://www.microsnot.com/";

$snoopy->cookies["SessionID"] = 238472834723489l;
$snoopy->cookies["favoriteColor"] = "RED";

$snoopy->rawheaders["Pragma"] = "no-cache";

$snoopy->maxredirs = 2;
$snoopy->offsiteok = false;
$snoopy->expandlinks = false;

$snoopy->user = "joe";
$snoopy->pass = "bloe";

if($snoopy->fetchtext("http://www.phpbuilder.com"))
{
while(list($key,$val) = each($snoopy->headers))
echo $key.": ".$val."
";
echo "

";

echo "
";

例子: 抓取框架内容并展示结果:

include "Snoopy.class.php";
$snoopy = new Snoopy;

$snoopy->maxframes = 5;

if($snoopy->fetch("http://www.ispi.net/"))
{
echo "

COPYRIGHT:
Copyright(c) 1999,2000 ispi. All rights reserved.
This software is released under the GNU General Public License.
Please read the disclaimer at the top of the Snoopy.class.php file.

THANKS:
Special Thanks to:
Peter Sorger help fixing a redirect bug
Andrei Zmievski implementing time out functionality
Patric Sandelin
help with fetchform debugging
Carmelo misc bug fixes with frames

文章出处:http://www.diybl.com/course/1_web/webjs/200855/114322.html