cURL は強力な PHP ライブラリです。PHP の cURL ライブラリを使用すると、Web ページへのログインをシミュレートするための Cookie を設定して、PHP からより多くの情報を取得できます。 cURL の詳細についてはマニュアルを参照してください。この記事では、cURL の使用方法を共有する例として、オープン ソースの中国 (oschina) への模擬ログインを取り上げます。
PHP のcurl() は、Web ページのクロールにおいて比較的効率的であり、マルチスレッドをサポートしていますが、file_get_contents() は、当然ながら、curl を使用する場合は、curl 拡張機能を有効にする必要があります。
実際の戦闘のコード
まずコードのログイン部分を見てみましょう:
//ログインをシミュレートする
function login_post($url, $cookie, $post) {
$curl =curl_init();//カールモジュール
curl_setopt($curl, CURLOPT_URL, $url);//ログイン送信アドレス
curl_setopt($curl, CURLOPT_HEADER, 0);//ヘッダー情報を表示するかどうか
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//返された情報を自動的に表示するかどうか
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie) //Cookie 情報を設定し、指定されたファイルに保存します
curl_setopt($curl, CURLOPT_POST, 1) //ポストモードで送信します
curl_setopt ($curl, CURLOPT_POSTFIELDS, http_build_query( $post));//送信する情報
curl_exec($curl);//cURL を実行
curl_close($curl);//cURL リソースを閉じ、システム リソースを解放
}
関数login_post()は最初にcurl_init()で初期化され、次にcurl_setopt()を使用して、送信するURLアドレス、保存されたCookieファイル、投稿データ(ユーザー名とパスワードおよびその他の情報)、投稿するかどうかなどの関連オプション情報を設定します。情報などを返し、次にcurl_execがcurlを実行し、最後にcurl_close()リソースを解放します。 PHP 独自の http_build_query() は配列を接続された文字列に変換できることに注意してください。
次に、ログインに成功したら、ログイン成功後のページ情報を取得する必要があります。
//ログイン成功後にデータを取得
function get_content($url, $cookie) {
$ch =curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0); ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //cURL を実行してページのコンテンツをキャプチャする
curl_close( $ ch);
return $rs;
}
関数 get_content() も最初にcurlを初期化し、次に関連するオプションを設定し、curlを実行してリソースを解放します。このうち、CURLOPT_RETURTRANSFER を 1 に設定すると情報が自動的に返され、CURLOPT_COOKIEFILE はログイン時に保存された Cookie 情報を読み取って、最終的にページのコンテンツを返すことができます。
私たちの最終的な目標は、模擬ログイン後の情報を取得することです。これは、正常なログインに成功した後にのみ取得できる有益な情報です。次に、Open Source China のモバイル バージョンへのログインを例として、ログイン成功後の情報を取得する方法を確認します。
//投稿データを設定する
$post = array ( 'email' => 'oschina account',
'pwd' => 'oschina パスワード',
'goto_page' => '/my',
'error_page ' => '/login',
'save_login' => '1',
'submit' => '今すぐログイン'
);
//ログインアドレス
$url = "http://m.oschina. net/action/user/login";
//Cookieの保存パスを設定
$cookie = dirname(__FILE__) . '/cookie_oschina.txt';
//ログイン後に情報を取得するアドレス
$url2 = "http: / /m.oschina.net/my";
//ログインをシミュレートする
login_post($url, $cookie, $post);
//ログインページ情報を取得する
$content = get_content($url2, $cookie);
// Cookie ファイルを削除
@ unlink($cookie);
// 一致するページ情報
$preg = "/
(.*)
/i"
使用方法の概要
1.curl_setopt を使用してターゲット URL を設定します。
3.curl を実行します。
5. データを出力します。