POST乱射ツール

 香具山から帰ってきたら母親から電話。休みのときに言ってたのだが、歯医者のテーマソングを一般から募集していたため、母親の所属する歌唱サークルが歌を提供したらしい。で、Webアンケートで一般からの投票を元に決めるらしく、「アンケート投票に協力して」と頼まれる。
 
 なにやら連続投稿防止機能がついているらしく、同一PCから投稿できないらしい。母親としては知り合いに出来る限りアンケートに回答してもらって票を増やしていくしかないと思ったらしい。
 そこまでして頼むからには、つまるところ何をやっても良いと。
 
 とりあえず、そのページに行ってみる。で、投稿。一票入る。
 母親の話によると、別のパソコンからは投票できたらしい。Let's Noteを起動して実験してみると、確かに投稿出来た。クッキーでも見てるのか?と思ったのだがそうでもない。
 
 とりあえずKDX、WASに声をかけて実験に協力してもらう。
 
 結局実験の結果、単純に同一IPアドレスの投稿を弾いているだけだった。とりあえず、実験用に同一のアンケートCGIを落としてきて、自分のホームページスペースに設置して、向こうのアンケートCGIと同じ設定にあわせる。
 
 今回作るツールの方針はこうである。

  1. プロキシを大量に用意して、プロキシリストを作成する
  2. プロキシリストからランダムで1つ選ぶ
  3. プロキシ経由でアンケートCGIのアドレスにPOSTでアクセス、回答番号を流し込む
  4. プロキシサーバーが死んでいたら、リストから削除する
  5. 2に戻る

 
 まあそんなに難しいプログラムでもないので、比較的あっさりと連射ツール完成。実験してみると、3回に2回ぐらい失敗するものの、1回は成功。
 
 アクセスログを見ながら、原因調査してみると、原因より先に致命的なミスを発見。
 


[Agent] Java/1.5.0_05

 
 これが、延々と続く。これじゃ不正してるのがバレバレじゃん!
 早急にAgentのリストを作成して、その中からランダムで1つ選出するプログラムを書き足す。しかし、Lunascapeから引っ張り出してきたAgentのリストなので、「Hatena Antenna/0.3 」とか怪しいのが混ざっている。
 見た目で怪しいAgentは削除して、代わりにMozilla系のAgentを沢山増やしておく。
 
 で、どうやら失敗するのは、プロキシがタイムアウトしたときにプロキシを使わずにコネクションを張るらしく、そのため生IPで投稿してしまう模様。とりあえずプロキシリストを一新したら、成功するようになりました。
 
 時間を計測してやってみると、2分間で30回の投票に成功。
 ただ、このままだと明らかに不正な投票だとばれてしまうので、ランダム時間スリープさせて、投稿するようにした。
 
 最後にもう一捻りいれて、8時から23時なら2時間以内に、それ以外なら3時間以内に投稿するように書き換える。
 
 これで完成。あとは、常時起動のPCに入れて放置しておくだけである。
 ただ、これをやると延々と票が入り続けるので、殆ど身内だけのアンケートの中で独走してしまうのは目に見えている。
 
 作ったはいいが、このツールいつ使えばよいのだろうか……。