¿Alguien ha conseguido vencer al CAPTCHA de Amazon?

Think Big Seguir

1
Ni
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Desde
8 Dic 2012
Mensajes
3.564
Hola,

Me gustaría saber si alguien ha realizado algún proyecto con PHP (CURL) que tenga que ver con Amazon y que implique solucionar su CAPTCHA.


De ser así, me gustaría saber la forma en la que lo ha hecho, ya que estoy teniendo problemas para validar los CAPTCHAs.

Intuyo que es necesario poder procesar cookies (almacenarlas y cargarlas), pero no se si se me escapa algo que no estoy teniendo en cuenta.

Al fin y al cabo, es uno de los sitios con mejor seguridad anti-scraping de Internet.
 

OmarCoder

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
30 Sep 2014
Mensajes
187
Si mal no recuerdo el Captcha de Amazon es uno de los pocos que permite acceder a la imagen del captcha en sí sin necesidad de las cookies, es decir que puedes usar las cookies para generar la sesión y el link de la imagen y ya luego extraer el url de la imagen y procesarlo con servicios de terceros, yo hice algo así pero usando 2captcha, básicamente le enviaba la imagen y al cabo de unos segundos consultaba la solución. Pero no es del todo automático y dependes de ese servicio, pero con algún servicio de reconocimiento de imagenes debe ser posible, recuerda que no solo son las cookies si no también los headers como el User Agent
 

Think Big

1
Ni
Verificación en dos pasos activada
Verificado por Whatsapp
Suscripción a IA
Desde
8 Dic 2012
Mensajes
3.564
Si mal no recuerdo el Captcha de Amazon es uno de los pocos que permite acceder a la imagen del captcha en sí sin necesidad de las cookies, es decir que puedes usar las cookies para generar la sesión y el link de la imagen y ya luego extraer el url de la imagen y procesarlo con servicios de terceros, yo hice algo así pero usando 2captcha, básicamente le enviaba la imagen y al cabo de unos segundos consultaba la solución. Pero no es del todo automático y dependes de ese servicio, pero con algún servicio de reconocimiento de imagenes debe ser posible, recuerda que no solo son las cookies si no también los headers como el User Agent

Sí, el tema del procesamiento de la imagen del CAPTCHA lo tenemos controlado con el servicio que comentas.

El problema surge a la hora de introducir el valor del CAPTCHA. Lo introducimos pero nos vuelve a mostrar una pantalla de CAPTCHA, estando bien la solución al CAPTCHA. Pienso que es porque no estamos guardando ni cargando las cookies con CURL. Hay varias cookies, que en un navegador normal, se cargan a la hora de solucionar el CAPTCHA: session-id, session-id-time, session-token, x-amz-captcha-1 y x-amz-captcha-2

¿debemos guardar y cargar esas cookies, no? para que valide correctamente el CAPTCHA y después de introducirlo luego nos redirija a la URL que habíamos hecho la request en primera instancia
 

OmarCoder

Gamma
Verificación en dos pasos desactivada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Desde
30 Sep 2014
Mensajes
187
Sí, el tema del procesamiento de la imagen del CAPTCHA lo tenemos controlado con el servicio que comentas.

El problema surge a la hora de introducir el valor del CAPTCHA. Lo introducimos pero nos vuelve a mostrar una pantalla de CAPTCHA, estando bien la solución al CAPTCHA. Pienso que es porque no estamos guardando ni cargando las cookies con CURL. Hay varias cookies, que en un navegador normal, se cargan a la hora de solucionar el CAPTCHA: session-id, session-id-time, session-token, x-amz-captcha-1 y x-amz-captcha-2

¿debemos guardar y cargar esas cookies, no? para que valide correctamente el CAPTCHA y después de introducirlo luego nos redirija a la URL que habíamos hecho la request en primera instancia
En efecto necesitas manejar las cookies, yo personalmente recomendaría hacer una clase (O más sencillo, una función) para no repetir los llamados cURL una y otra vez, dentro de la función creas el curl handler y le asignas las cookies con cookiejar y cookiefile (Siempre las mismas, es decir el mismo fichero) y el User Agent, ya luego que todas las peticiones se procesen con esas cookies y headers, algo como la emulación de un navegador


PHP:
<?php
    function custom_curl($url,$postFields=false){
        $userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
        $cookieFile = __DIR__."/cookies.txt";
        $ch = curl_setopt($url);
        curl_setopt_array($ch, [CURLOPT_FOLLOWLOCATION=>1,
                                CURLOPT_RETURNTRANSFER=>1,
                                CURLOPT_COOKIEFILE=>$cookieFile,
                                CURLOPT_COOKIEJAR=>$cookieFile,
                                CURLOPT_USERAGENT=>$userAgent
                            ]);
        if($postFields){
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);
        }
        $r = curl_exec($ch);
        curl_close($ch); // Es importantisimo el curl_close puesto que es en este punto cuando se guardan las cookies temporales de cookiejar en el fichero cookiefile
    }

    $r = custom_curl('https://www.amazon.com/errors/validateCaptcha');

    // Procesamos $r para obtener la respuesta del captcha y todo lo relevante, los inputs "Hidden" del formulario que tiene por seguridad también deben ser almacenados

    $r = custom_curl("https://www.amazon.com/errors/validateCaptcha",["field-keywords"=>$solucion,"amzn"=>"jsg/eGYCXNaPn/0K1nhT2w=="]); // <- amzn es un inputhidden, por ejemplo

    // $r contiene Respuesta luego de realizado el captcha
Eso por encima, lógicamente tendrías que adaptarlo y corregir cualquier error que pudiese tener, pero de tanto tiempo que tengo trabajando con cURL asumo que debería trabajar o faltarle cosas pequeñas para hacerlo
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba