snoopy是乙個使用php寫的採集類,使用了一下發現功能比較強大,幾乎可以模擬瀏覽器的所有行為,可以實現的功能有:
比起使用curl,fsockopen等函式來說方便很多,下面總結一下這個類一些屬性與方法的作用。
方法:fetch($url) 該方法用於抓取網頁內容,類似於file_get_contents
submit($posturl,$params,$files)
該方法提交表單資料,第二個引數是乙個一維陣列,例如array('user'=>'zhangsan','pwd'=>'lisi'),第
三個引數是可選引數,上傳檔案時用到,例如array('myfile' => './images/test.jpg')
fetchlinks($url) 該方法用於獲取網頁所有鏈結
fetchform($url) 該方法用於獲取網頁上的form表單內容
fetchtext($url) 該方法使用者獲取不帶標籤的網頁內容
submitlinks($posturl,$params) 該方法提交表單資料引數與submit方法相同,不同點是獲取到的結果資料是鏈結
submittext($posturl,$params) 該方法提交表單資料引數與submit方法相同,不同點是獲取到的結果資料是文字資料
set_submit_multipart() 該方法沒有引數,檔案上傳時有效類似於設定表單中的enctype="multipart/form-data"
set_submit_normal() 該方法沒有引數,相當於設定乙個普通表單,不可使用者檔案
setcookies() 該方法沒有引數,儲存響應cookie資訊 用於下一次請求
常用屬性:
$obj->agent = 'mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.25) gecko/20111212 firefox/3.6.25';//偽裝瀏覽器
$obj->rawheaders['cookie'] = 'username=zhangsan;password=123456';//偽裝cookie不能與$obj->cookies同時使用
$obj->rawheaders['x_forwarded_for'] = '115.47.134.108'; //偽造ip
$obj->referer = ''; //偽造**位址
$obj->cookies['test'] = 'zhangsan'; //偽裝cookie 不能與$obj->rawheaders['cookie']同時使用
$obj->results 獲取採集結果
下面給出示例**供參考
<?php
include './snoopy.class.php';
$obj = new snoopy();
$obj->agent = 'mozilla/5.0 (windows; u; windows nt 6.1; zh-cn; rv:1.9.2.25) gecko/20111212 firefox/3.6.25';//偽裝瀏覽器
$obj->rawheaders['cookie'] = 'username=zhangsan;password=123456';//偽裝cookie不能與$obj->cookies同時使用
$obj->referer = ''; //偽造**位址
//$obj->cookies['test'] = 'zhangsan'; //偽裝cookie 不能與$obj->rawheaders['cookie']同時使用
//post 資料
$params['username'] = 'zhangsan';
$params['password'] = '123456';
//上傳檔案
$obj->set_submit_multipart();
$files = array('f' => './test.php');
$posturl = '';
//$obj->fetch($posturl);//抓取網頁內容 get方式
//模擬表單提交
$obj->submit($posturl,$params,$files);//第三個引數是可選引數,如果不上傳檔案無需該引數
//$obj->submitlinks($posturl,$params);//獲取提交或的鏈結
$obj->setcookies();//儲存響應cookie資訊 用於下一次請求
print_r($obj->results);//獲取結果
?>
使用snoopy提交資料實現登陸
模擬登陸可以用curl或者socket來實現,當curl需要伺服器相應的啟用curl module,自己socket實現相對比較麻煩,使用snoopy就簡單了很多啦。在這裡,我們使用喜悅國際村做為例子。純屬研究 首先,我們要獲取到登陸需要傳送什麼字段,目標位址是什麼。這裡我們使用snoopy的fet...
使用cookies模擬登陸
使用cookies會話跟蹤,保持cookies訪問,對於cookies會失效的問題可以使用該方法去,當然,最好養成這樣子的好習慣,每次都帶上cookies去訪問,訪問乙個頁面之後,就會保持cookies,第二個頁面開始就會帶上cookies了 session requests.session res...
使用requests模擬登陸github
學了了下python requests 以及文字處理和正則工具re,順便應用一下。使用requests模擬登陸github 準備 tampler data 使用教程 利用它獲取到登陸所需要的header,post引數等資訊。requests 快速入門教程 模擬 import requests imp...