ruby - 如何使用 Mechanize (ruby) 登录 vBulletin 3.6

标签 ruby login mechanize

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

<!-- login form -->
      <form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">

        <script type="text/javascript" src="clientscript/vbulletin_md5.js?v=3612"></script>
                    <table cellpadding="0" cellspacing="1" border="0">
                    <tr>
                        <td class="smallfont" align="left"><label for="navbar_username">User Name</label></td>
                        <td class="smallfont" align="left" colspan="2"><label for="navbar_password">Password</label></td>
                    </tr>
                    <tr>

                        <td><input type="text" class="button" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="User Name" onfocus="if (this.value == 'User Name') this.value = '';" /></td>        
                        <td><input type="password" class="button" name="vb_login_password" id="navbar_password" size="10" accesskey="p" tabindex="102" /></td>
                        <td class="smallfont" align="left" valign="middle"><input type="submit" class="button" value="Log in" tabindex="103" title="Enter your username and password in the boxes provided to login, or click the 'register' button to create a profile for yourself." accesskey="s" />
                            <label for="cb_cookieuser_navbar">
                            <input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Save?</label>
                            <input type="hidden" name="s" value="" />
<input type="hidden" name="securitytoken" value="1cbc0286417d97b4eb43ee0b0c2b54e7c615e5b8" />
                            <input type="hidden" name="do" value="login" />
                            <input type="hidden" name="vb_login_md5password" />

                            <input type="hidden" name="vb_login_md5password_utf" /></td>
                    </tr>
                    </table>
      </form>
      <!-- / login form -->

我下面的代码不起作用。在我看来,我必须提交一些隐藏的字段。有谁知道
  • 如何提交隐藏字段?
  • 如果我需要提交名称和值或仅提交其中之一?
  • 如何登录 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,而不是实际密码。因此,如果您捕获网络浏览器发送的内容,则可以使用该值。或者您必须使用 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) }
    

    关于ruby - 如何使用 Mechanize (ruby) 登录 vBulletin 3.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151171/

    相关文章:

    html tidy 和 rails 应用程序 - erb 或 rthml 文件。 ruby 替代品?

    ruby - 重构一些 Ruby 代码

    arrays - 从数组中删除项目后获取剩余数组的最有效方法是什么?

    drupal - 如何在Drupal 7中获得当前登录的用户角色?

    ruby-on-rails - 我无法执行 rake db :migrate - Unexpected ':'

    php - 登录页面无法使用有效凭据(PHP 和 MySQL)

    Spring认证执行两次,先成功后失败

    Ruby Mechanize 解析元标签

    ruby - 解析 'page 1 of x' - 最好的方法(ruby/mechanize/nokogiri)

    python - 使用 Python Mechanize 登录网站时遇到问题。