ホームページ  >  記事  >  バックエンド開発  >  PHP はログインをシミュレートしてデータを取得します

PHP はログインをシミュレートしてデータを取得します

巴扎黑
巴扎黑オリジナル
2016-11-10 09:31:241295ブラウズ

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"

preg_match_all($preg, $content, $arr); str = $arr[1][0]; //出力内容


上記のコードを実行すると、ログインしたユーザーのアバター画像が最終的に取得されることがわかります。

PHP はログインをシミュレートしてデータを取得します

使用方法の概要

1.curl_setopt を使用してターゲット URL を設定します。

3.curl を実行します。

5. データを出力します。

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