无法使用Ruby Mechanize登录Amazon

我正在尝试使用Ruby gem Mechanize登录Amazon。 我总是被踢回登录页面而没有任何错误消息。 我想知道这是否是Mechanize的错误,或者亚马逊是否阻止了这种访问。 我有下面的代码,你可以测试。

@mechanizer = Mechanize.new @mechanizer.user_agent_alias = 'Mac Safari' @page = @mechanizer.get("https://www.amazon.com/ap/signin?_encoding=UTF8&openid.assoc_handle=usflex&openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fyourstore%3Fie%3DUTF8%26ref_%3Dpd_irl_gw&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.pape.max_auth_age=0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select") form = @page.form_with(:id => "ap_signin_form") field = form.field_with(:name => "email") field.value = "fake@email.com" radiobutton = form.radiobutton_with(:name => 'create', :value => '0') radiobutton.check button = form.button_with(:id => "signInSubmit") @page = form.submit button 

谢谢你的帮助。

试试这个,

 #!/usr/bin/env ruby require "rubygems" require "mechanize" class AmazonCrawler def initialize @agent = Mechanize.new do |agent| agent.user_agent_alias = 'Mac Safari' agent.follow_meta_refresh = true agent.redirect_ok = true end end def login login_url = "https://www.amazon.com/ap/signin?_encoding=UTF8&openid.assoc_handle=usflex&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.com%2Fgp%2Fyourstore%2Fhome%3Fie%3DUTF8%26ref_%3Dgno_signin" @agent.get(login_url) form = @agent.page.forms.first form.email = "user@example.com" form['ap_signin_existing_radio'] = "1" form.password = "password" dashboard = @agent.submit(form) File.open('dashboard.html', 'w') {|file| file << dashboard.body } end end AmazonCrawler.new.login 

机械化文档有一些很酷的例子。 这个备忘单也方便快速参考。