[Resuelto] Como enviar datos POST de PHP a ASP y leer cabeceras

Iniciado por kerkox, 20 Julio 2015, 08:25 AM

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

kerkox

Hola a todos, he recurrido a la comunidad porque he googleado pero no he entendido muy bien y tampoco encontrar algo especifico que me sirva, bueno lo que sucede es lo siguiente

hay una web donde pide un formulario pero no deseo usar esa interfaz sino hacer de forma automatica con otra web o un script puesto que necesito saber si hubo algun error entonces leer las cabeceras de respuesta, ya que comprobe con tamper data cuales son los datos que puedo verificar si hay algun error.

Bueno lo que deseo saber es como hago para enviar los datos POST
son estos:
loginUsername=admin&loginPassword=USUARIO

y la URL es: http://xxxxxxx/login.asp
aunque en el formulario que aparece en codigo usa la siguiente ruta
http://xxxxxxx/goform/login
entonces esto me pone en duda a cual se le hace la peticion pues de forma obvia veo que en la segunda ruta, Pero al momento de enviar los datos POST desde el PHP como lo debo de hacer??
y como leer las cabeceras de respuesta

Muchas gracias de antemano cualquier ayuda es bienvenida o si sabes donde puedo encontrar esta informacion tambien se los agradezco mucho.

engel lex

CitarloginUsername=admin&loginPassword=USUARIO
eso parece un GET

intenta usar cURL con php para poder capturar las header y cookies bien

http://php.net/manual/es/book.curl.php

Citary la URL es: http://xxxxxxx/login.asp
aunque en el formulario que aparece en codigo usa la siguiente ruta
http://xxxxxxx/goform/login
entonces esto me pone en duda a cual se le hace la peticion pues de forma obvia veo que en la segunda ruta, Pero al momento de enviar los datos POST desde el PHP como lo debo de hacer??

es la ruta que esté dentro del form, con cURL verás ya como pasar el post

si tienes una duda diferente avisa
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

kerkox

