Nueva pregunta

Pregunta:

Fecha: 30-03-2017 06:02:55 (En Español)

cURL con PHP[Resuelta]

Buen día a todos...! alguien sabe si existe la forma de bypassear un formulario que tiene token usando cURL para enviar datos..?

Estoy intentando obtener los datos de una persona con su DNI en esta página Rutificador

Cuando envío los datos me dice que es necesario enviar un token de seguridad. Alguien a logrado hacer esto o parecido para obtener datos de una persona con su DNI usando PHP?
Etiquetas: cURL - PHP - Pregunta - Web Votos: 1 - Respuestas: 5 - Vistas: 52 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 30-03-2017 06:26:55 Hola Erwin, hice una prueba en la web que comentas con el nro 30523842 (un número cualquiera, con el cual obviamente no encontro nada...) pero gracias a esto pude copiar la petición en formato cURL que te permite extraer el Firebug (complemento de Firefox).

    Aquí la petición:
    curl "http://peru.rutificador.com/get_generic_ajax/" -H "Host: peru.rutificador.com" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0" -H "Accept: */*" -H "Accept-Language: es-AR,es;q=0.8,en-US;q=0.5,en;q=0.3" --compressed -H "Referer: http://peru.rutificador.com/" -H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" -H "X-Requested-With: XMLHttpRequest" -H "Cookie: csrftoken=kqjDcmgHiCCRXAdecSYzzhiMqh5KHDfZ; _ga=GA1.2.370882797.1490887015" -H "DNT: 1" -H "Connection: keep-alive" --data "csrfmiddlewaretoken=kqjDcmgHiCCRXAdecSYzzhiMqh5KHDfZ&entrada=30523842"


    Si la analizas verás que tienes varios token's, por un lado a nivel cookie csrftoken, y a nivel dato csrfmiddlewaretoken.

    Lamento no poder ayudarte más ahora porque estoy atendiendo unos temas en mi empresa, más tarde veré de pasar y seguir aportando, espero que mi respuesta te se de ayuda.

    Saludos y buen código!

    PD: ah, me olvidaba, esto es 100% posible a con cURL ;-)
      Votos: 2 - Link respuesta
     
  • Fecha: 04-04-2017 06:07:03 Hola, necesitas obtener el token obligatorio, como dice Fernando Mosquera la petición la puedes hacer asi, y algunos permiten la peticion en la url como parametro, es decir:

    http://peru.rutificador.com/get_generic_ajax/


    a hacerla como:

    http://peru.rutificador.com/get_generic_ajax/?token=abcd1234


    Los tokens los puedes obtener de una petición "GET" cualquiera, pueden venir en los headers y ya solo los pasas y los cambias.

    Esos token son para que no hagan peticiones robot, si no que tengan que seguir un procedimiento y sean rastreables.
      Votos: 1 - Link respuesta
     
  • Fecha: 04-04-2017 14:42:05 Hola a todos, me hice un tiempo para hacer unas pruebas, Erwin aquí tienes la respuesta, un código 100% ejecutable que se conecta a la web, obtiene el TOKEN y hace la petición POST correspondiente para obtener el resultado JSON con la información requerida:

    //dato a buscar (DNI)
    $entrada = '30523842'; 
    
    $urlDatos = 'http://peru.rutificador.com/';
    $webString = file_get_contents($urlDatos);
    //aquí se busca el dato $csrfmiddlewaretoken en un input de html: <input type='hidden' name='csrfmiddlewaretoken' value='IOV6qRNIzsFRhqxAxGC8emzjKz1Wq4nX' /> y es cargado en la variable $csrfmiddlewaretoken
    $pattern = '/<input(.*?)name=\'csrfmiddlewaretoken\'(.*)value=\'(.*?)\'/i';
    preg_match_all($pattern, $webString, $matches);
    $csrfmiddlewaretoken = $matches[3][0];
    
    $csrftoken = $csrfmiddlewaretoken; // es el mismo token
    
    $urlPost = "http://peru.rutificador.com/get_generic_ajax/";
    $agents = 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0';
    $referer = $urlDatos;
    
    $fields = array(
        'csrfmiddlewaretoken' => $csrfmiddlewaretoken,
        'entrada' => $entrada
    );
    $fields_string = http_build_query($fields);
    
    //abro la conexión
    $ch = curl_init();
    //seteo las opciones
    curl_setopt($ch, CURLOPT_URL, $urlPost);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_USERAGENT, $agents);
    curl_setopt($ch, CURLOPT_COOKIE, 'csrftoken=' . $csrftoken);
    curl_setopt($ch, CURLOPT_POST, count($fields));
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    
    //ejecuto el post
    $result = curl_exec($ch);
    
    //cierro la conexión
    curl_close($ch);
    echo $result;
    


    Nota: Deberas remplazar la variable $entrada con un DNI valido y obtendrás la respuesta JSON correspondiente.

    El código que presento es para ejemplificar el funcionamiento de cURL en PHP y como hacer un web scraping simple, no con otro fin, y antes de ejecutarlo deberán tener el permiso / autorización de peru.rutificador.com. Habiendo dicho esto, espero que mi respuesta les sea de ayuda.

    Saludos y buen código!
      Votos: 2 - Link respuesta
     
  • Fecha: 07-04-2017 03:06:20 Hola Erwin, te sirvieron las respuestas? quedamos al aguardo de tus comentarios...., no olvides marcar la pregunta como resuelta si fuera el caso.

    Saludos y buen código!
      Votos: 1 - Link respuesta
     
  • Fecha: 10-04-2017 12:17:42 Hola @Fernando muchas gracias por el código funciona perfectamente.
    Espero a alguien más le sirva y cuando pueda mejorarlo lo compartiré para toda la comunidad. Saludos
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com