2014-10-17 33 views
0

我正在尝试将automaticaly连接到使用机械化的网站。为什么使用网站上的Mechanize登录重定向到主页?

我看过搜索到的互联网,但找不到任何解决方案给我的问题,这就是为什么在运行form.submit后,我回到了主页?

当我尝试连接时是否可以获取日志?

我的代码:

mechanize = Mechanize.new do |agent| 
    agent.user_agent_alias = "Linux Mozilla" 
end 

page = mechanize.get("http://website.org/") 
form = mechanize.page.forms.first 
    puts form.content 
form.username = "mylogin" 
form.password = "mypassword" 
form.submit 

该网站的代码片段:

<div id="signincontainer"> 
    <form method="POST" action="http://website.org/" name="FL" id="signin"> 
     <input name="op" value="login" type="hidden"> 
     <input name="redirect" value="" type="hidden"> 
     <span class="signinq"> 
     <input style="background: url('images/username.png') no-repeat scroll 5px 50% rgb(255, 255, 255);" id="username" name="login" title="username" tabindex="4" type="text"> 
     <a class="donthaveaccount" href="http://website.org/signup.html"><span> 
     Sign Up 
     </span></a> </span> <span class="signinq"> 
     <input style="background: url('images/password.png') no-repeat scroll 5px 50% rgb(255, 255, 255);" id="password" name="password" value="" title="password" tabindex="5" type="password"> 
     <a class="forgotpassword" href="http://website.org/forgot-pass.html" id="resend_password_link"><span> 
     Forgot your password? 
     </span></a> </span> 
     <input id="signin_submit" value="Enviar" tabindex="6" src="images2/signin.png" type="image"> 
    </form> 
    </div> 

我运行的Ruby 1.9.3-P484和机械化2.0.1。

+0

有可能是任何数量的为什么你会被重定向的原因。你正试图设置一个'user_agent_alias',但是如果你想[模仿Mozilla]那个签名不太现实(https://developer.mozilla.org/en-US/docs/Web/HTTP/ Gecko_user_agent_string_reference)。 – 2014-10-17 15:51:52

+0

我尝试没有user_agent_alias,我得到相同的错误。我无法连接 – user2912390 2014-10-17 16:28:45

+0

如果您使用的是Mozilla为Windows或Linux浏览器发送的内容的完全副本,会发生什么情况?不能保证问题存在,但是如果字符串匹配不够好,某些站点会拒绝连接。他们不应该但他们这样做。 – 2014-10-17 17:47:22

回答

0

锡人我发现Mozilla的完整ID,但我得到同样的问题,当我没有在密码中写任何东西,我得到了错误的密码或登录,但是当我写我的密码,我什么也得不到?

我改进了我的代码。

agent = Mechanize.new {| a | a.log = Logger.new( “Mechanize.log”)} agent.read_timeout = 60

def add_cookie(agent, uri, cookie) 
    uri = URI.parse(uri) 
    Mechanize::Cookie.parse(uri, cookie) do |cookie| 
    agent.cookie_jar.add(uri, cookie) 
    end 
end 

agent.user_agent_alias = 'Linux Mozilla' 
     { 
      'Linux Mozilla' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624', 
      'Linux Firefox' => 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.1) Gecko/20100122 firefox/3.6.1' 
     } 

    agent.get("http://youwatch.org/?op=my_files") 
      form = agent.page.parser.css('form')[0] 
      agent.page.forms[0]["login"] = "zyriuse" 
      agent.page.forms[0]["password"] = "[email protected]" 
     f = agent.page.forms[0].submit 
    puts f.content 
+0

上面的代码工作.i不知道为什么我每次运行这个脚本时得到一个错误的cookie – user2912390 2014-10-22 15:30:51

相关问题