2011-10-12 23 views
1

试图创建一个自动登录到采用HTTP POST输入但未能这样做的网页。使用Ruby的机械化登录时出现问题

这里的网页:https://job.jobnet.dk/CV/Login/Login.aspx

我创建了一个用户stacktest与密码abcdefghijklmn1,如果你想尝试一下它。

这里是不工作的代码:

require 'rubygems' 
require 'mechanize' 

agent = Mechanize.new 
page = agent.get 'https://job.jobnet.dk/CV/Login/Login.aspx' 

login_form = page.form_with(:action => 'Login.aspx') 

login_form['ctl00$ctl00$JobnetBaseMiddelContent$LoginContentPlaceHolder$txtUsername'] = 'stacktest' 
login_form['ctl00$ctl00$JobnetBaseMiddelContent$LoginContentPlaceHolder$txtPassword'] = 'abcdefghijklmn1' 

page = agent.submit login_form 

p page # should be a new page but isn't a new page 

不用说这是行不通的:)

还有其中有

值称为 __VIEWSTATE一个隐藏的输入字段
/wEPDwUJOTczNzQwMzk1D2QWAmYPZBYCZg9kFgoCAQ8WAh4EVGV4dAVlPGEgY2xhc3M9Im1lbnUgbG9nb3V0bGluayIgaHJlZj0iL0NWL0xvZ2luL0xvZ2luLmFzcHgiIHRpdGxlPSJMb2cgaW5kIiBpZD0idG9wTGlua3NMb2dpbiI+TG9nIGluZDwvYT5kAgIPFgIfAGVkAgMPZBYEAgEPZBYCAgEPFgIfAAUSbG9nIGluZCBww6Ugam9ibmV0ZAIFD2QWAgIBD2QWCgIPDxYEHgVjbGFzcwVFbG9naW5mdWxsbGluZV9sZWZ0YWxpZ25fbGVmdHBhZCBsb2dpbnNwYWNlYWZ0ZXIgZXJyb3JDb250YWluZXJFbGVtZW50HgdWaXNpYmxlaGQCFQ9kFgICAQ8PFgIeC05hdmlnYXRlVXJsBQ4vQ1YvbG9naW4uYXNoeGRkAhcPFgIeBGhyZWYFIC9DVi9Mb2dpbi9Gb3Jnb3R0ZW5QYXNzd29yZC5hc3B4ZAIZD2QWBAIDD2QWAgIBDxYCHwQFHy9DVi9Mb2dpbi9OZXdVc2VySm9iU2Vla2VyLmFzcHhkAgUPZBYCAgEPDxYCHwMFDi9DVi9sb2dpbi5hc2h4ZGQCGw9kFgQCAQ9kFgICAQ8WAh8EBR8vQ1YvTG9naW4vTmV3VXNlckpvYlNlZWtlci5hc3B4ZAIDD2QWAgIBDw8WAh8DBQ4vQ1YvbG9naW4uYXNoeGRkAgQPFgIfAAX7Ajx1bD48bGk+PGEgaHJlZj0iaHR0cHM6Ly9pbmZvLmpvYm5ldC5kay92aWEyMDUuaHRtbCI+b20gam9ibmV0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vaW5mby5qb2JuZXQuZGsvdmlhMTE1Lmh0bWwiPmdvZGUgcsOlZCB0aWwgam9ic8O4Z25pbmc8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9pbmZvLmpvYm5ldC5kay92aWEyLmh0bWwiPmJsYW5rZXR0ZXI8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cHM6Ly9pbmZvLmpvYm5ldC5kay92aWEyMDYuaHRtbCI+cG9saXRpayBvbSBwZXJzb25kYXRhPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHBzOi8vaW5mby5qb2JuZXQuZGsvdmlhMjA3Lmh0bWwiPmpvYm5ldCBpbiBlbmdsaXNoPC9hPjwvbGk+PC91bD5kAgUPFgIfAmdkZGZTKNqgl0MJ9Ss0FPqJ0tr8E74T 

Cheers

回答

4

试试这个:

require 'rubygems' 
require 'mechanize' 
require 'pp' 

user = 'stacktest' 
password = 'abcdefghijklmn1' 

agent = Mechanize.new 
page = agent.get 'https://job.jobnet.dk/CV/Login/Login.aspx' 


form = page.form_with(:action => 'Login.aspx') 
form.field_with(:name => "ctl00$ctl00$JobnetBaseMiddelContent$LoginContentPlaceHolder$txtUsername").value = user 
form.field_with(:name => "ctl00$ctl00$JobnetBaseMiddelContent$LoginContentPlaceHolder$txtPassword").value = password 
page = form.click_button 

pp page