Spymasterで経験値稼ぎスクリプト
2009-06-05 23:50追記:Spymaster側に変更が入って下のスクリプトは動作しなくなりました。POST時に必要なパラメータが増えた様子。
Twitterアカウントを使って遊ぶゲーム、Spymasterに招待されたので始めてみた。トラビアンに続く時間泥棒ゲームの予感がしたため、経験値稼ぎにタスクをこなすだけのスクリプトをRubyで書いた。
多重ログインを許しているみたいなので、Firefoxブラウザで認証して取得したcookieをそのまま使えばMechanizeでも認証クリアできる。
require 'rubygems' require 'time' require 'mechanize' require 'nokogiri' require 'hpricot' require 'yaml' require 'json' def log(msg) puts Time.new.to_s + ' ' + msg end log "start()" begin uri = URI.parse('http://playspymaster.com/tasks') agent = WWW::Mechanize.new agent.user_agent_alias = 'Mac Safari' ###################################### # login to spymaster ###################################### auth_cookie = '_spymaster_session=$ブラウザが送信してるのと同じcookie$' WWW::Mechanize::Cookie.parse(uri, auth_cookie, nil){|c| agent.cookie_jar.add(uri, c) } task_page = agent.get(uri) doc_html = Nokogiri::HTML(task_page.body) # energyの取得 energy = 0 doc_html.css('#mini-dashboard-energy span.value').each do |val| energy = val.content end ###################################### # execute task ###################################### AUTH_TOKEN = "$spymasterのページのHTML中に記述されてるのをそのまま$" TASK = "assassinate_ambassador" TIME = "80" # 適当 if energy.to_i > 30 agent.post('http://playspymaster.com/tasks/perform',{"task" => TASK, "authenticity_token" => AUTH_TOKEN, "time" => TIME}) else # Energyが30以下の時は何もしない log "not enough energy:" + energy.to_s end rescue Exception => exp log "Abnormaly ended" log exp.to_s ensure #NOP end log "end()"
ログのファイル出力は余計だったので消しました。
タスク実行時に送信するパラメータは次の3つ
- task : タスク
- authenticity_token : 認証トークン
time : リロードからの経過時間(?)- ticks : ??
- ch : ??
timeは適当に、認証トークンはHTML中に記述されていて、毎回変化が無いので固定値かもしれない。今夜から5分毎に実行させておくので、仕事中にこっそりレベル上げをする必要は無さそうだ。