ホームページ > バックエンド開発 > PHPチュートリアル > PHPコレクションクラスsnoopyの詳しい紹介(スヌーピー使い方チュートリアル)_PHPチュートリアル

PHPコレクションクラスsnoopyの詳しい紹介(スヌーピー使い方チュートリアル)_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:24:37
オリジナル
827 人が閲覧しました

Snoopy は、ブラウザの機能をシミュレートするために使用される php クラスであり、Web コンテンツを取得したり、フォームを送信したり、いくつかの収集プログラムや泥棒プログラムを開発するために使用できます。この記事では、snoopy の使い方チュートリアルを詳しく紹介します。

スヌーピーのいくつかの特徴:
Web ページのコンテンツを取得して取得します
Web ページのテキストコンテンツを取得します (HTML タグを削除します) fetchtext
Web リンクとフォームを取得する fetchlinks fetchform
プロキシホストをサポート
基本的なユーザー名/パスワード検証をサポートします
user_agent、リファラー (ソース)、Cookie、ヘッダーコンテンツ (ヘッダーファイル) の設定をサポートします
ブラウザーのリダイレクトをサポートし、リダイレクトの深さを制御できます
Web ページ内のリンクを高品質の URL に展開できます (デフォルト)
データを送信して戻り値を取得します
HTMLフレームワークの追跡をサポートします
リダイレクト時の Cookie の受け渡しをサポートします
PHP 4 以降のみが必要です。PHP クラスなので、サポートを拡張する必要はありません。サーバーがcurlをサポートしていない場合に最適です。

Snoopy クラスのメソッドと例:

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

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

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

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

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

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

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


スヌーピーコレクションのクラス属性: (デフォルト値は括弧内)

$host 接続されたホスト
$port 接続されているポート
$proxy_host 使用されるプロキシ ホスト (存在する場合)
$proxy_port 使用されるプロキシ ホスト ポート (存在する場合)
$agent ユーザーエージェント変装 (スヌーピー v0.1)
$referer 起源情報 (利用可能な場合)
$クッキー クッキーあれば
$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 に設定します

これが例です:

コードをコピーします コードは次のとおりです:

"Snoopy.class.php" を含めます;
 $snoopy = 新しいスヌーピー;
 
 $snoopy->proxy_host = "http://www.jb51.net";
 $snoopy->proxy_port = "80";
 
 $snoopy->agent = "(互換性; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";
 $snoopy->referer = "http://www.jb51.net";
 
 $snoopy->cookies["セッションID"] = 238472834723489l;
 $snoopy->cookies["favoriteColor"] = "RED";
 
 $snoopy->rawheaders["Pragma"] = "キャッシュなし";
 
 $snoopy->maxredirs = 2;
 $snoopy->offsiteok = false;
 $snoopy->expandlinks = false;
 
 $snoopy->user = "ジョー";
 $snoopy->pass = "ブルー";
 
 if($snoopy->fetchtext("http://www.jb51.net"))
 {
 echo "
".htmlspecialchars($snoopy->results)."
n";
 }
 それ以外
 echo "ドキュメントの取得エラー: ".$snoopy->error."n";

获取指定url内容

复制代価代価如下:
 $url = "http://www.jb51.net";
 include("スヌーピー.php");
 $snoopy = 新しいスヌーピー;
 $snoopy->fetch($url); //すべてのコンテンツを取得します
 $snoopy->結果をエコーし​​ます。 //显示結果
 //以下を選択可能
 $snoopy->fetchtext //获取文本内容(去掉html代码)
 $snoopy->fetchlinks //获取链接
 $snoopy->fetchform //获取表单
 ?>

表单提交

复制代価代価如下:
$formvars["ユーザー名"] = "管理者";
$formvars["pwd"] = "管理者";
$action = "http://www.jb51.net";//表单提交地址
$snoopy->submit($action,$formvars);//$formvars は提交の数グループ
$snoopy->結果をエコーし​​ます。 // 取表单提交後の返還結果
//以下を選択可能
$snoopy->submittext; //提交後ただ去除htmlの文本を返すだけ
$snoopy->submitlinks;//提交後ただ返链接
?>

既然已经提交的表单 那就可以很多事情接下来我们来伪装ip,伪装浏览器

伪装浏览器

复制代価代価如下:
$formvars["ユーザー名"] = "ランフェンイェ";
$formvars["pwd"] = "ランフェンイェ";
$action = "http://www.jb51.net";
「snoopy.php」を含める;
$snoopy = 新しいスヌーピー;
$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7'; //伪装セッションID
$snoopy->agent = "(互換性; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //伪装浏览器
$snoopy->referer = "http://www.jb51.net"; //伪装来源页地址 http_referer
$snoopy->rawheaders["Pragma"] = "キャッシュなし"; //キャッシュのhttp头情報
$snoopy->rawheaders["X_FORWARDED_FOR"] = "127.0.0.101"; //伪装イップ
$snoopy->submit($action,$formvars);
echo $snoopy->結果;
?>

セッションを偽装したり、ブラウザを偽装したり、IP を偽装したりできることがわかりました。笑、たくさんのことができます。
たとえば、確認コードを持参して IP を確認して投票すると、ノンストップで投票できます。
ps: ここで IP を偽装することは、実際には http ヘッダーを偽装することになるため、REMOTE_ADDR を通じて取得された IP は偽装できません。 逆に、http ヘッダー (プロキシを防ぐことができる種類) を通じて IP を取得する人は、独自の IP を作成できます。
コードを検証する方法について、簡単に説明します:
まず、通常のブラウザを使用してページを表示し、確認コードに対応するセッション ID を見つけます
また、セッション ID と確認コードの値も書き留めてください。
次にスヌーピーを使ってごまかします。
原則: 同じセッションIDであるため、取得される確認コードは最初に入力したものと同じです。

場合によっては、より多くのことを偽る必要があるかもしれません、スヌーピーが私たちのためにそれを完全に考えてくれました

$snoopy->proxy_host = "http://www.jb51.net";
$snoopy->proxy_port = "8080" //プロキシを使用します
; $snoopy->maxredirs = 2; //リダイレクト数
; $snoopy->expandlinks = true; //リンクを完了するかどうか、収集中によく使用されます
// たとえば、リンクは /images/taoav.gif ですが、完全なリンクに変更できますhttp:// www.jb51.net/images/taoav.gif
$snoopy->maxframes = 5 //許可される最大フレーム数
//フレームを取得すると、$snoopy->result は配列を返すことに注意してください
$snoopy->error //エラーメッセージを返す
?>

http://www.bkjia.com/PHPjc/825391.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825391.html技術記事 Snoopy は、ブラウザの機能をシミュレートするために使用される php クラスであり、Web コンテンツを取得したり、フォームを送信したり、いくつかの収集プログラムや泥棒プログラムの開発に使用したりできます...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート