Página 1 de 1

como puedo detectar una caja de texto en un navegador?

Publicado: 21 Sep 2011, 22:12
por cloferba
lo que quiero hacer es definir 2 variables, y indicar a autoit visitar una pagina web e ingresar los datos de esas 2 variables en 2 cajas de texto:

Código: Seleccionar todo

$txt1 = "name"
$txt2 = "message"
 
;start chrome
ShellExecute("chrome.exe", "[url="http://www.freecontactform.com/free.php"]http://www.freecontactform.com/free.php[/url]","","")
 
WinWait("Contact Form Free - Google Chrome", "")
el script abre http://www.freecontactform.com/free.php (un formulario de contacto de ejemplo) en el cual quiero que en la casilla "Full Name" ingrese la variable $txt1
y en la casilla "Message" ingrese la variable de $txt2

como puedo lograr eso? como puedo indicarle a autoit que en X casilla hay que insertar X variable?

muchas gracias :smt039

Re: como puedo detectar una caja de texto en un navegador?

Publicado: 21 Sep 2011, 23:41
por chekok
Una forma de hacerlo seria enviando dichas variables en la propia llamada la web como GET, al estilo www.dominio.com/form.php?campo1=minombr ... =mimensaje

Código: Seleccionar todo

$var1='Jesus'
$var2='Este%20es%20mi%20mensaje'
$web='www.dominio.com/form.php?campo1=' & $var1 & '&campo2=' & $var2
Lo de %20 en la $var2 es para que el navegador reconozca los espacios en blanco.

Si tu no has hecho la web o desconoces las variables que admite ese php este sistema no te vale.

TEndras que realizar un Send() a la ventana del navegador que tengas abierta o que abras con tu script autoit despues de analizar el code html con un script tipo spider, en el foro en ingles he visto algo al respecto.

PUedes esperar a que otro autoitero te conteste ya que soy novato y mis conocimientos son aun muy basicos.

Re: como puedo detectar una caja de texto en un navegador?

Publicado: 22 Sep 2011, 14:23
por Jonny
Si lo que quieres es rellenar los cuadros de edición en el navegador, puedes usar la función Ie.au3. Pero, si lo que quieres es enviar los datos de un formulario al servidor, directamente, tendrás que usar las funciones Tcp() nativas de AutoIt.
Si la página recibe los datos mediante GET, tienes varias posibilidades. Una de ellas sería usar la función _InetGetSource() (creo que se escribe así) con la cual puedes acceder a una web pasándole los argumentos que requiera, que puedes ver en la barra de direcciones del navegador.

La otra forma sería como dije antes, usando las funciones TCP(); algo más laborioso, pero para mi la mejor opción. Tendrías que acceder al servidor mediante sockets, y enviarle las cabeceras HTTP que necesite. Algunos servidores (según como estén configurados) o los scripts a los que invoques, no requieren todas las cabeceras, pero eso puede variar. Por ejemplo, es típico a modo de medida de seguridad (para evitar el uso de boots) por ejemplo, que algunas webs requieran la cabecera referer, para que si la llamada no proviene del servidor que aloja el script al que se invoca, este no devuelva la información solicitada.

No seáis malos, y no mal-uséis esto :):

En realidad, con un poco de trabajo extra (por algo dije antes que esta forma es más laboriosa) puede accederse a cualquier servicio de un servidor HTTP. Si un navegador WEB es capaz, cualquier otro programa también. Solo hay que saber como funciona la petición del servicio que queremos y construirla a base de cabeceras.

Espero que no me riñan los moderadores por esto aunque sólo daré la pista, no toda la info :P.

Para conocer la petición de un script de una página WEB, podemos capturar el tráfico que se genera entre nuestro ordenador e internet. Así podremos ver con todo detalle entre otras cosas, como es la petición HTTP que hemos de hacer para acceder a un script de una web.
Sabiendo esto, solo nos quedará construir una petición igual y enviarla al servidor, que nos devolverá la respuesta generada por el script, que luego deberemos tratar para extraer la información que necesitemos.

Si el script requiere que se envíen los datos mediante POST, si decides enviar los datos directamente, en vez de rellenar los cuadros de edición en el navegador con Ie.au3, no podrás hacerlo con la función _InetGetSource(), sino que tendrás que capturar la información que le envía el navegador al servidor, para saber que parámetros y que valores has de enviar al servidor mediante sockets.

Salu2!

Re: como puedo detectar una caja de texto en un navegador?

Publicado: 22 Sep 2011, 20:26
por cloferba
la idea es poder aplicarlo en diferentes sitios con cajas de texto (no en un formulario de contacto especificamente)

probare Ie.au3 pero no tengo ni idea por donde comenzar :smt005

Re: como puedo detectar una caja de texto en un navegador?

Publicado: 23 Sep 2011, 01:01
por Chefito
Se suele comenzar por el principio :smt005 .
Busca en la ayuda las funciones que empiezan por _IE que esas son las que necesitas. Hay encontrarás la solución, y te aseguro que encontrarás varias formas de hacerlo :smt023 .
También mira el foro, ya que este tema está más que explicado y expuesto en muchos códigos. El que busca encuentra :smt002 .

Saludos.