PHP採取類snoopy詳細紹介(snoopy使用教程)


Snoopyはphpクラスで、ブラウザの機能を模擬して、ウェブページの内容を取得して、フォームを発送して、いくつかの収集プログラムと泥棒のプログラムを開発することができて、この文章はsnoopyの使用教程を詳しく紹介します。
Snoopyのいくつかの特徴:
ウェブページの内容を把握するfetch
ページのテキスト内容をキャプチャー(HTMLタグを削除)fetch text
ウェブページのリンクをキャプチャし、フォームfetlinks fetform
プロキシホストに対応
基本的なユーザ名/パスワードの検証をサポートします。
セットのサポートagent、referer、cookiesとheader content(ヘッダファイル)
ブラウザのリダイレクトをサポートし、リダイレクトの深さをコントロールできます。
ウェブページのリンクを高品質のurlに拡張することができます(デフォルト)
データを送信し、戻り値を取得する
トレースHTMLフレーム対応
リダイレクトをサポートする場合は、cookiesを転送します。
php 4以上を要求すればいいです。自分はphpのクラスですので、拡张しなくてもサーバーがcurlをサポートしない時の一番いい選択です。
Snoopy類の方法及び例:
fetch($URI)
これはウェブページの内容をつかむために使う方法です。
$URIパラメータは、ウェブページのURLアドレスをキャプチャします。
キャプチャの結果は$this->resultに格納されます。
キャプチャされている場合は、フレームの場合は、Snoopyは、各フレームを追跡して配列に保存します。
fetch text($URI)
この方法はfetch()に類似しています。唯一の違いは、この方法はHTMLタグと他の無関係データを除去し、ページ内のテキストのみに戻ります。
fetform($URI)
この方法はfetch()に類似しています。唯一の違いは、この方法はHTMLタグと他の無関係データを除去して、ウェブページのフォームの内容(form)だけに戻ります。
fetch links($URI)
この方法はfetch()に類似しています。唯一の違いは、この方法はHTMLタグと他の無関係データを除去し、ウェブページのリンクのみに戻ります。
デフォルトでは、相対リンクは自動的に補完され、完全なURLに変換されます。
submit($URI、$formvars)
この方法は確認フォームをURLで指定したリンクアドレスに送信します。フォームパラメータを格納する配列である。
submittext($URI、$formvars)
この方法はsubmit()に類似しています。唯一の違いは、HTMLタグと他の無関係データを削除し、ログイン後のページのテキストのみに戻ります。
submitlinks($URI)
この方法はsubmit()に類似しています。唯一の違いはこの方法はHTMLタグと他の無関係データを除去し、ウェブページのリンクのみに戻ります。
デフォルトでは、相対リンクは自動的に補完され、完全なURLに変換されます。
Snoopy収集クラスの属性:(標準値は括弧内)
$host接続のホスト
$port接続のポート
$proxy_ホストが使用するプロキシホストがあります。
$proxy_portが使用するプロキシホストポートがあります。
$agentユーザエージェント偽装(Snoopy v 0.1)
$referer来路情報があります。
$cookies cookiesがあれば
$rawheaders他のヘッダ情報があります。
$maxredirs最大リダイレクト回数、0=許可しない(5)
$offsiteok whether or not to allow redirects off-site.(true)
$expandleinksリンクをすべて完全なアドレスに補完するかどうか(true)
USer認証ユーザ名があります。
$パス認証ユーザ名があります。
$accept http受け入れタイプ(イメージ/gif、イメージ/x-xbitmap、イメージ/jpeg、イメージ/pjpeg、*/*)
$errorはどこで間違えましたか?もしあれば。
$レスリングcodeがサーバから返された応答コード
$headersサーバから返されたヘッダ情報
$maxlength最長リターンデータ長
$read_タイムアウト(requires PHP 4 Beta 4+)を0に設定します。タイムアウトなし
$timed_out読み取り操作が一回でタイムアウトした場合、本属性はtrueに戻ります。(requires PHP 4 Beta 4+)
$maxframesトレース可能なフレームの最大数
$statusキャプチャしたhttpの状態
$temp_dirウェブサーバが書き込むことができる一時ファイルディレクトリ(/tmp)
$curl_path cURL binaryのディレクトリは、cURL binaryがなければfalseに設定されます。
以下は一例です。

include "Snoopy.class.php";
 $snoopy = new Snoopy;
 
 $snoopy->proxy_host = "https://www.jb51.net";
 $snoopy->proxy_port = "80";
 
 $snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)";
 $snoopy->referer = "https://www.jb51.net";
 
 $snoopy->cookies["SessionID"] = 238472834723489l;
 $snoopy->cookies["favoriteColor"] = "RED";
 
 $snoopy->rawheaders["Pragma"] = "no-cache";
 
 $snoopy->maxredirs = 2;
 $snoopy->offsiteok = false;
 $snoopy->expandlinks = false;
 
 $snoopy->user = "joe";
 $snoopy->pass = "bloe";
 
 if($snoopy->fetchtext("https://www.jb51.net"))
 {
 echo "<PRE>".htmlspecialchars($snoopy->results)."</PRE>
";
 }
 else
 echo "error fetching document: ".$snoopy->error."
";
指定されたurlの内容を取得する

 $url = "https://www.jb51.net";
 include("snoopy.php");
 $snoopy = new Snoopy;
 $snoopy->fetch($url); //
 echo $snoopy->results; //
 //
 $snoopy->fetchtext // ( html )
 $snoopy->fetchlinks //
 $snoopy->fetchform  //
 ?>
フォームの送信

$formvars["username"] = "admin";
$formvars["pwd"] = "admin";
$action = "https://www.jb51.net";//</a>
$snoopy->submit($action,$formvars);//$formvars
echo $snoopy->results; //
//
$snoopy->submittext; // html
$snoopy->submitlinks;//
?>
すでに提出したフォームなら、いろいろなことができます。これからはipを偽装してブラウザを偽装します。
ブラウザを偽装する

$formvars["username"] = "lanfengye";
$formvars["pwd"] = "lanfengye";
$action = "https://www.jb51.net";
include "snoopy.php";
$snoopy = new Snoopy;
$snoopy->cookies["PHPSESSID"] = 'fc106b1918bd522cc863f36890e6fff7'; // sessionid
$snoopy->agent = "(compatible; MSIE 4.01; MSN 2.5; AOL 4.0; Windows 98)"; //
$snoopy->referer = "https://www.jb51.net"; // http_referer
$snoopy->rawheaders["Pragma"] = "no-cache"; //cache http
$snoopy->rawheaders["X_FORWARDED_FOR"] = "127.0.0.101"; // ip
$snoopy->submit($action,$formvars);
echo $snoopy->results;
?>
もともと私たちはsessionを装ってブラウザを偽装することができて、ipを偽装して、haha hahaは多くの事をすることができました。
例えば、検証コードを持って、ipの投票を検証して、絶えず投げることができます。
ps:ここでipを偽装して、実はhttpヘッダを偽装していますので、普通はREMOTE_を通じています。ADDRが取得したipは偽装できない。
逆にhttpヘッダでipを取得すれば、自分でipを作ることができます。
コードの検証方法については、簡単に説明します。
まず普通のブラウザでページを見て、検証コードに対応するsessionidを見つけます。
sessionidと検証コード値を同時にメモして、
これからsnoopyで偽造します。
原理:同じsessionidなので、取得した検証コードは初めて入力したのと同じです。
時にはもっと多くのものを偽造する必要があります。snoopyは完全に私達のために考えました。
<?php
$snoopy->proxy_ホスト=“https://www.jb51.net";
$snoopy->proxy_ポルト=「8080」プロキシを使う
$snoopy->maxredirs=2;/リダイレクト回数
$snoopy->expandlinks=true;/。補完リンクは採集時によく使われますか?
//例えば、リンクが/imags/taoav.gifであれば、その全リンクに変更できます。https://www.jb51.net/images/taoav.gif">>https://www.jb51.net/images/taoav.gif
$snoopy->maxframes=5/許容の最大フレーム数
//フレームをつかむ時に注意してください。snoopy->resuultsが戻るのは配列です。
$snoopy->error/リターンエラー情報