Snoopy は、ブラウザの機能をシミュレートするために使用される php クラスであり、Web コンテンツを取得したり、フォームを送信したり、いくつかの収集プログラムや泥棒プログラムを開発するために使用できます。この記事では、snoopy の使い方チュートリアルを詳しく紹介します。
スヌーピーのいくつかの特徴:
Web ページのコンテンツを取得して取得します
Web ページのテキストコンテンツを取得します (HTML タグを削除します) fetchtext
Web リンクとフォームを取得する fetchlinks fetchform
プロキシホストをサポート
基本的なユーザー名/パスワード検証をサポートします
user_agent、リファラー (ソース)、Cookie、ヘッダーコンテンツ (ヘッダーファイル) の設定をサポートします
ブラウザーのリダイレクトをサポートし、リダイレクトの深さを制御できます
Web ページ内のリンクを高品質の URL に展開できます (デフォルト)
データを送信して戻り値を取得します
HTMLフレームワークの追跡をサポートします
リダイレクト時の Cookie の受け渡しをサポートします
PHP 4 以降のみが必要です。PHP クラスなので、サポートを拡張する必要はありません。サーバーがcurlをサポートしていない場合に最適です。
フェッチ($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 に設定します
これが例です:
".htmlspecialchars($snoopy->results)."n";
获取指定url内容
表单提交
伪装浏览器
セッションを偽装したり、ブラウザを偽装したり、IP を偽装したりできることがわかりました。笑、たくさんのことができます。
たとえば、確認コードを持参して IP を確認して投票すると、ノンストップで投票できます。
ps: ここで IP を偽装することは、実際には http ヘッダーを偽装することになるため、REMOTE_ADDR を通じて取得された IP は偽装できません。
逆に、http ヘッダー (プロキシを防ぐことができる種類) を通じて IP を取得する人は、独自の IP を作成できます。
コードを検証する方法について、簡単に説明します:
まず、通常のブラウザを使用してページを表示し、確認コードに対応するセッション ID を見つけます
また、セッション ID と確認コードの値も書き留めてください。
次にスヌーピーを使ってごまかします。
原則: 同じセッションIDであるため、取得される確認コードは最初に入力したものと同じです。
$snoopy->proxy_host = "http://www.jb51.net";