无法使用Ruby的Mechanize登录

时间:2011-10-12 15:14:24

标签: ruby login http-post mechanize

尝试创建一个自动登录网页,该网页接受HTTP POST输入但未能这样做。

以下是网页: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

干杯

1 个答案:

答案 0 :(得分: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