1

CURLを使用した承認後に、SimpleHTMLDOMパーサーを使用してページを解析する方法を探しています。

これで、コードの2つの作業部分ができました。CURL認証とSimpleHTMLDOMパーサーです。

1)CURLを使用した認証

$data = array();
$data['name'] = 'name';
$data['pass'] = 'pass';
$data['loginbtnUp'] = '1';
$data['submit_flag'] = '1';
$data['rand'] = microtime(true);
$data['formSubmitted']=1;

$post_str = '';
foreach($data as $key=>$val) {
    $post_str .= $key.'='.urlencode($val).'&';
}
$post_str = substr($post_str, 0, -1);
$cookie_file = "cookie.txt";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://login.page.com/' );
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
$response = curl_exec($ch );

echo $response;

curl_close($ch);

2)およびシンプルなHTMLDOMパーサー

include('simple_html_dom.php');

$context = stream_context_create(array('http' => array(
  'header' => 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17'
)));
$html = str_get_html( file_get_contents('http://page.com/user1', false, $context) );

foreach($html->find('img[width="200"]') as $e)
    echo $e->src . '<br>';

私の質問は、許可されたユーザーのみがアクセスできるページを解析するためのコードの部分をどのように組み合わせるかです。ログインしてから、承認されたユーザーが利用できるさまざまなページを解析するのに1回だけ必要です

4

1 に答える 1

2

CURL を使用してログインしましたが、これはすばらしいことですが、CURL は現在、Cookie をCURLOPT_COOKIEJARファイルに保持しています。

サイトが保護されたコンテンツを提供し続けるためには、ログイン後に提供されたセッション Cookie を使用してコンテンツを提供し続ける必要があります。

したがって、パスワードで保護されたページへの追加のリクエストでは、ログイン プロセスと同じように CURL を使用する必要があります (もちろん、必要なくPOST、ただGET.

$ch = curl_init('https://login.page.com/protectedcontent');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
$response = curl_exec($ch);
curl_close($ch);

$dom = str_get_html($response);
于 2013-03-06T13:41:46.417 に答える