2011-07-21 23 views
7

Estoy intentando iniciar sesión en Amazon utilizando Ruby gem Mechanize. Siempre me devuelven a la página de inicio de sesión sin ningún tipo de mensaje de error. Me pregunto si esto es un error con Mechanize o si Amazon bloquea este tipo de acceso. Tengo un código debajo que puedes probar.No se puede iniciar sesión en Amazon con Ruby 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 = "[email protected]" 

radiobutton = form.radiobutton_with(:name => 'create', :value => '0') 
radiobutton.check 

button = form.button_with(:id => "signInSubmit") 

@page = form.submit button 

Gracias por cualquier ayuda.

Respuesta

8

Prueba de esto,

#!/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 = "[email protected]" 
    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 

El mechanize documentation tiene algunos ejemplos interesantes. Este cheat sheet también es útil para referencias rápidas.

+0

Estoy tratando de hacer algo similar pero no estoy teniendo mucho éxito. El código tal como se escribió anteriormente aún lo redireccionará a la página de inicio de sesión. ¿Algunas ideas? – fffanatics

+0

Me gustaría saber también –

+0

@fffanatics, @Zack He actualizado el código para imprimir la página en el archivo. Asegúrese de cambiar los valores de 'form.email' y' form.password' para que coincidan con las credenciales de usuario de Amazon. Todavía está trabajando para mí. –

Cuestiones relacionadas