Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Comunicarse con el navegador

Estas en el tema de Comunicarse con el navegador en el foro de C/C++ en Foros del Web. Hola, Un amigo me comentaba que desarrollo un programa en php que entraba en el navegador, accedía a una web y llenaba unos formularios de ...
  #1 (permalink)  
Antiguo 17/07/2016, 12:00
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Comunicarse con el navegador

Hola,

Un amigo me comentaba que desarrollo un programa en php que entraba en el navegador, accedía a una web y llenaba unos formularios de manera automática. Y me pareció muy interesante.

Así que mi pregunta se puede hacer esté tipo cosas en c++? Mi experiencia en programación ah sido siempre en consola y mucho código pero nunca me he comunicado con programas externos, lo más que he hecho es leer o escribir sobre texto plano.

Que más se podría hacer? se puede controlar un mouse? y preguntar en que pixel del escritorio está? todo esto abre un mundo de posibilidades para mi curiosidad jeje

Podría iniciar mi crome e iniciar iniciar un video de youtube? jajaja se me hace muy raro estas cosas.

Saludos,
  #2 (permalink)  
Antiguo 17/07/2016, 23:16
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Comunicarse con el navegador

PHP es un lenguaje que se ejecuta en el lado del servidor, es decir, que al navegador no le llega ni gota de php. Además, por estar en el lado del servidor, NUNCA puede iniciar una comunicación con el cliente sino que es el cliente el que inicia las peticiones. Dicho esto, lo más probable es que el servicio web de tu amigo emule una conexión directa con otro sitio web y aproveché que está en medio para manipular un poco la página original.

C++ lo vas a ejecutar en el lado cliente y ahí sí vas a ser tu el que puede iniciar las peticiones. Todos los navegadores admiten un arranque por línea de comandos, y una de esas órdenes es cargar un archivo o página web determinado. Para manipular el contenido que recibe el navegador tendrías que configurar el sistema operativo para conseguir que tu programa actúe como proxy, es decir, que el SO le envié el contenido web a tu programa antes de hacérselo llegar al navegador (es lo que hacen los antivirus). Está mecánica te permite actuar sobre todos los navegadores (eso sí, seguramente no podrás saber cuál es el destinatario).

Otra forma de hacerlo es instalar una extensión del navegador, tipo greaseMonkey para Firefox. Este tipo de extensiones permiten ejecutar código aleatorio, normalmente javascript, de tal forma que pueden rellenarse formularios, modificar la página (por ejemplo para eliminar cierta publicidad) y, en definitiva, interactuar con el navegador de forma más o menos limitada.

Como todo en este mundo cada solución tiene sus pros y sus contras jejeje.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.
  #3 (permalink)  
Antiguo 18/07/2016, 00:17
 
Fecha de Ingreso: abril-2016
Mensajes: 31
Antigüedad: 8 años
Puntos: 5
Respuesta: Comunicarse con el navegador

Hola; te cuento cómo haría: primero parsearía la página web para identificar los campos del form que haya que completar (quizás con https://en.wikipedia.org/wiki/Xerces) y después enviaría la request (get o post) que se espera. Hay variantes (https, por ejemplo) que pueden hacer las cosas complicadas cuando no se las tiene en cuenta desde el principio.

En C++ desde cero es un trabajo arduo, y supongo que tiene que haber razones para que valga la pena; y después quizás alguien te muestre como hacer lo mismo con Python en menos de una hora.

Complicaciones posibles hay unas cuantas, la más importante que se me ocurre es que el dueño del servidor no quiera que hagas eso.

Última edición por enrieto; 18/07/2016 a las 00:19 Razón: hilación
  #4 (permalink)  
Antiguo 18/07/2016, 08:32
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Respuesta: Comunicarse con el navegador

No es exactamente lo que buscas, pero podrias lograr lo mismo usando NodeJS y CasperJS para "simular acciones de usuario"
http://fourkitchens.com/blog/article...tions-casperjs
  #5 (permalink)  
Antiguo 19/07/2016, 07:37
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 9 meses
Puntos: 1
Respuesta: Comunicarse con el navegador

Gracias por sus respuestas, no había respondido pues estaba fuera de casa.

Lo del proxy y configurar el sistema operativo suena un poco complicado. Pensé que se podría hacer directamente desde un programa en c++. Es decir ejecuto el exe compilado y éste se encarga de abrir el navegador, acceder a una página y bueno llenar un formulario o algo similar.

Eferion, al decir (eso sí, seguramente no podrás saber cuál es el destinatario) a que te refieres exactamente?

Voy a revisar lo de las "simulaciones de acciones de usuario" suena interesante.

Saludos,
  #6 (permalink)  
Antiguo 19/07/2016, 07:45
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: Comunicarse con el navegador

Cita:
Iniciado por dmorill Ver Mensaje
Lo del proxy y configurar el sistema operativo suena un poco complicado. Pensé que se podría hacer directamente desde un programa en c++. Es decir ejecuto el exe compilado y éste se encarga de abrir el navegador, acceder a una página y bueno llenar un formulario o algo similar.
Si el navegador en cuestión dispone de una API sobre la cual darle órdenes entonces si podrás hacer lo que dices o al menos parte del trabajo... pero es algo dependiente del navegador.

Cita:
Iniciado por dmorill Ver Mensaje
Eferion, al decir (eso sí, seguramente no podrás saber cuál es el destinatario) a que te refieres exactamente?
Si tu programa se instala en el SO como proxy entonces recibirá las tramas HTTP antes de que le lleguen al navegador. Tu programa podrá entonces manipularlas y despacharlas para que el navegador de turno pueda recibirlas. El caso es que esas tramas no tienen por qué identificar al navegador que va a recibir dichas tramas... si tienes varios navegadores abiertos... ¿cuál es el que recibirá el mensaje? para saber eso tendrías que averiguar qué programa tiene abierto el puerto destino de la trama lo cual añade algo más de complejidad a tu programa. Si no haces eso dificilmente podrás saber qué programa va a recibir la trama que estás manipulando en cada momento.

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.

Etiquetas: c++, programas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:28.