最初に簡単なページ キャプチャ関数を作成します
コードをコピーします コードは次のとおりです:
function GetSources($Url,$User_Agent='',$Referer_Url='') //指定されたページをキャッチします
{
//$Url クロールされるページのアドレス
// $ User_Agent は、「baiduspider」や「googlebot」などの user_agent 情報を返す必要があります。ユーザー_エージェント);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
$MySources = _exec ($ch);
curl_close($ch);
return $MySources;
$Url = "http://www.jb51.net";コンテンツいいえ
$User_Agent = "baiduspider (http://www.baidu.com/search/spider.htm)";
$Referer_Url = 'http://www.jb51.net/'; 🎜> echo GetSources($Url,$User_Agent,$Referer_Url);
PHP の CURL 関数ライブラリ (クライアント URL ライブラリ関数)
curl_close — Curl セッションを終了します。
curl_copy_handle — Curl 接続リソースのすべての内容とパラメーターをコピーします。
curl_errno — 現在のセッションのエラー メッセージを含む数値を返します。現在のセッションエラーを含む番号 セッションエラー情報の文字列;
print_r(curl_version()) ?> curl_getinfo() 関数の機能は、curl 接続リソース ハンドルに関する情報を取得することです。最初のパラメータはカール リソース ハンドルで、2 番目のパラメータは次の定数です: PHP コード
コピー コード
コードは次のとおりです:
$ch =curl_init("http://blog.huangchao.org/")
print_r(curl_getinfo($ch)); ;
オプションの定数には以下が含まれます:
CURLINFO_EFFECTIVE_URL: 最後に有効な URL アドレス;
CURLINFO_HTTP_CODE: 最後に受信した HTTP コード;
CURLINFO_FILETIME: ドキュメントを取得できない場合は、戻り値は「-1」です。
CURLINFO_TOTAL_TIME: 最後の送信に費やした時間。
CURLINFO_CONNECT_TIME: 接続の確立に費やした時間。 : 接続の確立から転送の準備までにかかる時間。
CURLINFO_STARTTRANSFER_TIME: 接続の確立から転送の開始までにかかる時間。
CURLINFO_REDIRECT_TIME: トランザクション転送が開始されるまでにかかる時間。 ;
CURLINFO_SIZE_UPLOAD: アップロード データ量の合計値;
CURLINFO_SIZE_DOWNLOAD: ダウンロードされたデータ量の合計値
CURLINFO_SPEED_UPLOAD: 平均アップロード速度;
CURLINFO_HEADER_SIZE: ヘッダー部分のサイズ;
CURLINFO_HEADER_OUT: HTTP リクエスト内の該当のリクエストのサイズ; CURLOPT_SSL_VERIFYPEER の設定による; WNLOAD: Content-Length から: フィールドに読み取られたダウンロードされたコンテンツの長さ;
CURLINFO_CONTENT_TYPE: アップロードされたコンテンツのサイズの説明。ダウンロードされたコンテンツ。NULL は、サーバーが有効な "Content-Type" : header" を送信しなかったことを意味します。
curl_setopt() 関数は、curl のセッション パラメーターを設定するために使用されます。 curl_setopt_array() の機能は、curl のセッション パラメータを配列の形式で設定することです。
PHP コード
コードをコピー
コードは次のとおりです。
$ch =curl_init(); $fp = fopen("example_homepage.txt", "w"); ch, CURLOPT_FILE, $fp ); $options = array( CURLOPT_URL =>'http://www.baidu.com/',
CURLOPT_HEADER => false); 🎜>curl_setopt_array($ch , $options);
curl_exec($ch);
fclose($fp);
設定できるパラメータは次のとおりです。
CURLOPT_AUTOREFERER: ヘッダーにリファラー情報を自動的に設定します。
CURLOPT_BINARYTRANSFER: CURLOPT_RETURNTRANSFER が有効な場合、データが取得されて返されます。
CURLOPT_COOKIESESSION: 有効な場合、 curl はセッション cookie のみを渡し、他の cookie を無視します。curl はデフォルトですべての cookie をサーバーに返します。セッション Cookie は、サーバー側のセッションが有効かどうかを判断するために存在する Cookie を指します。
CURLOPT_CRLF: 有効にすると、Unix の改行は復帰と改行に変換されます。
CURLOPT_DNS_USE_GLOBAL_CACHE:有効にすると、グローバル DNS キャッシュが有効になります。これはスレッドセーフであり、デフォルトは true です。
CURLOPT_FAILONERROR: デフォルトの動作では、400 以下の HTTP 情報が無視されます。 🎜>CURLOPT_FILETIME: 有効にすると、リモート ドキュメント内の情報の変更が試行されます。結果情報は、curl_getinfo() 関数の CURLINFO_FILETIME オプションを通じて返されます。
CURLOPT_FOLLOWLOCATION: 有効にすると、サーバーから返された「Location:」がヘッダーに配置され、CURLOPT_MAXREDIRS を使用して再帰的にサーバーに返されます。再帰的リターンの数を制限します。
CURLOPT_FORBID_REUSE: インタラクションの完了後に接続を強制的に切断し、再利用できません。
CURLOPT_FRESH_CONNECT: キャッシュ内の接続を置き換えるために新しい接続を強制的に取得します。 : アクティブな FTP ダウンロードを実行するときに EPRT (および LPRT) を使用する場合は TRUE。EPRT と LPRT を無効にして PORT のみを使用する場合は FALSE を使用します。
CURLOPT_FTP_USE_EPSV: FTP 転送の前に最初に EPSV コマンドを試行する場合は TRUE。 EPSV を無効にするには FALSE に戻します。
CURLOPT_FTPASCII: CURLOPT_TRANSFERTEXT のエイリアスを使用します。 FTP ディレクトリの名前のみをリストします。 CURLOPT_HEADER: 有効にすると、ヘッダー ファイル情報がデータ ストリームとして出力されます。
CURLOPT_HTTPGET: 有効にすると、HTTP メソッドが GET に設定されます (GET がデフォルトです)。
CURLOPT_HTTPPROXYTUNNEL: 有効にすると、HTTP プロキシ経由で送信されます。
CURLOPT_MUTE: Curl 関数内のすべての変更されたパラメーターはデフォルト値に復元されます。接続が確立されたら、~/.netrc ファイルにアクセスしてユーザー名とパスワード情報を取得します。 リモート サイト;
CURLOPT_NOBODY: 有効にすると、HTML の本文部分は出力されません。 、curl 送信の進行状況バーはオフになります。この項目のデフォルト設定は true です。
CURLOPT_NOSIGNAL: 有効な場合は無視されます。すべてのcurl はシグナルを PHP に渡します。在SAPI多线程传输时此项被默认打开;
CURLOPT_POST:启用时会发送一个常规的POST请求,类型为:application/x-www-form-urlencoded,就像表单提交的一样;
CURLOPT_PUT:启用时允许HTTP发送文件,必须同时设置CURLOPT_INFILE和CURLOPT_INFILESIZE
CURLOPT_RETURNTRANSFER:将curl_exec()获取的信息以文件流的形式返回,而不是直接输出;
CURLOPT_SSL_VERIFYPEER:FALSE to stop cURL from verifying the peer's certificate. Alternate certificates to verify against can be specified with the CURLOPT_CAINFO option or a certificate directory can be specified with the CURLOPT_CAPATH option. CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2). TRUE by default as of cURL 7.10. Default bundle installed as of cURL 7.10;
CURLOPT_TRANSFERTEXT:TRUE to use ASCII mode for FTP transfers. For LDAP, it retrieves data in plain text instead of HTML. On Windows systems, it will not set STDOUT to binary mode;
CURLOPT_UNRESTRICTED_AUTH:在使用CURLOPT_FOLLOWLOCATION产生的header中的多个locations中持续追加用户名和密码信息,即使域名已发生改变;
CURLOPT_UPLOAD:启用时允许文件传输;
CURLOPT_VERBOSE:启用时会汇报所有的信息,存放在STDERR或指定的CURLOPT_STDERR中;
CURLOPT_BUFFERSIZE:每次获取的数据中读入缓存的大小,这个值每次都会被填满;
CURLOPT_CLOSEPOLICY:不是CURLCLOSEPOLICY_LEAST_RECENTLY_USED就是CURLCLOSEPOLICY_OLDEST,还存在另外三个,但是curl暂时还不支持;
CURLOPT_CONNECTTIMEOUT:在发起连接前等待的时间,如果设置为0,则不等待;
CURLOPT_DNS_CACHE_TIMEOUT:设置在内存中保存DNS信息的时间,默认为120秒;
CURLOPT_FTPSSLAUTH:The FTP authentication method (when is activated): CURLFTPAUTH_SSL (try SSL first), CURLFTPAUTH_TLS (try TLS first), or CURLFTPAUTH_DEFAULT (let cURL decide);
CURLOPT_HTTP_VERSION:设置curl使用的HTTP协议,CURL_HTTP_VERSION_NONE(让curl自己判断),CURL_HTTP_VERSION_1_0(HTTP/1.0),CURL_HTTP_VERSION_1_1(HTTP/1.1);
CURLOPT_HTTPAUTH:使用的HTTP验证方法,可选的值有:CURLAUTH_BASIC,CURLAUTH_DIGEST,CURLAUTH_GSSNEGOTIATE,CURLAUTH_NTLM,CURLAUTH_ANY,CURLAUTH_ANYSAFE,可以使用“|”操作符分隔多个值,curl让服务器选择一个支持最好的值,CURLAUTH_ANY等价于CURLAUTH_BASIC | CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM,CURLAUTH_ANYSAFE等价于CURLAUTH_DIGEST | CURLAUTH_GSSNEGOTIATE | CURLAUTH_NTLM
CURLOPT_INFILESIZE:设定上传文件的大小;
CURLOPT_LOW_SPEED_LIMIT:当传输速度小于CURLOPT_LOW_SPEED_LIMIT时,PHP会根CURLOPT_LOW_SPEED_TIME来判断是否因太慢而取消传输;
CURLOPT_LOW_SPEED_TIME:The number of seconds the transfer should be below CURLOPT_LOW_SPEED_LIMIT for PHP to consider the transfer too slow and abort;
当传输速度小于CURLOPT_LOW_SPEED_LIMIT时,PHP会根据CURLOPT_LOW_SPEED_TIME来判断是否因太慢而取消传输;
CURLOPT_MAXCONNECTS:允许的最大连接数量,超过是会通过CURLOPT_CLOSEPOLICY决定应该停止哪些连接;
CURLOPT_MAXREDIRS:指定最多的HTTP重定向的数量,这个选项是和CURLOPT_FOLLOWLOCATION一起使用的;
CURLOPT_PORT:一个可选的用来指定连接端口的量;
CURLOPT_PROXYAUTH:The HTTP authentication method(s) to use for the proxy connection. Use the same bitmasks as described in CURLOPT_HTTPAUTH. For proxy authentication, only CURLAUTH_BASIC and CURLAUTH_NTLM are currently supported.
CURLOPT_PROXYPORT:The port number of the proxy to connect to. This port number can also be set in CURLOPT_PROXY.
CURLOPT_PROXYTYPE:Either CURLPROXY_HTTP (default) or CURLPROXY_SOCKS5.
CURLOPT_RESUME_FROM:在恢复传输时传递一个字节偏移量(用来断点续传)
CURLOPT_SSL_VERIFYHOST:
1 to check the existence of a common name in the SSL peer certificate.
2 to check the existence of a common name and also verify that it matches the hostname provided.
CURLOPT_SSLVERSION:The SSL version (2 or 3) to use. By default PHP will try to determine this itself, although in some cases this must be set manually.
CURLOPT_TIMECONDITION:如果在CURLOPT_TIMEVALUE指定的某个时间以后被编辑过,则使用CURL_TIMECOND_IFMODSINCE返回页面,如果没有被修改过,并且CURLOPT_HEADER为true,则返回一个"304 Not Modified"的header,CURLOPT_HEADER为false,则使用CURL_TIMECOND_ISUNMODSINCE,默认值为CURL_TIMECOND_IFMODSINCE
CURLOPT_TIMEOUT:设置curl允许执行的最长秒数
CURLOPT_TIMEVALUE:设置一个CURLOPT_TIMECONDITION使用的时间戳,在默认状态下使用的是CURL_TIMECOND_IFMODSINCE
CURLOPT_CAINFO: ピアを検証するための 1 つ以上の証明書を保持するファイルの名前。
CURLOPT_CAPATH: このオプションは、CURLOPT_SSL_VERIFYPEER と組み合わせて使用します。 >CURLOPT_COOKIE: HTTP リクエストの「Set-Cookie:」部分の内容を設定します。
CURLOPT_COOKIEFILE: Cookie 情報を含むファイルの名前。この Cookie ファイルは、Netscape 形式または HTTP 形式のヘッダー情報です。
CURLOPT_COOKIEJAR: 接続が閉じられた後、Cookie 情報を保存するファイル名
CURLOPT_CUSTOMREQUEST: HTTP リクエストを実行するときに、「GET」または「HEAD」の代わりに使用するカスタム リクエスト メソッド。これは、「DELETE」またはその他のよりあいまいな HTTP リクエストを実行する場合に役立ちます。有効な値は「GET」、「POST」、「CONNECT」などです。つまり、ここに HTTP リクエスト行全体を入力しないでください。
注: 最初にサーバーがカスタム リクエスト メソッドをサポートしていることを確認せずにこれを実行しないでください。
CURLOPT_EGBSOCKET: CURLOPT_RANDOM_FILE と同様です。
CURLOPT_ENCODING: ヘッダーの「Accept-Encoding:」部分の内容。サポートされているエンコード形式は「identity」、「deflate」、「gzip」です。空の文字列に設定すると、すべてのエンコード形式がサポートされることを意味します。
CURLOPT_FTPPORT: FTP の「POST」命令に使用する IP アドレスを取得するために使用される値。「POST」命令はリモート サーバーに指示します。指定した IP アドレスに接続するための文字列は、プレーンな IP アドレス、ホスト名、ネットワーク インターフェイス名 (Unix の場合)、またはシステムのデフォルトの IP アドレスを使用するための単なる '-' です。ネットワーク インターフェイスで使用される名前。インターフェイス名、IP、またはホスト名を指定できます。
CURLOPT_KRB4LEVEL: KRB4 (Kerberos 4) セキュリティ レベル設定。「clear」、「safe」、「confidential」、「private」のいずれかの値になります。デフォルト値は「private」です。null に設定すると、KRB4 セキュリティは FTP 送信でのみ使用できるようになります。
CURLOPT_POSTFIELDS: HTTP での「POST」操作。ファイルを転送したい場合は、@で始まるファイル名が必要です
CURLOPT_PROXY: HTTP プロキシサーバーを設定します
CURLOPT_PROXYUSERPWD: プロキシサーバーに接続し、ユーザー名とパスワードを「[ユーザー名」の形式で指定します]:[パスワード]" 。
CURLOPT_RANDOM_FILE: SSLで使用する乱数シードを格納するファイル名を設定します。
CURLOPT_RANGE: HTTP送信範囲を設定します。 HTTP送信が複数ある場合、送信範囲を「X-Y」の形式で設定できます。カンマを使用します。複数の値は「X-Y,N-M」の形式で区切ります。
CURLOPT_REFERER: ヘッダーの「Referer:」部分の値を設定します。
CURLOPT_SSL_CIPHER_LIST: SSL に使用する暗号のリスト。たとえば、RC4-SHA と TLSv1 は有効な暗号リストです。
CURLOPT_SSLCERT: PEM 形式の証明書を含む文字列を渡します。
CURLOPT_SSLCERTPASSWD: CURLOPT_SSLCERT 証明書を使用するために必要なパスワードを含むパスワードを渡します。
CURLOPT_SSLCERTTYPE: 証明書の形式は、「PEM」(デフォルト)、「DER」、および「ENG」です。
CURLOPT_SSLENGINE: CURLOPT_SSLKEY で指定された秘密 SSL キーの暗号化エンジンの識別子。
CURLOPT_SSLENGINE_DEFAULT: 非対称暗号化操作に使用される暗号化エンジンの識別子。
CURLOPT_SSLKEY: 秘密 SSL キーを含むファイルの名前。
CURLOPT_SSLKEYPASSWD: で指定された秘密 SSL キーを使用するために必要な秘密のパスワード。 CURLOPT_SSLKEY.
注: このオプションには機密性の高いパスワードが含まれているため、含まれている PHP スクリプトを安全な場所に保管してください。 " (デフォルト)、"DER"、"ENG"
CURLOPT_URL: 取得するURLアドレスはPHPのcurl_init()関数でも設定できます。
CURLOPT_USERAGENT: HTTP リクエスト内の「user-agent」ヘッダーを含む文字列。
CURLOPT_USERPWD: 接続に必要なユーザー名とパスワードを「[ユーザー名]:[パスワード]」の形式で渡します。
CURLOPT_HTTP200ALIASES: HTTP 200 応答をエラー形式で処理しないように設定します。形式は配列です。
CURLOPT_HTTPHEADER: ヘッダーに送信内容の配列を設定します。
CURLOPT_POSTQUOTE: FTP リクエストの実行後にサーバーで実行する FTP コマンドの配列
CURLOPT_QUOTE: FTP リクエストの前にサーバーで実行する FTP コマンドの配列。出力ファイルの場所。デフォルトは STDOUT (ブラウザ) です。
CURLOPT_INFILE: ファイルをアップロードするときに読み取る必要があるファイル アドレス。値はリソース タイプです。
CURLOPT_STDERR: エラー出力アドレスを設定します。値はリソースタイプであり、デフォルトの STDERR を置き換えます。
CURLOPT_WRITEHEADER: ヘッダー部分が書き込まれるファイルアドレスを設定します。値はリソースタイプです。
CURLOPT_HEADERFUNCTION: コールバック関数を設定します。この関数には 2 つのパラメーターがあります。1 つ目は、curl のリソース ハンドルで、2 つ目は出力ヘッダー データです。ヘッダー データの出力は、書き込まれたデータのサイズを返すこの関数に依存する必要があります。
CURLOPT_PASSWDFUNCTION: 3 つのパラメーターを使用してコールバック関数を設定します。最初のパラメーターは、curl リソース ハンドル、2 番目のパラメーターはパスワード プロンプト、3 番目のパラメーターは、許可されるパスワードの最大長です。パスワードの値を返します。
CURLOPT_READFUNCTION: 2 つのパラメーターを使用してコールバック関数を設定します。1 つ目は、curl のリソース ハンドルで、2 つ目は読み取りデータです。データの読み取りはこの関数に依存する必要があります。 0 または EOF など、読み取りデータのサイズを返します。
CURLOPT_WRITEFUNCTION: 2 つのパラメーターを使用してコールバック関数を設定します。1 つ目は、curl のリソース ハンドルで、2 つ目は書き込まれたデータです。データの書き込みはこの関数に依存する必要があります。書き込まれたデータの正確なサイズを返します
curl_copy_handle() 関数の機能は、curl 接続リソースのすべてのコンテンツとパラメータをコピーすることです
PHP コード
コードをコピー コードは次のとおりです:
$ch =curl_init("http://qzone.myqq.us/ ");
$another =curl_copy_handle($ch);
curl_exec($another);
curl_close($another);
?>
コードをコピー コードは次のとおりです:
$ch1 = curl_init() ;
$ch2 =curl_init();
curl_setopt($ch1, CURLOPT_URL, "http://blog.huangchao.org/"); ;
curl_setopt($ch2, CURLOPT_URL, "http://test.huangchao.org/");
curl_setopt($ch2, CURLOPT_HEADER, 0); >curl_multi_add_handle( $mh,$ch1);
curl_multi_add_handle($mh,$ch2);
do {
curl_multi_exec($mh,$flag)
} while ($flag > 0) );
curl_multi_remove_handle($mh,$ch1);
curl_multi_close($mh); curl_multi_getcontent() この関数の機能は、CURLOPT_RETURTRANSFER が設定されている場合に取得した出力テキスト ストリームを返すことです。
curl_multi_info_read() 関数は、現在解析されているcurlの関連する送信情報を取得するために使用されます。
curl_multi_select(): cURL 拡張機能に関連付けられているすべてのソケットを取得し、「選択」することができます