PHPスクレイピングでfile_get_contentsする時にCookie情報を追加

PHP
スポンサーリンク


PHPを使って対象ページの情報をHTMLで取得する時にCookieの情報を追加してアクセスしたい場合の情報です。

今まで役立ったのはサイトの年齢認証を突破する時だったりしまよね。。。

商品一覧ページにアクセスしたいのにこんな感じで年齢認証が表示されて、「はい」をクリックすると商品一覧ページにリダイレクトされるような時です。

スポンサーリンク

Coockie情報の見つけ方

年齢認証する前のページでのCookie情報と年齢認証した後のページのCookie情報を見比べるときっとCookieが追加されていると思います。
それを探してください。

Chromeであればアドレスバーの左にある鍵アイコンをクリックすれば確認することができます。

実際のCookie情報追加方法

上記の方法でパラメータの特定が出来たら、実際にデータを取得してみます。
DMMの場合はadcというパラメータに1がセットされていたので、その例となります。

// ヘッダー情報
$header = array(
    'User-Agent: Mozilla/5.0',
    'Content-Type: application/x-www-form-urlencoded',
);

//ヘッダー情報にCookieを追加
$array_cookie[] = 'Cookie: adc=1';
$header = array_merge($header, $array_cookie);
 
//オプション設定
$options =array(
    'http' =>array(
        'method' => "GET",
        'header' => implode("\r\n", $header),
    )
);
    
// データ取得
$htmlData = file_get_contents('https://www.dmm.co.jp/', false, stream_context_create($options));

取得したデータのCookie情報は$http_response_headerでヘッダー情報を取得して、「Set-Cookie:」から始まる文字列を正規表現で検索すれば取得できます。

この後はphpQueryを使ってデータをスクレイピングすればOKですね。