如何使用mechanize(ruby)登录vBulletin 3.6

html如下所示,或者你可以在http://www.vbulletin.org/forum/index.php找到它

 

我的代码不起作用。 在我看来,我必须提交一些隐藏的字段。 有人知道吗

  • 如何提交隐藏字段?
  • 如果我需要提交名称和价值或只提交其中一个?
  • 如何登录vBulleting v3.6

一些文本作为代码显示在文本下方

 require 'rubygems' require 'mechanize' agent = WWW::Mechanize.new page = agent.get("http://www.vbulletin.org/forum/index.php") login_form = page.form_with(:action => 'login.php?do=login') login_form['vb_login_username'] = 'username' login_form['vb_login_password]'] = 'password' page = agent.submit login_form #Display welcome message if logged in puts page.parser.xpath("/html/body/div/table/tr/td[2]/div/div").xpath('text()').to_s.strip output = File.open("login.html", "w") {|f| f.write(page.parser.to_html) } 

vBulletin需要密码的md5而不是实际的密码。 因此,如果您捕获webbrowser发送的内容,您可以使用该值。 或者你必须使用md5库(未经测试)从任何密码创建md5哈希。

 require 'rubygems' require 'mechanize' agent = WWW::Mechanize.new page = agent.get("http://www.vbulletin.org/forum/index.php") login_form = page.form_with(:action => 'login.php?do=login') login_form['vb_login_username'] = 'user name' login_form['vb_login_password'] = '' login_form['vb_login_md5password_utf'] = 'md5 hash from the password' login_form['vb_login_md5password'] = 'md5 hash from the password' page = agent.submit login_form #Display welcome message if logged in puts page.parser.xpath("/html/body/div/table/tr/td[2]/div/div").xpath('text()').to_s.strip output = File.open("login.html", "w") {|f| f.write(page.parser.to_html) }