curlがなんか嫌いなので、こういう使い方も
ログインした後のページを何かしら取得したいと考えた時、まず考えるのはcurlの利用。でも、ログインしてcookieを取得して…という流れではなくて、crulを使わずログインしたページを取りたい!という時があって、それについて調べたので、今回も記録。
xpathの利用で使おうと思ってのことだけど、今回はそのログインしたページの取得だけ記載しておく。
cookieをまず取得する
取得したいページにまずはfirefoxでログインする。すると、ログインしたページが表示されているので、firefoxではcookieを取得している状態。
このブラウザから、cookieを取得するわけだけど、どこでわかるの?って話なんですけども、1.右上のメニューボタン→2.設定→3.プライバシー→Cookieを個別に削除する を押す
その後、ログインしたページのドメインを検索すると保有するcookieが見れる。
手当たり次第ぶちこんでアクセスすると、ログインページを取得できる
file_get_contentを実行する前にオプションを設定すると、cookieを埋め込んだ状態でアクセスできるので、ログインページを取得することができる。
以下、サンプルとする
$options = array(
'http'=>array(
'method' => 'GET',
'header' =>"Cookie: _gat=fdafdas;_ads=fdafsad;"
///cookieか各要素名に=で内容を入れ、; で区切る
)
);
$context = stream_context_create($options);
$url='https://hogehoge.com';
$source = file_get_contents($url, false, $context);
//$sourceをxpathで読み込んで、スクレイピングを実施する
ログイン状態は永遠ではないので注意
cookieは有効期限があるので、この状態でループ文での長い巡回は、いずれログアウト状態のソースを取得することになります。
一定期間をめどに使うのはよいですが、ずっとは状態が続かないので、そこに注意した上で、ソースの取得を行っていければと思う