ホームページ  >  記事  >  バックエンド開発  >  phpカール学習の概要

phpカール学習の概要

WBOY
WBOYオリジナル
2016-07-25 09:11:44684ブラウズ

説明:curl を使用して、Web ページをすばやくクロールし、POST、GET リクエストをシミュレートします。もちろん、HTTP プロトコルの一部のカプセル化だけでなく、FTP、プロキシ、HTTPS、LDAP およびその他のアプリケーションもサポートします。 Curl は PHP に固有のものではなく、使いやすいものであれば自然に昇格します。何年も前の log4j と、その後の log4c、log4c++ と同じです。カールに行きます。 Curl はデフォルトでは PHP でサポートされていません。Linux では、PHP をコンパイルするときに ./configure にパラメータ -with-curl を追加することを忘れないでください。 Curl 拡張機能がオンになっているかどうかを確認するには、phpinfo(); を通じて確認できる必要があります。

1) 基本的な使い方 (一般的な呼び出し順序) curl_init: 初期化、 curl_setopt: パラメータオプションを設定します curl_exec: 現在のcurlオブジェクトを実行します。 curl_close: 現在のcurlオブジェクトを閉じます

例: 以下のコードが保存されている PHP Web ページにアクセスすると、126 個のメールボックスの Web ページが表示されます。

  1. $curl =curl_init();

  2. // クロールに必要な URL を設定します

  3. curl_setopt($curl, CURLOPT_URL, 'http:// 126.com');

  4. //ヘッダー情報を表示するかどうかを設定

  5. //curl_setopt($curl, CURLOPT_HEADER, 1);

  6. //結果を文字列に保存するか画面に出力するように cURL パラメーターを設定します。

  7. //curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

  8. // cURL を実行し、Web ページをリクエストします

  9. $data =curl_exec($curl);

  10. < p> // URL を閉じるリクエスト
  11. curl_close($curl);

  12. // 取得したデータを表示

  13. var_dump($data);

コードをコピー

2) POST 経由でデータを送信

    ﹤?php
  1. $phoneNumber = '13912345678';
  2. $message = 'このメッセージはcurlとphpによって生成されました';
  3. $curlPost = 'pNUMBER=' '&MESSAGE= ' . urlencode($message) . '&SUBMIT=Send';
  4. $ch =curl_init();
  5. curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/sendSMS.php');
  6. curl_setopt( $ch, CURLOPT_HEADER, 1);
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($ch, CURLOPT_POST, 1);
  9. curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost);
  10. $data =curl_exec($ch );
  11. curl_close($ch);
  12. ?﹥
コードをコピー

3) プロキシサーバー

    ﹤?php
  1. $ch =curl_init();
  2. curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
  3. curl_setopt($ch, CURLOPT_HEADER, 1);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
  6. curl_setopt($ch, CURLOPT_PROXY, 'fakeproxy.com:1080');
  7. curl_setopt($ch, CURLOPT_PROXYUSERPWD, ' ユーザー:パスワード');
  8. $data =curl_exec($ch);
  9. curl_close($ch);
  10. ?﹥
コードをコピー

4) SSL と Cookie について HTTPS プロトコルである SSL については、CURLOPT_URL 接続の http:// を https:// に変更するだけです。もちろん、サイトを検証するために設定できる CURLOPT_SSL_VERIFYHOST というパラメーターもあります。 Cookie に関しては、次の 3 つのパラメータを理解する必要があります。 CURLOPT_COOKIE、対面セッション中に Cookie を設定します CURLOPT_COOKIEJAR、セッション終了時に Cookie を保存します。 CURLOPT_COOKIEFILE、クッキー ファイル。

5) HTTPサーバー認証

  1. ﹤?php

  2. $ch =curl_init();
  3. curl_setopt($ch, CURLOPT_URL, 'http://www.example.com');
  4. curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
  5. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  6. curl_setopt(CURLOPT_USERPWD, '[ユーザー名]:[パスワード]')

  7. $data =curl_exec($ch) ;

  8. curl_close($ch);
  9. ?﹥

コードをコピー

概要: 後でいくつかの例を添付しますが、curl_setopt 関数が状況に応じて異なることを除いて、シーケンスは実際には最初の例と同じです。また、この関数には多くのパラメーターがあり、非常に柔軟であることもわかりました。

この関数の次のパラメータ: 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 リクエストを実行する場合や、よりわかりにくい別の HTTP リクエストを実行する場合に便利です。次のオプションには、ファイルの説明 (fopen() 関数を使用して取得) が必要です。 * CURLOPT_FILE: このファイルは、配置して送信する出力ファイルになります。デフォルトは STDOUT です。 * CURLOPT_INFILE: このファイルは、送信した入力ファイルです。 * CURLOPT_WRITEHEADER: このファイルには出力のヘッダー部分が含まれます。 * CURLOPT_STDERR: このファイルには、stderr の代わりにエラーが書き込まれています。ログインが必要なページを取得する例は、現在の方法では、毎回ログインする必要がある人が改善します。

よく使用される機能: curl_close — CURL セッションを閉じる curl_copy_handle — Curl 接続リソースのすべての内容とパラメータをコピーする curl_errno — 現在のセッションのエラー情報を含む数値を返します。 curl_error — 現在のセッションのエラー情報を含む文字列を返します。 curl_exec — Curl セッションを実行する curl_getinfo — CURL 接続リソース ハンドルに関する情報を取得する curl_init — Curl セッションを初期化する curl_multi_add_handle — 個々の CURL ハンドル リソースを CURL バッチ セッションに追加する curl_multi_close — バッチ ハンドル リソースを閉じる curl_multi_exec — Curl バッチ ハンドルを解析する curl_multi_getcontent — フェッチされた出力のテキスト ストリームを返す curl_multi_info_read — 現在解析されているcurlの関連する送信情報を取得します。 curl_multi_init — Curl バッチ ハンドル リソースを初期化する curl_multi_remove_handle — Curl バッチ ハンドル リソース内のハンドル リソースを削除する curl_multi_select — cURL 拡張子に関連付けられたすべてのソケットを取得し、「選択」できます。 curl_setopt_array — Curl のセッション パラメータを配列として設定する curl_setopt —curl のセッションパラメータを設定する curl_version —curl 関連のバージョン情報を取得します


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