ホームページ  >  記事  >  バックエンド開発  >  PHPカールモジュールはログインをシミュレートし、ページサンプルを収集します_PHPチュートリアル

PHPカールモジュールはログインをシミュレートし、ページサンプルを収集します_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:43:37845ブラウズ

PHP のcurl モジュールは、post や get などのシミュレートされたログインを簡単に実装できるマルチスレッド モジュールです。以下に、curl モジュールを使用してログインをシミュレートし、ページ プログラムを収集する例を示します。

今日受け取った宿題は、Web サイトから製品在庫を取得することですが、この Web サイトではログインが必要です。ヘッダー全体を渡すのに fsockopen を使用しても無駄だったので、curl に頼らざるを得ませんでした。

ところで、curl モジュールを開く方法について話しましょう:

(1) libeay32.dll、ssleay32.dllをphpディレクトリからwindowsディレクトリにコピーします。
(2) php.ini を開き、「extension_dir = xxxxx」を検索し、以下のファイルディレクトリに php_curl.dll ファイルがあることを確認します。
(3) これも php.ini で、「extension=php_curl.dll」を探し、コメント化されていないこと (先頭に「;」がないこと) を確認します。
(4) apache を再起動します。curl_init() ステートメントの使用時にエラー メッセージが表示された場合は、インストールが成功しなかったことを意味します。

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

$curl =curl_init();
$cookie_jar = tempnam('./tmp','cookie');
curl_setopt($curl, CURLOPT_URL,'http://www.bKjia.c0m/checkUser.jsp');//ここにログインインターフェースを書きます
curl_setopt($curl, CURLOPT_POST, 1);
$request = 'ユーザー=xxx&パスワード=xxx';
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);//データを転送します
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_jar);// 返された Cookie 情報を $cookie_jar ファイルに保存します
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//返されたデータを自動的に表示するかどうかを設定します
curl_setopt($curl, CURLOPT_HEADER, false);//ヘッダー情報を表示するかどうかを設定します
curl_setopt($curl, CURLOPT_NOBODY, false);//ページコンテンツを出力するかどうかを設定します
curl_exec($curl);//結果を返す
curl_close($curl); //閉じる

$curl2 =curl_init();
curl_setopt($curl2, CURLOPT_URL, 'http://www.bKjia.c0m/ aaa.php');//ログイン後にどのページから情報を取得するか
curl_setopt($curl2, CURLOPT_HEADER, false);
curl_setopt($curl2, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl2, CURLOPT_COOKIEFILE, $cookie_jar);
$content =curl_exec($curl2);

このようにして、取得したデータを文字列として$contentに渡します。次に文字列を加工して不要な部分を削除します。
ページのフロントエンドの不要な部分のみを削除しました:

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

