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

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

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

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

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

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

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

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

下面开始今天的代码。

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);

如果成功上传附件,则会返回一个带参数的下载地址,那我们通过正则匹配出新的网盘下载地址即可。

时间: 2024-12-25 01:11:09

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

IE8升级新版Flash Player ActiveX14导致的discuz图片附件无法上传 解决方法

之前发的这篇文章被编辑之后丢失了,无奈从百度快照找来重新发布,不知道csdn抽啥风 架不住sb adobe的频繁升级提示,手欠升级到了了flash player 14,结果IE8下所有discuz论坛中都无法看到上传图片的按钮了 没办法,遇到问题就解决吧 刚好在解决IE11遇到编辑器不显示问题的时候看到discuz编辑器文件上传有非flash解决方案 所以这个问题看上去就不难了,把普通上传给打开就行了 编辑discuz文件/template/default/forum/editor_menu_f

根据之前的博文,我把给同学做的三子棋小游戏的代码发出来,只是界面很丑很丑,AI算法很笨很笨,过几天我传到网盘上,提供大家下载娱乐

1 background_image_filename = 'blackground.png' 2 black_mouse_image_filename = 'black.png' 3 white_mouse_image_filename = 'white.png' 4 restart_icon_filename='restart.png' 5 pingju_icon_filename='pingju.jpg' 6 win_icon_filename='win.jpg' 7 lose_icon_

aspx 文件上传和下载,多文件上传

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MultiFileUpload.aspx.cs"  Inherits="MultiFileUpload"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org

将自己在CSDN上的文章下载到本地并上传到掘金

CSDN 算是一个老牌技术网站了,很多喜欢写文章的人,一开始都是在 CSDN上发布,但是可能由于某些原因,有的人想把自己在 CSDN上的文章放到其他的网站上(嗯,比如掘金),但是由于在 CSDN上发布的文章数量很多,一篇篇复制粘贴下来理论上是可行的,就是手酸了点. 不过,作为技术型体力劳动者人才,重复一种动作几十甚至上百遍未免有点丢失 biger,想起前段时间我花费了 大量时间 翻译的 Puppeteer,至今还没体现出其价值来,于是决定就用它了. 本文的可运行示例代码已经上传到 github了

邮件发送超大附件,上传下载特别慢,怎么解决?

目前,已有不少邮箱如QQ邮箱.网易邮箱等支持超大附件,可以发送2G或3G大小的文件.但是诸多邮箱发送超大附件普遍存在以下问题: 首先,邮件发送大文件对文件大小有限制,超过上限的超大附件无法发送:其次,超大附件上传.下载的速度有限,而且速度也不稳定:再次,即便上传成功之后,如果对方的邮箱接收附件的大小也会有限制,甚至会导致邮件发送失败. 作为最常用的办公工具之一,邮箱附件上传下载慢.传输中断.无法发送超大附件等问题,是职场人士的一大困扰.怎么解决这个问题? 推荐一款可以通过邮箱发送超大附件的工具-

报表中如何控制附件的上传和下载权限

目前,多用户的软件平台已经是再常见不过的了,有成千上万个用户账号的平台也很正常.为了保证每个用户准确访问各自的信息,免不了要做这样或那样的权限控制,而且这种权限控制往往是需要基于数据层面进行管理的. 对于报表平台的数据权限管理,我们可以直观地理解为:不同的机构.角色甚至具体到人,在访问同一张报表时所看到的数据都有可能不同的.最常见的例子比如工资条(也可以看做是一张简单的报表),因为绝大多数公司薪资都是保密的,所以很显然,系统内不同人看到的结果肯定是不相同的. 再比如,区域销售情况统计对于不同区域

如何解决控件附件上传时超大附件无法上传的问题

起因: 我们的附件控件里边,一般情况下默认设置大小为10M,如果我们设置30M的情况,就无法满足上传了. 原因: 是因为我们ajax的一个文件里取我们控件自定义大小的值,无法取到.因为我们传的int类型的值,所以我们在用QueryString取的时候的值为Null. 解决: 打开Portal->Ajax->FileUploadHandler.ashx文件里,找到以下代码: Protected int MaxSize { get { if (!int.TryParse(Request.Query

springMVC+spring+hibernate注解上传文件到数据库,下载,多文件上传

数据库 CREATE TABLE `annex` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `realName` varchar(36) DEFAULT NULL, `fileContent` mediumblob, `handId` bigint(20) DEFAULT NULL, `customerId` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_id` (`handId`), CON

51CTO下载中心之文件上传分卷压缩教程

(1).51CTO下载中心上传文件的大小被限制在50M,那我们如何上传大于50M的文件呢,如下: (2).右键菜单到"添加到压缩文件(A)" (4).选择压缩方式和分卷的大小. (5).压缩中.