【PHP】cURLでYahooにログインする

PC
スポンサーリンク

以前、ヤフオクのウォッチリストのデータを取得するのに、Yahoo! ID連携を使う方法を紹介しました。

【PHP】Yahoo! ID連携でヤフオク(マイ・オークション)データを取得

正攻法ならこの方法だと思いますが、いろいろとめんどくさい点があります。

そこで、ローカル環境からウォッチリストを取得するために、cURLでYahooにログインしてみたいと思います。

以下のブログを参照してますが、現在はYahooの仕様が変更されているため、そのままでは使えません。

PHPでヤフーにログインする - Digitarhythm
一連の続き。もうほとぼり冷めたし、そうすぐに仕様変えないだろうからと思って公開します。Github使ってたらかっこ良さそうなので、そっちで公開します。よろしくです。 comeonly/yahoobrowser · GitHub 公開してから知りましたが、こんなちょっとしたコードならGistが良かったんですかね。まいっか...

Yahooは頻繁に仕様が変わるため、今回紹介するものもいつまで使えるかはわかりませんので、ご了承ください。

まずはYahooにログインする

ログインさえできれば、ヤフオクのウォッチリストを取得したり、ヤフーショッピングの注文履歴をみたりできますので、まずはトップページにログインしてみます。

YahooのIDとパスワードさえ入力すれば動くと思います。

ユーザーエージェントは好きなものに変えても大丈夫です。

<?php

//Yahoo!のアカウント名
$id   = '[YahooID]';
$pass = '[パスワード]';

$cookie = './cookie.txt';

// 好きなユーザーエージェントを設定
$user_agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko';

// ログインページを開く
$url = 'https://login.yahoo.co.jp/config/login?';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);

$html = curl_exec($ch);
curl_close($ch);

// 必要なポストデータを取得
preg_match_all(
            '/document\.getElementsByName\("\.albatross"\)\[0\]\.value = "(.*?)";/',
            $html,
            $albatross,
            PREG_SET_ORDER
        );


// ポストデータをセット
$POST_DATA  = array(
	'.ct'                 => '',
	'.display'            => '',
	'.done'               => 'http://www.yahoo.co.jp',
	'.keep'               => '',
	'.reg'                => 'https://account.edit.yahoo.co.jp/registration?src=www&done=http%3A%2F%2Fwww.yahoo.co.jp',
	'.src'                => 'www',
	'.suppreg_skip'       => '',
	'.yby'                => '',
	'auth_lv'             => '',
	'card_cushion_skip'   => '',
	'ckey'                => '',
	'nolink'              => '',
	'nonotice'            => '',
	'noreg'               => '',
	'referrer'            => '',
	't_cushion'           => '',
	'.albatross'          => $albatross[0][1],
	'.requiredPsCheckBox' => '',
	'.slogin'             => '',
	'.tries'              => '1',
	'ls_autocomp'         => '',
	'showpw_status'       => '',
	'login'               => $id,
	'passwd'              => $pass,
	'persistent'          => 'y'
);


// Yahoo!トップページにログイン
$url = 'https://login.yahoo.co.jp/config/login?.src=www&.done=http://www.yahoo.co.jp';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $POST_DATA);

echo $html = curl_exec($ch);
curl_close($ch);

?>

ログインした状態のトップページが表示されれば成功です。

ログインしてできること

取得したクッキーを使って、他のサービスも利用できます。

Yahooはサービスによって、文字コードが違うので、文字化けする場合はその辺りを疑ってください。

マイ・オークション(ウォッチリスト)を表示

<?php

// ヤフオク!のマイ・オークション(ウォッチリスト)を表示
$url = 'http://openwatchlist.auctions.yahoo.co.jp/jp/show/mystatus?select=watchlist';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

echo $html = curl_exec($ch);
curl_close($ch);

?>

Yahoo!ショッピングの注文履歴を表示

<?php

// Yahoo!ショッピングの注文履歴を表示
$url = 'https://odhistory.shopping.yahoo.co.jp/cgi-bin/history-list?sc_i=shp_pc_top_MHD_order_history';
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);

echo $html = mb_convert_encoding(curl_exec($ch), 'UTF-8', 'AUTO');
curl_close($ch);

?>

その他

ヤフーにログインできれば、入札なども自動で行えるようになります(少し仕様が複雑ですが)。巷の自動入札ソフトなども、基本的にはブラウザ操作で入札しているようです。

パワーセラー -ヤフオク対応!オークション自動入札ソフト

このようなソフトを購入しなくても、自分で作れるようになりますね。

スポンサーリンク
PCPHPWEB
スポンサーリンク
hayoをフォローする
暇なのでいろいろと…

コメント

タイトルとURLをコピーしました