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

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

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

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

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

  1. 模拟一个浏览器,如Firefox 3.5,即User-agent;工具

  2. 登录论坛的Cookie值;oop

  3. 一个referer,即来源页地址;fetch

这些数据能够经过抓包工具获取,如何使用抓包工具,请看一下这里:http://www.4wei.cn/?p=1000446网站

须要注意的是,这里的User-agent和Cookie要同步,即同时经过抓包工具获取的;这里的referer也很重要,通常的防盗链措施均是经过referer来判断的。但若是对方网站不是很变态,通常只须要一个对方的网站域名就够了。ui

下面开始今天的代码。spa

require_once 'Snoopy.class.php';
$snoopy = new Snoopy();
$snoopy->referer = 'http://www.4wei.cn';
$snoopy->strcookies = $COOKIE;
$snoopy->agent = $agent;
$snoopy->fetch($URI);

以上的代码创建了一个基本的采集过程,若是你的cookie和user-agent填写正确的话,那么基本上能够肯定,你已经成功登录论坛了,你能够经过如下方式查看到采集到的数据。

echo $snoopy->results;
//或者
print_r($snoopy);

忽然以为此文必火,那在这里插入一段版权连接,转摘着勿删。欢迎你们收看使用Snoopy下载论坛附件,并上传到网盘的实例。下面继续将咱们获取的数据。

若是咱们刚才成功采集了一条附件下载连接,那么咱们能够在返回的数据中找到附件的名称。

//读取转向的附件地址
echo $snoopy->lastredirectaddr;
//或者从头文件中读取中文件名称
print_r(join("\n", $snoopy->headers));

发现附件之后,咱们把文件保存起来,这个过程比较简单,一句话代过。

//将内容保存为一个本地文件
$savefile = SaveFile(basename($snoopy->lastredirectaddr),
$snoopy->results);

这里就算已经完成了附件的下载操做。接下来作文件上传的演示,代码注释十分清楚。

//从新初始化
$snoopy = new Snoopy();
 
//设置模拟提交的类型为 'multipart/form-data',知道为何不。
$snoopy->set_submit_multipart();
 
//或者手工指定发布类型
//$snoopy->_submit_method = 'multipart/form-data';
 
//要提交的程序路径,即Form的action地址,决对路径
$URI = 'http://www.rmdown.com/upload.php';
 
//模拟提交时的一些参数,多个参数能够用数据保存
$formvars['upload'] = 'php';
 
//将要上传的文件加入队列中,多个文件可使用数组保存,这里的file是文件上传表单的name
$formfiles['file'] = './uploads/xxoo.rar';
 
//执行模拟提交
$snoopy->submit($URI, $formvars, $formfiles);

若是成功上传附件,则会返回一个带参数的下载地址,那咱们经过正则匹配出新的网盘下载地址便可。

相关文章
相关标签/搜索