ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

PHP:Hypertext PreprocessorコミュのPHPから Yahooオークション巡回ツール作成

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして。sakashoともうします。
場所違いかもしれませんが、識者の方いらっしゃいましたら
ご教授ください。

PHPで、Yahooオークションの巡回ツールを作ろうとしています。
自分で出品したオークションの商品を定期的に閲覧して、
落札されているかどうか、入札状況を表示したいと考えています。

PEAR::HTTP_Requestを使ってまず、Yahooへの自動ログインHTMLフォームを参考に、下記スクリプトを作ってみました。
何べんかテストしている間はオークション内容が表示されたのですが、しばらくすると、500エラーになって止まってしまいます。

オークション巡回ツール、オークション出品ツールなど、VBベース?で作られているものはうまくいっているようなので、方法が違うのか、組み方が違うのか、判断しかねています。

<?php
///////////////////////////////////////////////////////////////////////////////////////////
// HTTP CLIENT Module ログインする
///////////////////////////////////////////////////////////////////////////////////////////

include('HTTP/Request.php');


$target_url = 'オークションページ';
$req = &new HTTP_Request();
$req->setURL($target_url);
$req->setMethod(HTTP_REQUEST_METHOD_POST);

//
// immediate POST Data settings
//
$req->addPostData('.tries','1');
$req->addPostData('.src','auc');
$req->addPostData('.intl','jp');
//$req->addPostData('.u','dpbdngl0mvo42'); //いらないかも
$req->addPostData('.v','0');
//$req->addPostData('.challenge','42JdTorTzzxvXyUEPza7mEMIjd_h'); //いらないかも
$req->addPostData('hasMsgr','0');
$req->addPostData('.chkP','Y');
$req->addPostData('.done',$target_url);
$req->addPostData('login','YahooID');
$req->addPostData('passwd','Yahooパスワード');

$req->sendRequest();
$tmp_Cookie = $req->getResponseCookies();

for($i=0;$i<count($tmp_Cookie);$i++){
$req->addCookie($tmp_Cookie[$i][name],$tmp_Cookie[$i][value]);
}
if($req->getResponseCode()=="302"){
$tmp_Response = $req->getResponseHeader();
$req->setURL($tmp_Response[location]);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->sendRequest();
print_r($req->_response);
exit; //ここで500エラーになって止まる
$tmp_Cookie = $req->getResponseCookies();
$tmp_Response = $req->getResponseHeader();
$req->setURL($tmp_Response[location]);

for($i=0;$i<count($tmp_Cookie);$i++){
$req->addCookie($tmp_Cookie[$i][name],$tmp_Cookie[$i][value]);
}
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->sendRequest();
$tmp_Response = $req->getResponseHeader();
$req->setURL($tmp_Response[location]);
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$req->sendRequest();
print_r($req->_response);
exit;
$result = $req->getResponseBody();


}
echo $result;
?>

コメント(6)

はじめまして〜。
ちょっと難しくて、どこに問題があるのかわかりませんが、自分が、こういったHTTP系のスクリプトを作るときは、FireFoxの追加パッケージのLiveHTTPHeadersってのを使います。
これは、HTTP REQUEST と HTTP RESPONSEを表示してくれるツールです。これで、実際にスクリプトで代行しなければならないリクエストの流れを一度全部見て、それと同じ動作を行うようにスクリプトを組む感じです。

http://livehttpheaders.mozdev.org/

でも、見たところ、Locationを追いかけてるところとか、クッキー使ってるところから、このツール使っても問題の部分は見つからないでしょうね。もしかしたら既に使ってるかな?

自分も似たような物を作ってるときに、Locationが3回ぐらい入ってるのに気づかないで悩んだことがあります。。。
Javaで同じようなことをやっていますが
私はリダイレクト先へのリクエストはPOSTではなくGETでやるようにしています。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

PHP:Hypertext Preprocessor 更新情報

PHP:Hypertext Preprocessorのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング