I'm trying to recover a neopet creation for my son and thought this might be an opportunity for me to expand my ruby knowledge.
My daughter remembers that the name of the neopet is dannyphantomXXX where XXX is 3 digits. She also remembers the animal type. So if I can parse through this list from 1 to 999 and check the animal type I should be able to find the neopet or at least narrow the field. Once we find the neopet, we have the password to access it.
I'm writing a program that will post the neopet name to the login page (http://www.neopet.com/loginpage.phtml). If the neopet name is valid it will show an active neopet name and ask for the password. The
login page has a form on it:
<form action='/hi.phtml' method='post'><table align=center width=300
cellpadding=4 cellspacing=0><input type='hidden' name='destination'
value='/petcentral.phtml'><tr><td bgcolor='#ffeeaa'><b>Username</b></td><td
bgcolor='#ffffcc'><input type='text' name='username' value='' size=12
maxlength=20 onFocus='this.select()'></td></tr><tr><td align=center
colspan=2 bgcolor='#ffeecc'><input type='submit' value='Log In to
Neopets!'></td></tr></table></form>
If I can post the username (dannyphantom999) to the form and get the results of the page I'll be able to find all the specific animals and narrow the search.
Here's my code:
#! /usr/local/bin/ruby -w
require 'net/http'
neopetpre = "dannyphantom"
h = Net::HTTP.new('www.neopets.com', 80)
resp, data = h.get('/loginpage.phtml', nil )
puts "Code = #{resp.code}"
puts "Message = #{resp.message}"
resp.each {|key, val| printf "%-14s = %-40.40s\n", key,val }
puts data
params = "username=dannyphantom999"
resp, data = h.post2('/loginpage.phtml', params )
puts "Code = #{resp.code}"
puts "Message = #{resp.message}"
resp.each {|key, val| printf "%-14s = %-40.40s\n", key,val }
puts data
The post updates the username but it doesn't seem to execute the page.
It doesn't return the results I'm expecting based on manually entering the
name and clicking on Log In to Neopets!
Is there some way to get the page to act like I've clicked on the button?
I'm running Ruby 1.8.2 on Windows XP sp2.
Thanks.