无法使用 Ruby Mechanize 登录亚马逊 [英] Cannot Login to Amazon with Ruby Mechanize
本文介绍了无法使用 Ruby Mechanize 登录亚马逊的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用 Ruby gem Mechanize 登录 Amazon.我总是被踢回登录页面,没有任何错误消息.我想知道这是 Mechanize 的错误还是亚马逊阻止了这种访问.我有下面的代码,你可以用 irb 来测试.
I am attempting to login to Amazon using the Ruby gem Mechanize. I always get kicked back to the sign in page without any sort of error message. I am wondering if this is a bug with Mechanize or if Amazon blocks this sort of access. I have code below that you can irb to test.
@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
The mechanize documentation has some cool examples. This cheat sheet is also handy for quick references.
这篇关于无法使用 Ruby Mechanize 登录亚马逊的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文