ruby-on-rails - 为不使用 Mechanize/Ruby 表单的站点输入登录信息

标签 ruby-on-rails ruby login mechanize

我需要登录到一个站点来运行一些脚本。 Mechanize with Nokogiri 看起来非常适合这项任务,但我很难输入登录信息,因为输入字段不在表单中(agent.page.forms.first 产生 nil):

    <div class="loginform" id="login_form">
      <div>
        <input type="text" id="loginname" tabindex="1"/>
      </div>
      <div>
        <input type="password" id="password" tabindex="2"/>
        <input type="text" id="password_text" style="display:none;"/>
      </div>
      <div class="signin"><a href="javascript:void(0);" class="sp" id="login_submit_btn"></a>
      </div>
    </div>

是否有可能以某种方式导航到输入元素(它们是页面上唯一的元素),然后提交我的用户名和密码以登录?如果 Mechanize 不能做这样的事情,还有其他选择吗?非常感谢。

最佳答案

我认为您最好在整个源代码(包括 javascript)中检查网站如何连接您。
在我看来,它应该是一个 HTTP POST 请求......并使用它直接登录而不通过 GET 请求解析主页,而是使用 Mechanize post method 反而 :

agent = Mechanize.new
url = 'http://website.com/hidden_login_page.php'
page = agent.post(url, {"login" => "foo", "password" => "bar"})

希望它也有帮助。

关于ruby-on-rails - 为不使用 Mechanize/Ruby 表单的站点输入登录信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7789210/

相关文章:

ruby-on-rails - Ruby on Rails - 组中的用户

ruby - 遍历ruby中的多维哈希

asp.net - 在ASP.NET登录控件中使用电子邮件作为用户名

shell - bash 命令名称以 '-'(减号)开头

ruby-on-rails - 测试标题不适用于 rspec/capybara

ruby-on-rails - 没有要加载的文件 - Rack

javascript - 从 Coffeescript 更新用户属性?

ruby - 使用 Docker 镜像运行 bundle 安装会忽略 bundle 配置设置

ajax - 如何优雅地处理 Ajax 调用的登录过期?

ruby-on-rails - Rails - Postgres - 在类型转换之前提取属性