3DSをamazonで購入することにクローラを使う

3DS予約可能になったらブラウザで商品画面を開いてくれるプログラムを書いた。

perl 3DScheck.pl でブラック
perl 3DScheck.pl A でアクアブルーの予約開始時にブラウザが開くようになっています。
ブラウザでアマゾンに事前にログインしておいてください。
amazonは予約完了までが勝負です。

Windows上でのみ動くので、perlは、Active Perlhttp://strawberryperl.com/ を入れてください。




#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request;

sub main{
while(1){
$|=1;
if ($ARGV[0] eq ""){
check_sales('http://www.amazon.co.jp/exec/obidos/ASIN/B00457VVS4/esute01-22/ref=nosim/','http://www.amazon.co.jp/exec/obidos/ASIN/B00457VVS4/netagent-22/ref=nosim/');
}else{
check_sales('http://www.amazon.co.jp/exec/obidos/ASIN/B00457VVRU/esute01-22/ref=nosim/','http://www.amazon.co.jp/exec/obidos/ASIN/B00457VVRU/netagent-22/ref=nosim/');
}
print ".\n";
sleep 30;
}
}

sub check_sales($){
my ($url,$url2)=@_;
my $ret =1;
my $ua = LWP::UserAgent->new;
$ua->agent('Mozilla/5.0 (Windows; U; Windows NT 6.1; ja; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
my $req = HTTP::Request->new(GET =>$url );
$req->header('Accept' => 'text/html');

# リクエストの送信
my $res = $ua->request($req);

# 出力のチェック
if ($res->is_success) {
if($res->content=~/span class=\"availRed\"/){
print "Wait";
}elsif($res->content=~/span class=\"availOrange\"/){
print "OK";
`start $url2`;
$ret=1;
exit();
}elsif($res->content=~/span class=\"availGreen\"/){

print "Only 3rd";
}else{
print "??";
}

}
# print $res->content;
return $ret;
}

main();
exit();