Llamada por Curl a la CMT

Iniciado por PC-Drivers, 13 Febrero 2012, 16:28 PM

0 Miembros y 1 Visitante están viendo este tema.

PC-Drivers

Llevo toda la mañana intentando realizar una conexión por curl a la página de la CMT
www.cmt.es/cmt_ptl_ext/SelectOption.do?nav=estado_num

pasandole los siguientes datos por post


 "Submit" => "Buscar",
 "categoria" => "",
 "detalles" => "",
 "download" => "",
 "idDetalle" => "",
 "nav" => "estado_num",
 "nombre" => "",
 "pagina" => "",
 "tbCaptcha" => "1wrq17",
 "tb_numeroMov" => "666666666",
 "tipo" => "buscar",
 "tipo" => "",
 "validar" => "si"


CitarOjo el último dato '"validar" => "si"' lo omito en el codigo, porque borra todo el contenido que quiero mostrar. La razón igual es alguna protección que tienen en la Web de la CMT

Pero no consigo que la página en java de la CMT muestre el contenido que necesito extraer, que es, el operador móvil del número que necesito, o al menos, el mensaje de error de que el Captcha es erróneo.

El código que he conseguido preparar es el siguiente:


<?
$url = "http://www.cmt.es/cmt_ptl_ext/SelectOption.do?nav=estado_num";
$postData = array("Submit" => "Buscar", "categoria" => "", "detalles" => "", "download" => "", "idDetalle" => "", "nav" => "estado_num", "nombre" => "", "pagina" => "", "tbCaptcha" => "CodigoCaptcha", "tb_numeroMov" => "666666666", "tipo" => "buscar", "tipo" => "");
$PostValues = array();  
foreach ($postData as $name=>$value) {  
  $PostValues[] = "{$name}=".urlencode($value);  
}  
$handler = curl_init();  
curl_setopt($handler, CURLOPT_URL, $url);  
curl_setopt($handler, CURLOPT_POST,true);  
curl_setopt($handler, CURLOPT_POSTFIELDS, $PostValues);  
$response = curl_exec ($handler);  
curl_close($handler);
// Mostramos el resultado
echo $response;
?>


Y el problema, es que no devuelve ni el error de que el Captcha es erróneo, o el resultado.

adastra

Has intentado hacerlo primero por linea de comandos?
para depurar el problema lo que yo haria seria, ejecutar curl desde linea de comandos y utilizar un proxy local como Burp o OWASP ZAP para interceptar y depurar las peticiones y las respuestas que se estan llevando a cabo.

Shell Root

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

PC-Drivers

Cita de: Shell Root en 13 Febrero 2012, 17:26 PM
Y que quieres mostrar, quieres usar el buscador?, haz visto que es una petición GET?
:http://www.cmt.es/cmt_ptl_ext/SelectOption.do?nav=busca_simple&cx=003300006372978302322%3Avasaua9s4ok&cof=FORID%3A11&ie=ISO-8859-1&q=hola&sa.x=9&sa.y=7

Dime hasta donde leíste y te contare que te has perdido. Si fuera eso lo que necesito no postearia ningún mensaje. De hecho ya lo tendría resuelto.
Prueba a leer todo el post, ya que lo que necesito es extraer una información que solo sale enviando información por _POST a la página en cuestión


Cita de: adastra en 13 Febrero 2012, 17:02 PM
Has intentado hacerlo primero por linea de comandos?
para depurar el problema lo que yo haria seria, ejecutar curl desde linea de comandos y utilizar un proxy local como Burp o OWASP ZAP para interceptar y depurar las peticiones y las respuestas que se estan llevando a cabo.

Lo he intentado y he probado enviando además la cookie generada desde la misma web, duplicando las cabeceras y el referer. Pero nada...

Shell Root

#4
Juaz tienes razón, :p
Haz visto que la petición se realiza es a :http://www.cmt.es/cmt_ptl_ext/SelectOption.do. Mirad...
Código (python) [Seleccionar]
POST http://www.cmt.es/cmt_ptl_ext/SelectOption.do

# ---

Host: www.cmt.es
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://www.cmt.es/cmt_ptl_ext/SelectOption.do?nav=estado_num
Cookie: JSESSIONID=7786c19abc3bcccbc031abd3d2ef; __utma=115866900.1561212689.1329150216.1329150216.1329150216.1; __utmb=115866900.3.10.1329150216; __utmc=115866900; __utmz=115866900.1329150216.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Content-Type: application/x-www-form-urlencoded
Content-Length: 145

# ---

tb_numeroMov=1234&tbCaptcha=&Submit=Buscar+&validar=si&tipo=buscar&nav=estado_num&pagina=&detalles=&nombre=&download=&idDetalle=&tipo=&categoria=

Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

PC-Drivers

#5
Cita de: Shell Root en 13 Febrero 2012, 17:47 PM
Juaz tienes razón, :p
Haz visto que la petición se realiza es a :http://www.cmt.es/cmt_ptl_ext/SelectOption.do. Mirad...
Código (python) [Seleccionar]
POST http://www.cmt.es/cmt_ptl_ext/SelectOption.do

# ---

Host: www.cmt.es
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0.1) Gecko/20100101 Firefox/10.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://www.cmt.es/cmt_ptl_ext/SelectOption.do?nav=estado_num
Cookie: JSESSIONID=7786c19abc3bcccbc031abd3d2ef; __utma=115866900.1561212689.1329150216.1329150216.1329150216.1; __utmb=115866900.3.10.1329150216; __utmc=115866900; __utmz=115866900.1329150216.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Content-Type: application/x-www-form-urlencoded
Content-Length: 145

# ---

tb_numeroMov=1234&tbCaptcha=&Submit=Buscar+&validar=si&tipo=buscar&nav=estado_num&pagina=&detalles=&nombre=&download=&idDetalle=&tipo=&categoria=



Lo se, realmente el único código que se necesita enviar por post es el captcha, de resto todo se puede enviar por _GET

La cuestión es que no muestra lo mismo si hacemos un envió del formulario interno o externo. ( cuando quiero decir externo es creando un form en HTML que envíe los datos por post a la misma página)
A cuando lo enviamos por Curl, Socket o cualquier otro medio a través de php