Protocolo HTTP

xCoNDoR

Hola MV, necesito vuestro conocimiento.

Estoy intentando hacer que un módulo GSM/GPRS lea una web. Esto funciona como sabreis, conectando a su puerto 80 y enviandole el comando GET... Es ahí donde tengo el problema.

Enviando el típico comando:

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: nombre-cliente
[Línea en blanco]

Solo google me responde, ya que responde aunque le mandes un 'hola'. Pero el resto de páginas web nada de nada. Mi intención es leer un archivo php, o html, o incluso un txt si se pudiese, pero utilizando el protocolo de http.

Sabéis algún plugin para el navegador donde veas todos los comandos que envía mientras interactuacon la pagina ?

Cual creeis que puede ser el problema ?

Estoy utilizando un módulo GPRS como he dicho antes, por lo que mando estas cadenas mediante comandos AT.

Si necesitáis algún detalle, decirlo.

elkaoD

¿Y el resto no te dan error? Porque mínimo debería decirte un METHOD NOT ALLOWED o algo así si tu request está mal formada.

Yo te recomendaría ponerte un server HTTP (o simplemente netcat con Linux) y ver qué recibes desde el módulo GPRS.

1 respuesta
EnZo

#1 Firebug, puede ayudarte. O la funcion get_headers de php.

1 respuesta
elkaoD

#3 el módulo GPRS no tiene Firefox :P

1 respuesta
EnZo

#4 "Sabéis algún plugin para el navegador donde veas todos los comandos que envía mientras interactuacon la pagina ?" Mí no entender...

1 respuesta
Soltrac

#5 Lo q quiere es un sniffer HTTP entiendo yo

Por ejemplo, Tamper data, un plugin de firefox.

xCoNDoR

#2 Solo google me responde con una web diciendo domain has moved, click here blablabla www.google.es.

Llegue a conseguir que mi proveedor web al consultar mi pagina me dijese que no use la ip para nosequé, o un mensaje parecido en aleman, pero nada del contenido de la web.

He utilizado firebug para sacar el GET que hace ffox al solicitar la página y he echo la mismita peticion a la web y nada, no hay manera..

Supongo que el problema estará en los comandos AT, o algo se me está escapando..

2 respuestas
r2d2rigo

#7 Fiddler2 te saca todo lo que hay en las peticiones HTTP.

elkaoD

#7 me reitero (es tu solución): usa 'netcat' para hacer un servidor listen rápido y haz que tu módulo GPS haga petición a tu servidor. Guarda la petición en un archivo y estúdiala a conciencia. Ojo con los caracteres no imprimibles, usa un editor hexa.

Mi apuesta es que es un error en la codificación de la petición (más que en el contenido.) Si logras que Google te responda porque ignora tu petición y el resto pasan de ti es que obviamente algo hay mal en la petición... y como tú mismo dices, las cabeceras son copy-paste de un GET típico..

1 respuesta
xCoNDoR

#9 No se como hacer de servidor, ya que mi conexión está a través de router y no tengo ip externa para acceder a mi desde fuera, osea desde el GPRS en este caso.

Otra cosa que quería probar era si puedo conectar a un servidor por TCP o UDP a un puerto diferente al 80, pero la cosa es que tampoco dispongo de servidor dedicado para hacerlo, ni puedo redirigir mi PC para que lo sea el..

1 respuesta
neil90

#1 El host en la cabecera "Host" no tiene que incluir el identificador de protocolo, es decir, sobra el "http://". Google quizá trague porque intenta ser amigable con todo tipo de navegadores, pero en sí, tu cabecera es errónea.

Aquí tienes una descripción más extensa del protocolo:
http://www.w3.org/Protocols/rfc2616/rfc2616.html

En el router puedes abrir puertos y redireccionarlos a tu máquina. Con un XAMPP debería sobrar para hacer esas pruebas.

#12 Esto es lo que me pasa por hablar sin conocer bien todos los detalles. Me lo merezco.

Quizá sea un fallo de hardware, ¿no puedes probar otro?

1 respuesta
xCoNDoR

#11 He probado de todas las formas posibles, sin el http://, con el, y todo lo que imagines. Sobre lo de abrir puertos, en muchos routers me es facil y funciona, pero el que tengo en mi casa no tengo cojones a hacerlo.. y mira que lo he hecho veces en otros..

He optado por la alternativa de utilizar una conexión SAP en vez de TCP. El modem GPRS que utilizo implemente una forma para hacerlo sin tener que mandar tu el protocolo. Me ha llegado a funcionar varias veces pero otras muchas se me queda pillado.. no sé si será la tarjeta SIM..

1 respuesta
elkaoD

#10 el que tiene que hacer de servidor eres tú en el PC. con la conexión normal de tu casa. Abres el puerto que sea en el router y fin. El módulo GPRS es el cliente.

Si no puedes abrir puertos en tu casa se lo pides a alguien. Yo mismo te puedo hacer el favor. Déjame un día y hora y te dejo el server abierto.

xCoNDoR

Pues ya está, como comenté utilizo otro sistema en vez del TCP al 80 usando el protocolo. El problema estaba en que tenía el modem sobrealimentado..
Se trata de un módulo GPRS/GSM que estoy utilizando con Arduino, y tenía el arduino alimentado con una fuente de 12v, por lo que el módulo estaba alimentado a esos 12v. Le he puesto uno de 7v ya que este trabaja a 6,3v y de perlas, ya no falla nunca.

#15 Obviamente lo hace mediante socket TCP al puerto 80, me refiero a que no hago yo la conexión manualmente. Quizás me expliqué mal :)

1 respuesta
elkaoD

#14 si te conectas a una web usas TCP por cojones (aunque sea tu compañía móvil la que usa el TCP antes de devolver los resultados.)

Me apunto lo de la sobrealimentación.

1 respuesta

Usuarios habituales

  • elkaoD
  • xCoNDoR
  • neil90
  • r2d2rigo
  • Soltrac
  • EnZo