He rellenado un formulario bastante largo, me ha llevado el suficiente tiempo como para no querer hacerlo otra vez por nada del mundo. Lo he hecho en una ventana de firefox, pero desafortunadamente no tengo instalado el http live headers ni httpfox ni nada que me permita ver los datos enviados, y para instalarlos me temo que tendría que reiniciar el firefox y por tanto perdería los datos. Dando hacia atrás en el historial no me recupera los datos, me ha sorprendido mucho, pero así es. Sólo puedo darle a recargar para que se vuelvan a enviar (con la esperanza de que no se estén enviando de manera incorrecta y pueda recuperarlos así).
Así que, cuando le de a reenviar querría recuperar los datos de esa petición post, ¿cómo podría hacerlo?
Tened en cuenta que tengo abierto el firefox y tengo que mantenerlo abierto, reiniciar o similares no es una opción.
He instalado wireshark, pero de momento no me ha servido de nada, no me lista ninguna interfaz como disponible, aparte no quiero snifar todo lo que pase por mi wifi, sólo quiero recuperar lo que estoy mandando en ese formulario.
Estoy pensando en hacer un pequeño servidor que escuche en el puerto 80 y guarde las peticiones y cambiar el fichero hosts para que cuando recargue el sitio el post vaya a localhost y recuperarlo de esa manera, pero esperaba que hubiera algo que pudiera hacer más rápidamente.
Creo que voy a ir empezando con el tema de los sockets...
Muchas gracias desde ya.
PD: si encontrara algo como esto http://www.java2s.com/Tutorial/CSharp/0580__Network/AsimpleHTTPechoserver.htm hecho en un lenguaje de programación para el que no tenga que instalarme el compilador lo tendría ya hecho... al final va a ser sencillo y todo.
PD2: al final lo he hecho con python, todavía tengo que pasar el texto del formato de URL con + en lugar de espacios y cosas como %C3%9A pero ya no tengo que volver a escribirlo.
éste es el código, es un poco paranoico porque la función lo guarda en un fichero además de retornarlo, pero es lo que tiene.
Código
import socket import sys from pickle import load, dump def dataget(HOST, PORT): s = None for res in socket.getaddrinfo(HOST, PORT, socket.AF_UNSPEC, socket.SOCK_STREAM, 0, socket.AI_PASSIVE): af, socktype, proto, canonname, sa = res try: s = socket.socket(af, socktype, proto) except socket.error as msg: s = None continue try: s.bind(sa) s.listen(1) except socket.error as msg: s.close() s = None continue break if s is None: print('could not open socket') sys.exit(1) conn, addr = s.accept() print('Connected by', addr) datas=[] while len(datas)<10: data = conn.recv(1024) if not data: break datas.append(data) with open('file.txt', 'wb') as f: dump(datas, f) yield(data) conn.close()
Viene en la documentación oficial. http://docs.python.org/py3k/library/socket.html