ホームページ >バックエンド開発 >PHPの問題 >phpスヌーピーの使い方は何ですか

phpスヌーピーの使い方は何ですか

coldplay.xixi
coldplay.xixiオリジナル
2021-03-11 17:54:122260ブラウズ

php スヌーピーの使用法: 1. Web ページのコンテンツをキャプチャする [fetch($URI)] 2. HTML タグやその他の無関係なデータを削除する [fetchtext($URI)] 3. [fetchform] ($ URI)] Web ページ内のフォームのコンテンツを返します。

phpスヌーピーの使い方は何ですか

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 5.6、DELL G3 コンピューター。

php スヌーピーの使用法:

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

1、fetch($URI)

これは、Web ページのコンテンツをクロールするために使用されるメソッドです。

$URI パラメータは、クロールされた Web ページの URL アドレスです。

取得した結果は $this->results に保存されます。

フレームをスクレイピングしている場合、スヌーピーは各フレームを追跡して配列に保存し、$this->results に保存します。

2, fetchtext($URI)

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

3, fetchform($URI)

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

4, fetchlinks($URI)

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

デフォルトでは、相対リンクは自動的に完成され、完全な URL に変換されます。

5, submit($URI,$formvars)

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

6, submittext($URI,$formvars)

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

7, submitlinks($URI)

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

デフォルトでは、相対リンクは自動的に完成され、完全な URL に変換されます。

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

$host 接続されているホスト

$port 接続されているポート

$proxy_host 使用するプロキシ ホスト (存在する場合)

$proxy_port 使用するプロキシ ホスト ポート (存在する場合)

$agent ユーザー エージェント マスカレード (Snoopy v0.1 )

$リファラーソース情報 (ある場合)

#$cookies クッキー (ある場合)

##$rawheaders その他のヘッダー情報 (ある場合)

$maxredirs リダイレクトの最大数、 0=許可されません (5)

$offsiteok オフサイトへのリダイレクトを許可するかどうか (true)

$expandlinks すべてのリンクをリンクするかどうか 完全なアドレスを入力します (true)

$user 認証ユーザー名 (存在する場合)

$pass 認証ユーザー名 (存在する場合)

$accept http accept Type (image/gif、image/x-xbitmap、image/ jpeg、image/pjpeg、*/*)

$error エラーがあればどこに報告するか サーバーから返された

$response_code 応答コード

$headers ヘッダー情報サーバーから返された

$maxlength 返されるデータの最大長

$read_timeout 読み取り操作のタイムアウト (PHP 4 Beta 4 が必要) 設定 0 はタイムアウトがないことを意味します

$timed_out If読み取り操作がタイムアウトすると、この属性は true を返します (PHP 4 Beta 4 が必要)

$maxframes 追跡できる最大フレーム数

$status キャプチャされた http

$temp_dir Web サーバーが書き込むことができる一時ファイル ディレクトリ (/tmp)

$curl_path cURL バイナリのディレクトリ。cURL バイナリがない場合は、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)."
\n"; } else echo "error fetching document: ".$snoopy->error."\n";

指定された URL のコンテンツを取得します

#コードは次のとおりです次のとおりです:

<?php
 $url = "https://www.jb51.net";
 include("snoopy.php");
 $snoopy = new Snoopy;
 $snoopy->fetch($url); //获取所有内容
 echo $snoopy->results; //显示结果
 //可选以下
 $snoopy->fetchtext //获取文本内容(去掉html代码)
 $snoopy->fetchlinks //获取链接
 $snoopy->fetchform  //获取表单
 ?>

フォームの送信

コードは次のとおりです:

<?php
$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 とブラウザを偽装しましょう。


偽装ブラウザ

コードは次のとおりです:

<?php
$formvars["username"] = "lanfengye";
$formvars["pwd"] = "lanfengye";
$action = "https://www.jb51.net";
include "snoopy.php";
$snoopy = new Snoopy;
$snoopy->cookies["PHPSESSID"] = &#39;fc106b1918bd522cc863f36890e6fff7&#39;; //伪装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;
?>
結果は次のとおりです。セッションを偽装したり、ブラウザを偽装したり、IP を偽装したりできること、ははは、たくさんのことができます 何かが起こりました。


例:

検証コードを使用して、IP を検証して投票すると、継続的に投票できます。

ps: ここでの IP の偽装は、実際には http ヘッダーを偽装しているため、REMOTE_ADDR

を通じて取得された IP は偽装できませんが、HTTP ヘッダー (種類プロキシを防ぐことができます)、独自の IP を作成できます。

コードの検証方法について簡単に説明します。 まず、通常のブラウザを使用してページを表示し、検証コードに対応するセッション ID を見つけて、そのセッション ID と検証を書き留めます。次へ スヌーピーを使って偽装するだけです。

原則:

同じセッションIDであるため、取得される確認コードは最初に入力したものと同じです。

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

<?php
$snoopy->proxy_host = "https://www.jb51.net";
$snoopy->proxy_port = "8080"; //使用代理
$snoopy->maxredirs = 2; //重定向次数
$snoopy->expandlinks = true; //是否补全链接 在采集的时候经常用到
// 例如链接为 /images/taoav.gif 可改为它的全链接 <a href="https://www.jb51.net/images/taoav.gif">https://www.jb51.net/images/taoav.gif</a>
$snoopy->maxframes = 5 //允许的最大框架数
//注意抓取框架的时候 $snoopy->results 返回的是一个数组
$snoopy->error //返回报错信息
?>
関連ビデオの推奨事項:

PHP プログラミングの入門から習熟まで

以上がphpスヌーピーの使い方は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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