$content = strstr($orders,'

');//最初の出現箇所を検索します

配置と削除

CURLパラメータの詳細な説明:

boolcurl_setopt (int ch、文字列オプション、混合値)

curl_setopt() 関数は、CURL セッションのオプションを設定します。 option パラメータは必要な設定であり、value はこのオプションで指定される値です。

次のオプションの値は、long 整数として使用されます (オプション パラメーターで指定):

*CURLOPT_INFILESIZE: ファイルをリモート サイトにアップロードするとき、このオプションはアップロードするファイルのサイズを PHP に伝えます。
*CURLOPT_VERBOSE: CURL にすべての予期しないイベントを報告させたい場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_HEADER: 出力にヘッダーを含める場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_NOPROGRESS: PHP に CURL 転送の進行状況バーを表示させたくない場合は、このオプションをゼロ以外の値に設定します。

注: PHP はこのオプションをゼロ以外の値に自動的に設定します。このオプションはデバッグ目的でのみ変更してください。

*CURLOPT_NOBODY: 出力に本文部分を含めたくない場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_FAILONERROR: エラーが発生したときに PHP でエラー (HTTP コードが 300 以上を返す) を表示しないようにするには、このオプションをゼロ以外の値に設定します。デフォルトの動作では、通常のページが返され、コードは無視されます。
*CURLOPT_UPLOAD: PHP にアップロードの準備をさせたい場合は、このオプションをゼロ以外の値に設定します。
*CURLOPT_POST: PHP で通常の HTTP POST を実行する場合は、このオプションをゼロ以外の値に設定します。この POST は通常の application/x-www-from-urlencoded タイプで、主に HTML フォームで使用されます。
*CURLOPT_FTPLISTONLY: このオプションをゼロ以外の値に設定すると、PHP は FTP のディレクトリ名をリストします。
*CURLOPT_FTPAPPEND: このオプションをゼロ以外の値に設定すると、PHP はリモート ファイルを上書きせずに適用します。
*CURLOPT_NETRC: このオプションをゼロ以外の値に設定すると、PHP は ~./netrc ファイル内で接続先のリモート サイトのユーザー名とパスワードを検索します。
*CURLOPT_FOLLOWLOCATION: このオプションをゼロ以外のヘッダー ("Location: " など) に設定すると、サーバーはそれを HTTP ヘッダーの一部として送信します (これは再帰的であることに注意してください。PHP は "Location: " のようなヘッダーを送信します)。
*CURLOPT_PUT: HTTP を使用してファイルをアップロードするには、このオプションをゼロ以外の値に設定します。このファイルをアップロードするには、CURLOPT_INFILE オプションと CURLOPT_INFILESIZE オプションを設定する必要があります。
*CURLOPT_MUTE: このオプションをゼロ以外の値に設定すると、PHP は CURL 関数に対して完全にサイレントになります。
*CURLOPT_TIMEOUT: 最大秒数として長整数を設定します。
*CURLOPT_LOW_SPEED_LIMIT: 送信されるバイト数を制御する長整数を設定します。
*CURLOPT_LOW_SPEED_TIME: CURLOPT_LOW_SPEED_LIMIT で指定されたバイト数を送信する秒数を制御する長整数を設定します。
*CURLOPT_RESUME_FROM: バイト オフセット アドレス (転送先の開始フォーム) を含む長いパラメータを渡します。
*CURLOPT_SSLVERSION: SSL バージョンを含む長いパラメータを渡します。デフォルトでは、PHP は独自のハードワークを実行しますが、セキュリティを強化するには手動で設定する必要があります。
*CURLOPT_TIMECONDITION: 長いパラメーターを渡して、CURLOPT_TIMEVALUE パラメーターの処理方法を指定します。このパラメータは TIMECOND_IFMODSINCE または TIMECOND_ISUNMODSINCE に設定できます。これは HTTP のみに適用されます。
*CURLOPT_TIMEVALUE: 1970 年 1 月 1 日から現在までの秒数を渡します。この時間は、CURLOPT_TIMEVALUE オプション、またはデフォルトの TIMECOND_IFMODSINCE によって指定された値として使用されます。

次のオプションの値は文字列として扱われます:

*CURLOPT_URL: これは、PHP を使用して取得する URL アドレスです。このオプションは、curl_init() 関数を使用した初期化中に設定することもできます。
*CURLOPT_USERPWD: [ユーザー名]:[パスワード] の形式で文字列を渡し、PHP を使用して接続します。
*CURLOPT_PROXYUSERPWD: [ユーザー名]:[パスワード] の形式で文字列を渡し、HTTP プロキシに接続します。
*CURLOPT_RANGE: 指定したい範囲を渡します。 X または Y を除いた「X-Y」形式である必要があります。 HTTP 転送では、カンマ (X-Y、N-M) で区切られた複数の間隔もサポートされます。
*CURLOPT_POSTFIELDS: すべてのデータを含む文字列を HTTP "POST" 操作として渡します。
*CURLOPT_REFERER: HTTP リクエスト内の「リファラー」ヘッダーを含む文字列。
*CURLOPT_USERAGENT: HTTP リクエスト内の「user-agent」ヘッダーを含む文字列。
*CURLOPT_FTPPORT: ftp "POST" コマンドで使用される IP アドレスを含む IP アドレスを渡します。この POST コマンドは、指定した IP アドレスに接続するようにリモート サーバーに指示します。この文字列には、IP アドレス、ホスト名、ネットワーク インターフェイス名 (UNIX の場合)、または「-」 (システムのデフォルトの IP アドレスを使用) を指定できます。
*CURLOPT_COOKIE: HTTP Cookie を含むヘッダーを接続に渡します。
*CURLOPT_SSLCERT: 証明書を含む文字列を PEM 形式で渡します。
*CURLOPT_SSLCERTPASSWD: CURLOPT_SSLCERT 証明書を使用するために必要なパスワードを含むパスワードを渡します。
*CURLOPT_COOKIEFILE: Cookie データを含むファイルの名前を含む文字列を渡します。この Cookie ファイルは、Netscape 形式であることも、ファイルに保存されている HTTP スタイルのヘッダーのスタックであることもできます。
*CURLOPT_CUSTOMREQUEST: HTTP リクエストを行うときに、GET または HEAD で使用される文字を渡します。 HTTP リクエストを実行するときに GET または HEAD の代わりに使用される文字列を渡します。これは、別のよりわかりにくい HTTP リクエストを実行する場合に便利です。

注: サーバーがコマンドをサポートしていることを確認する前にこれを実行しないでください。

次のオプションには、ファイルの説明 (fopen() 関数を使用して取得) が必要です:

*CURLOPT_FILE: このファイルは、配置して送信する出力ファイルになります。デフォルトは STDOUT です。 *CURLOPT_INFILE: このファイルは、送信した入力ファイルです。
*CURLOPT_WRITEHEADER: このファイルには出力のヘッダー部分が含まれます。
*CURLOPT_STDERR: このファイルには、stderr の代わりにエラーが書き込まれています。

http://www.bkjia.com/PHPjc/633158.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/633158.html技術記事 PHPのcurlモジュールは、postやgetなどのシミュレートされたログインを簡単に実装できるマルチスレッドモジュールです。curlモジュールを使用してログインをシミュレートし、ページを収集する例を示します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。