ホームページ  >  記事  >  php教程  >  PHPスヌーピーコレクションクラスの紹介

PHPスヌーピーコレクションクラスの紹介

WBOY
WBOYオリジナル
2016-06-21 08:47:35750ブラウズ

Snoopy は、Web コンテンツの取得、フォームの送信、その他の操作を行うことができるブラウザーのいくつかの単純な機能をシミュレートするために使用される php クラスです。 Snoopy を正しく動作させるには、サーバーの PHP バージョンが 4 以降であり、基本的な LAMP サービスでサポートされる PCRE (Perl 互換正規表現) をサポートしている必要があります。 PHP クラスなのでサポートを拡張する必要がなく、サーバーがcurlをサポートしていない場合に最適です。

スヌーピーの特徴:

1. Web ページのコンテンツを取得します

2. Web ページのテキストコンテンツを取得します (HTML タグを削除します) fetchtext

3. fetchlinks fetchform から Web ページのリンクを取得します

4. プロキシホストをサポートします

5. 基本的なユーザー名/パスワードの検証をサポートします

6. user_agent、リファラー (ソース)、Cookie およびヘッダー コンテンツ (ヘッダー ファイル) の設定をサポート

7. ブラウザーのリダイレクトをサポートし、リダイレクトの深さを制御できます

8. Web ページ内のリンクを高品質の URL に展開できます (デフォルト)

9. データを送信して戻り値を取得します

10. HTML フレームワークの追跡をサポートします

11. リダイレクト時の Cookie の受け渡しをサポートします

スヌーピークラスのダウンロードアドレス: http://sourceforge.net/projects/snoopy/

スヌーピークラスのメソッド:

フェッチ($URI)

これは、Web ページのコンテンツをクロールするために使用される方法です。 $URI パラメータは、クロールされた Web ページの URL アドレスです。取得した結果は $this->results に保存されます。フレームをスクレイピングしている場合、スヌーピーは各フレームを追跡して配列に保存し、$this->results に保存します。

フェッチテキスト($URI)

このメソッドは fetch() に似ていますが、唯一の違いは、このメソッドが HTML タグやその他の無関係なデータを削除し、Web ページ内のテキスト コンテンツのみを返すことです。

fetchform($URI)

このメソッドは fetch() に似ていますが、唯一の違いは、このメソッドが HTML タグやその他の無関係なデータを削除し、Web ページ内のフォーム コンテンツ (フォーム) のみを返すことです。

フェッチリンク($URI)

このメソッドは fetch() に似ていますが、唯一の違いは、このメソッドが HTML タグやその他の無関係なデータを削除し、Web ページ内のリンクのみを返すことです。デフォルトでは、相対リンクは自動的に完成され、完全な URL に変換されます。

送信($URI,$formvars)

このメソッドは、$URL で指定されたリンク アドレスに確認フォームを送信します。 $formvars はフォームパラメータを格納する配列です。

submittext($URI,$formvars)

このメソッドは submit() に似ていますが、唯一の違いは、このメソッドは HTML タグやその他の無関係なデータを削除し、ログイン後に Web ページのテキスト コンテンツのみを返すことです。

リンクを送信($URI)

このメソッドは submit() に似ていますが、唯一の違いは、このメソッドが HTML タグやその他の無関係なデータを削除し、Web ページ内のリンクのみを返すことです。 デフォルトでは、相対リンクは自動的に完成され、完全な URL に変換されます。

スヌーピークラス属性: (括弧内はデフォルト値)

$host 接続先のホスト
$port
に接続するポート $proxy_host 使用するプロキシ ホスト (存在する場合)
$proxy_port 使用するプロキシ ホスト ポート (存在する場合)
$agent ユーザーエージェントマスカレード (Snoopy v0.1)
$referer ルーティング情報 (利用可能な場合)
$cookies クッキー (ある場合)
$rawheaders その他のヘッダー情報 (存在する場合)
$maxredirs リダイレクトの最大数、0=許可されません (5)
$offsiteok オフサイトへのリダイレクトを許可するかどうか (true)
$expandlinks 完全なアドレスへのすべてのリンクを完了するかどうか (true)
$user 認証ユーザー名 (利用可能な場合)
$pass 認証ユーザー名 (利用可能な場合)
$accept http 受け入れタイプ (image/gif、image/x-xbitmap、image/jpeg、image/pjpeg、*/*)
$error エラーが報告された場所 (存在する場合)
$response_code サーバーから返された応答コード
$headers サーバーから返されたヘッダー
$maxlength 返されるデータの最長長
$read_timeout 読み取り操作のタイムアウト (PHP 4 Beta 4+ が必要)
タイムアウトなしの場合は 0 に設定します
$timed_out 読み取り操作がタイムアウトした場合、この属性は true を返します (PHP 4 Beta 4+ が必要)
$maxframes 追跡できるフレームの最大数
$status キャプチャされた http
のステータス $temp_dir Web サーバーが書き込むことができる一時ファイル ディレクトリ (/tmp)
$curl_path cURL バイナリ ディレクトリ。cURL バイナリがない場合は false に設定します

スヌーピー使用例:

(1) 指定したURLのコンテンツを取得します

$url='http://www.Alixixi.com';
include('snoopy.php');
$snoopy=new Snoopy;
$snoopy->fetch($url);//获取所有内容 
echo $snoopy->results;//显示结果 
$snoopy->fetchtext //获取文本内容(去掉html代码) 
$snoopy->fetchlinks //获取页面所有链接 
$snoopy->fetchform //获取页面表单信息

(2) フォームを送信

include 'snoopy.php';
$snoopy=new Snoopy;
$formvars['username']='admin';
$formvars['pwd']='admin';
$action='http://www.Alixixi.com';//表单提交地址 
$snoopy->submit($action,$formvars);//$formvars为提交的数组 
echo $snoopy->results;//获取表单提交后的 返回的结果 
$snoopy->submittext;//提交后只返回去除html的文本 
$snoopy->submitlinks;//提交后只返回链接

(3) スヌーピーを使って変装する

$formvars['username']='admin';
$formvars['pwd']='admin';
$action='http://www.Alixixi.com';
include 'snoopy.php';
$snoopy=new Snoopy;
$snoopy->cookies['PHPSESSID']='fc206b1918bd522cc863p36890e6notef7';//伪装sessionid 
$snoopy->agent='(compatible;MSIE 4.01;MSN 2.5;AOL 4.0;Windows 98)';//伪装浏览器 
$snoopy->referer='http://www.Alixixi.com';//伪装来源页地址 http_referer 
$snoopy->rawheaders['Pragma']='no-cache';//cache 的http头信息 
$snoopy->rawheaders['X_FORWARDED_FOR']='127.0.0.1';//伪装ip 
$snoopy->submit($action,$formvars);
echo $snoopy->results;

您可能感兴趣的文章

  • php提示PHP Warning: date(): It is not safe to rely on the......错误的解决办法
  • php 简单计算权重的方法(适合抽奖类的应用)
  • PHP新手用的Insert和Update语句构造类
  • 强大的PHP 图片处理类(水印、透明度、缩放、锐化、旋转、翻转、剪切、反色)
  • php中在变量和函数前加static关键字之后的区别
  • PHP Curl批量多线程打开网址的类
  • php window平台模拟checkdnsrr函数检测email是否真实存在
  • php实现将人民币金额转大写的办法



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。