使用Snoopy進行模擬登陸 採集

2022-07-20 10:27:09 字數 2225 閱讀 3443

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...