Ruby 为什么Mechanize登录总是失败?
我试图登录到一个班级网站,但每次我提交表单时,我都会看到登录页面 我使用了两种方式提交表格,结果都是一样的。在提交表格之前,我已经打印了表格,以检查并确保所有值都正确填写。有没有关于为什么这会失败的建议Ruby 为什么Mechanize登录总是失败?,ruby,mechanize,Ruby,Mechanize,我试图登录到一个班级网站,但每次我提交表单时,我都会看到登录页面 我使用了两种方式提交表格,结果都是一样的。在提交表格之前,我已经打印了表格,以检查并确保所有值都正确填写。有没有关于为什么这会失败的建议 #!/home/webadmin/.rvm/rubies/ruby-1.9.3-p0/bin/ruby require 'rubygems' require 'mechanize' require 'logger' passwd = gets.chomp a = Mechanize.new
#!/home/webadmin/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
require 'rubygems'
require 'mechanize'
require 'logger'
passwd = gets.chomp
a = Mechanize.new do |agent|
agent.user_agent_alias = 'Windows Mozilla'
agent.log = Logger.new(STDOUT)
end
page = a.get('https://it210.it.et.byu.edu/accounts/login/?next=/')
puts "\n=== Login Page ==="
pp page
form = page.forms.first
form['username'] = 'user'
form['password'] = passwd
#pp form
page = a.submit(form, form.buttons.first)
#page = form.submit
puts "\n\n\n=== Next Page (should be homepage) ==="
pp page
我遇到了一个类似的问题。这对我有用
$browser.get("something")
login_page = $browser.page.links.find { |l| l.text == 'Login' }.click
username_field = login_page.form.field_with(:name => "username")
username_field.value = $username
password_field = login_page.form.field_with(:name => "password")
password_field.value = $password
login_page.form.submit
而不是page=a.submit(表单,表单按钮。第一)
试试看
page=form。单击_按钮
它是2.1,我运行的是Ruby 1.9.3,正如您可能在脚本中看到的那样。lol.2.1的问题太多,无法使用IMHO。我会尝试1.0.0是的,我听说了,尝试了2.0.1.0.0,都有同样的问题。这很时髦。我不知道它为什么这么做。唯一要做的就是通过fiddler或charles代理,这样你就可以将你的请求与真正的浏览器请求进行比较。没关系,我放弃了Ruby,决定用perl来做(花了15分钟来做我想做的事情)。有这么多语言可供使用真是太好了。谢谢,但我将使用get()直接进入登录页面,因此我不需要额外的行来单击登录页面。表格填写正确,只是提交有问题。