Muchas Gracias, lo que sucede ahora es que he tratado de capturar la web con cURL, pero pues lo intente con la URL de base osea (http://xxxxxxxx/login.asp), pero con la url del envio del formulario no me devuelve nada (http://xxxxxxxx/goform/login);
este es el codigo que uso para eso:

Código (php) [Seleccionar]
<?php

$ch 
curl_init("http://xxxxxxxxxxxxxxxx/login.asp");

curl_setopt($chCURLINFO_HEADER_OUTtrue);

curl_exec($ch);


if(!
curl_errno($ch))
{
 
$info curl_getinfo($ch);

 echo 
'Se tardó ' $info['total_time'] . ' segundos en enviar la petición a ' $info['url'];
 echo 
'Ahora el codigo http: '.$infor['http_code'];
 echo 
'Ahora la respuesta con el  header: '$info['request_header'];
}else{

echo '<br/>Ocurrio algun error';
}

curl_close($ch);

?>


Y pues me devuelve el formulario, pero no me devuelve los valores de envio a traves de POST,
Esta pensando tambien en la idea que despues de obtener este formulario cambiar los valores con javascript y enviarlo, pero al hacerlo me redirije a la ruta que no existe en mi servidor osea (/goform/login), entonces te agradezco mucho por la ayuda

sigo intenando a ver que puedo hacer. Gracias

MinusFour

#3
Cita de: engel lex en 20 Julio 2015, 08:30 AM
eso parece un GET

Realmente podría ser GET o POST. La única diferencia es que por GET el contenido va en la URL, por POST va en el body del request.

Cita de: engel lex en 20 Julio 2015, 08:30 AM
intenta usar cURL con php para poder capturar las header y cookies bien

http://php.net/manual/es/book.curl.php

es la ruta que esté dentro del form, con cURL verás ya como pasar el post

si tienes una duda diferente avisa


cURL no se usa para capturar peticiones. Si tu quieres ver lo que se enviá en una petición normal de la página necesitas usar las herramientas del navegador para inspeccionar el request, sniffear el tráfico de red o estudiar el markup del formulario.

Un ejemplo en Firefox, presionas Ctrl+Shift+I, salen las herramientas de Desarrollador en la parte inferior del navegador, presionas la pestaña de red (o network), rellenas el formulario y al darle aceptar deberías ver la petición. Lo que tu necesitas hacer es replicar esa petición (con cURL) para hacer el logueo en su sistema y estudiar la respuesta para completar el logueo.

kerkox

Pues lo he hecho y el resultado son los datos que envia pero me tiene con la duda que en la URL de referencia usa (http://xxxxxxxxx/login.asp) y para el envio o solicitud (http://xxxxxxxxx/goform/login), aqui coloco una imagen de los datos obtenidos, si alguien me puede ayudar y me guie para escribir el Codigo que hace la peticion le agradeciar mucho

Aqui la imagen:


Gracias por la colaboracion.

MinusFour

#5
Es raro, deberías haber obtenido una cookie si te has logueado correctamente.  Tampoco se ve el contenido del request...

Edit: Va, encontre donde esta el body del request. Está en la pestaña que dice parametros. Ahi puedes observar lo que se debe de enviar.

kerkox

Claro que ya habis visto los parametros que envia pero el caso es que nose como hacer el codigo para enviar los datos, soy un newbie en la programacion PHP, pero he esta aprendiendo bastante, ya he aprendido algo sobre las peticiones HTTP, se que las peticiones GET son mucho mas faciles de manipular ya que viajan en la URL, pero en el metodo POST de esta web nose si tenga que ver el puerto ya que me conecto al 8080, y pues he intentado usar la opt de PHP:

curl_setopt($ch, CURLOPT_PORT, 8080);

pero igual no me funciona nada, igual he cambiado las direcciones del directorio a ver con cual funciona pero ninguna de ellas funciona (/goform/login) ni (/login.asp)

Me gusta esto que tiene cierta dificultad porque cuando uno se fuerza y se siente algo cabreado, y lucha por solucionarlo, se siente una satisfaccion increible ademas de ¡Aprender, no recordar!,

Bueno igual seguire intentando, por ahora comparto el codigo de como lo llevo

Código (php) [Seleccionar]
<?php
//$ch = curl_init("http://xxxxxxxxxxx:8080/goform/login");
$ch curl_init("http://xxxxxxxxxxx:8080/login.asp");


curl_setopt($chCURLINFO_HEADER_OUTtrue);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_PORT8080);

$remote_server_outpu =  curl_exec($ch);

if(!
curl_errno($ch))
{
 
$info curl_getinfo($ch);

 echo 
'Se tardo ' $info['total_time'] . ' segundos en enviar la petición a ' $info['url'];
 echo 
'<br/>Ahora el codigo http: '.$info['http_code'];
 echo 
'<br/>Ahora la respuesta con el  header: '$info['request_header'];
 echo
'<br/><br/>Ahora la respuesta: <br/>'.$remote_server_outpu;
}else{

echo '<br/>Ocurrio algun error';
}

curl_close($ch);

?>


engel lex

has un simple var_dump($info) para ver todo lo que retorna
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

kerkox

Acabo de realizar unos cambios al codigo y obtengo una respuesta pero no veo que envie los datos

Código (php) [Seleccionar]
<?php
$ch 
curl_init("http://xxxxxxxxxxxxx:8080/goform/login");
//$ch = curl_init("http://xxxxxxxxxxxx:8080/login.asp");


curl_setopt($chCURLINFO_HEADER_OUTtrue);
curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
curl_setopt($chCURLOPT_PORT8080);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS"loginUsername=admin&loginPassword=USUARIO");

$remote_server_outpu =  curl_exec($ch);

if(!
curl_errno($ch))
{
 
$info curl_getinfo($ch);
 
var_dump($info);
 
}else{

echo '<br/>Ocurrio algun error';
}

curl_close($ch);


?>


Cuando analizo con el navegador la transmicion en la red solo me sale la respuesta del servidor pero no veo si envio los datos que le di???

Bueno en fin ya funciona porque con el codigo de respuesta puedo analizar si hubo algun error en el logueo

MUCHAS GRACIAS.

engel lex

#9
el navegador no está enviando esos datos, esos datos se están enviando desde tu servidor a su servidor directamente

como usas CURL_PORT quita el puerto del link a ver
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.