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

若是成功上傳附件,則會返回一個帶參數的下載地址,那咱們經過正則匹配出新的網盤下載地址便可。

相關文章
相關標籤/搜索