Web サイトからデータを取得する Web クローラーの作成に取り組んでおり、ほぼホーム ステッチですが、問題が発生しました。正常にログイン/Cookie を取得できますが、この方法でログインすると Web サイトが異常な反応を示します。(スクリーンショット参照)
ページが最初に読み込まれると、Cookie が役に立たなくなったように見えます (Cookie はまだ存在します。確認しました)。私が間違っていることを知っている人はいますか?同様の問題を調べてみましたが、役に立ちませんでした。
コード:
<?
session_write_close();
$ch = curl_init();
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
curl_setopt ($ch, CURLOPT_COOKIEJAR, getcwd().'/cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEFILE, getcwd().'/cookie.txt');
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_REFERER, "http://www.callofduty.com/");
curl_setopt($ch, CURLOPT_URL,"https://profile.callofduty.com/elite/login");
curl_exec($ch);
curl_setopt ($ch, CURLOPT_REFERER, "https://profile.callofduty.com/elite/login");
curl_setopt($ch, CURLOPT_URL, 'https://profile.callofduty.com/elite/do_login');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'j_username=USERNAME&j_password=PASSWORD');
echo "Initial Dump: <p>";
echo curl_exec($ch);
curl_setopt($ch, CURLOPT_URL,"https://elite.callofduty.com/career/xbox/54d10030cc86b1b9c3162b395d46bffe#/playercardmw3");
curl_exec($ch);
echo "<hr/>Second Dump: <p>";
var_dump(curl_getinfo($ch));
?>
注:別のバックグラウンド ウィンドウで定期的にログインすると、ページの動作が若干改善されます。読み込む情報は他にもあります。サーバー上のPHPスクリプトによってCookieが処理されないため、これは私を混乱させますか? O_o
--- 更新 --- さて、何も変更していないので理由はわかりませんが、サイトをロードすると、必要な情報がないだけで正常に見えます ( http://gyazo.com/e326f2f4cdac3e6a4a20fdc9afc62f2d. png?1340088915 )。ただし、ログアウトしていると表示されます。(注: ログアウト中はプロファイルを表示できません。強制的にログイン画面が表示されます)
リクエストのエコーと var_dump の両方の出力は次のとおりです。
私が知る限り、Cookie を取得したにもかかわらず、サイトはまだ私がログアウトしていると認識しています。
前もって感謝します!