ARGENTOP2P

Soporte, Ayuda y Consultas => Programación en General => Mensaje publicado por: demono en Marzo 02, 2007, 12:53:05

Título: Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 02, 2007, 12:53:05
Buenas!
La verdad que me estoy volviendo loco, no estoy seguro que exista la funcion que estoy buscando pero con probar no pierdo nada. Lo que necesito es realizar un programa utilizando una función que primeramente navegue solo, o me deje rellenar X campo sin la necesidad de usar Sendkeys TAB para alcanzarlo. Existe dicha funcion? El VB podrá hacer eso?

Ayuda   :-[
Título: Re: (AYU) Duda VB6 - Logueo en Internet
Publicado por: Predicador en Marzo 02, 2007, 13:52:19
Hola, googleado de por ahi:
Public Function GetPageHTML( _
           ByVal URL As String) As String
  ' Retrieves the HTML from the specified URL
  Dim objWC As New System.Net.WebClient()
  Return New System.Text.UTF8Encoding().GetString( _
     objWC.DownloadData(URL))
End Function

Here's an example of its usage:
strHTML = _
   GetPageHTML("http://www.karlmoore.com/")

baii
Título: Re: (AYU) Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 04, 2007, 16:26:11
Ese código según veo sirve para descargar la página.

La idea es crear un EXE, el cual contenga una serie de textbox que, al enviar informacion completen un formulario de internet. Según estuve viendo, estoy creando un código que vaya completando, pero no tengo idea como hacer para que "presione" el boton OK, ya que creo lograr que me llene el formulario pero no envia informacion.

El código con el que ando trabajando es el siguiente:

Inet1.Execute "http://www.atconcert.com.ar/index.php?a=enviarfecha", "POST", "fecha=" + Text3.Text + "&hora=" + Text4.Text + "&banda= " + Text5.Text + " &bandasinv= " + Text6.Text + " &prov= " + Text7.Text + " &lugar= " + Text8.Text + " &precio= " + Text9.Text + " &afiche= " + Text1.Text + "&info=" + Text2.Text
Título: Re: (AYU) Duda VB6 - Logueo en Internet
Publicado por: Camello_AR en Marzo 04, 2007, 17:34:09
de VB6 no caso un fulbo pero si de HTTP por lo que te ayudo de ese lado

Vos no necesitas cargar los campos de una pagina, sino directamente enviar la info a la página siguiente (la que interpreta los resultados)

Suponiendo que tenes la pagina 1 que se llama "formulario.php" y la pagina 2 "cargardatos.php" (a veces puede ser un nombre como "cargardatos.php?f=formulario1" como en tu caso)

EN HTTP tenes dos formas (tres en realidad pero nos interesan 2) de enviar info: El Metodo "GET" y el metodo "POST"
La diferencia radica en que en el metodo "GET" el envio de variables se realiza a traves de linea de comando en forma transparente al usuario, en tanto que el metodo "POST" utiliza las cabeceras HTTP (envia la informacíon en el bloque de petición) de forma "practicamente" oculta al usuario (podes ir a información de pagina en Firefox y ver la data que se envió en POST)

Volviendo, vos directamente necesitas "pedir" la pagina 2. El tema que si esta preparada para recibir los datos get es muy facil (de hecho haces un run o exec -no recuerdo el comando de VB - ("start URL") ) y la url la armas combinando los datos fijos (dirección, nombre de variables) y tus variables (ej: http://dominio/cargar.php?V1=%var1%&V2=%var2% donde V1, V2 es el nombre de los campos del formulario (en la pagina 1) y %var1%, %var2% es la info que cargas en los textbox)

Para usar el metodo post quizas te sirva lo que vos pusiste en el segundo mensaje

Saludos

EDIT: EN un get la estructura es


pagina - http://dominio/pagina
inicio de variables - ?
nombre de 1er variable - (ej usuario)
asignador de valor - =
valor 1er variable - (ej juan)
separador de variables (si hay mas de una) - &
y repite desde nombre hasta valor por cada variable
asi te queda


http://dominio/pagina?usuario=juan&accion=editar&identificador=1500
Título: Re: (AYU) Duda VB6 - Logueo en Internet
Publicado por: Predicador en Marzo 06, 2007, 06:33:33
Correcto, tal cual dice Camello, por eso te daba el codigo para acceder a la pagina, no necesitas mas.
Ahora como saber cual es la pagina que recibe los datos? facil, fijate el el codigo HTML de la pagina que contiene el formulario por el TAG FORM (http://www.w3schools.com/html/html_forms.asp) que ese es donde dice a donde hace el post de la informacion.
Baii
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 11, 2007, 20:05:13
Eso terminé haciendo, lo que hace basicamente es completar VARIABLEs, no campos,  pero tuvimos que poner un script que cuando se completen todas las variables envíe todo a la Base de Datos.

Habrá alguna forma de hacerlo directamente que complete los campos y "Apriete enviar"?


Encontré este código Google-ando:

CitarPrivate Sub Form_Load()
Inet1.Execute "http://servername/login.asp", "POST", "username=foo&pwd=bar"
End Sub

Lo que puedo asumir es que completa los campos con el metodo post, pero no entiendo como haría para enviar los datos...
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: Camello_AR en Marzo 11, 2007, 20:57:15
Es que tenes (al menos eso parece) un error conceptual en el funcionamiento del sistema HTTP, o al menos no explicas bien todo

Se entiende que vos tenes un soft con un formulario que tiene una cantidad de campos similar a los de una pagina web X (digamos un formulario de registro) y vos queres que ese formulario se envie a la pagina. Entonces lo que vos entendes que debes hacer es trasladar los datos de tu aplicacion al formulario, cuando directamente debes "pasar" por los metodos antes expuestos, los datos a la pagina que procesa el formulario (recorda que como dije un sistemas de formularios se basa de dos paginas, una que carga y otra que procesa (puede ser la misma page pero con distintas funciones definidas por una variable como este sitio que el action= o topic= al final del index.php definen que hacer)

Me gustaría que aclares todo para poder ayudarte mejor
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 12, 2007, 19:46:37
Exactamente, creo que me estoy explicando pal toor  :P

Es así:
Tengo un programa hecho en Visual Basic con una cantidad de campos, los cuales coinciden con los de una web, y la idea mia es enviarlos mediante algún método (Sin tener que insertar como hice un script del lado de la página) para que este programa
envíe los datos a una web "insertandolos en los campos de esta misma y enviandolos".

En otras palabras: Necesitaría que el programa llene automaticamente los campos y envíe los datos (Presumiendo que tenga un boton "submit" el formulario que lo "apriete" o de alguna forma envíe los datos).


Presumiendo que la página contenga lo siguiente:
<input type="text" name="user" size="10">
<input type="password" name="pass" size="10">
<input type="submit" value="OK">

Como haría para enviar los datos?

Título: Re: Duda VB6 - Logueo en Internet
Publicado por: Predicador en Marzo 13, 2007, 03:48:21
De la misma manera que vos lo estabas haciedno, solo hay que ver mas de la pagina que decis (por ejemplo, todo lo que esta en el tag FORM) para saber a que pagina enviar los datos; recorda que enviar un formulario (apretar el boton de send) no es mas que llamar a otra pagina enviandole variables.
Baii
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 13, 2007, 07:25:02
Ahi tamos :)
Entonces, aludiendo a lo que dice Predi: Como se podría saber sin tener acceso a la administracion de la página a cual le envia las variables?
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: elrosti en Marzo 13, 2007, 10:42:01
Si te referis a saber cual es la pagina que tenes que enviarles las variables, la podes saber viendo el codigo fuente de la pagina y buscando el tag <FORM....> y buscando donde dice "ACTION=", lo que viene despues del signo de "=" es la pagina a la que se le van a enviar las variables. A esta le tenes que concatenar la ruta desde la cual te encuentras, es decir, si dice "pagina2.php" y tu te encuentras en "www.misitio.com/carpeta1/index.php", tu dirección será "www.misitio.com/carpeta1/pagina2.php".

Tomando el ejemplo que vos pusiste, la dirección que vos deberias escribir para mandar las variables es.

"www.misitio.com/carpeta1/pagina2.php?user=MI+NOMBRE&pass=CONTRASEÑA"

Aunque esto a veces no siempre funciona, puede haber algunos chequeos de seguridad que te impediran hacer esto.

Si lo que estas intentando hacer es un ataque por "bruteforce" te diria que no pierdas el tiempo.

Saludos.
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 13, 2007, 13:37:31
No, por lo contrario, mi idea es automatizar la administracion de una página web que estamos haciendo, nada más que eso...probemos ;)
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: Camello_AR en Marzo 18, 2007, 00:47:57
Estuve mirando un poco (gracias SanG (http://htp://www.google.com.ar)) y vi que este comando viene vien rumbeado, salvo algunas correcciones
Cita de: demono en Marzo 04, 2007, 16:26:11
...
El código con el que ando trabajando es el siguiente:

Inet1.Execute "http://www.atconcert.com.ar/index.php?a=enviarfecha", "POST", "fecha=" + Text3.Text + "&hora=" + Text4.Text + "&banda= " + Text5.Text + " &bandasinv= " + Text6.Text + " &prov= " + Text7.Text + " &lugar= " + Text8.Text + " &precio= " + Text9.Text + " &afiche= " + Text1.Text + "&info=" + Text2.Text

Salvo que al final de text2.text tenes que poner

, "Content-Type: application/x-www-form-urlencoded"

y el bloque de armado de variables para que quede más limpio te conviene reemplazarlo por


Dim data As String
...
data = "fecha=" & Text3.Text & "&hora=" & Text4.Text & "&banda= " & Text5.Text & " &bandasinv= " & Text6.Text & " &prov= " & Text7.Text & " &lugar= " & Text8.Text & " &precio= " & Text9.Text & " &afiche= " & Text1.Text & "&info=" & Text2.Text
...
Inet1.Execute "http://www.atconcert.com.ar/index.php?a=enviarfecha", "POST", data, , "Content-Type: application/x-www-form-urlencoded"


Te comento: Lo unico que hice fue mirar la plantilla de la página que pasaste para ver los campos, te arme el data afuera (en general es preferible generar antes la variables, al menos cuando estas probando, porque es mas facil depurar, vos queres ver que tiene la variable y metes un "msgbox(data)" (o equivalente en VB6) y ves la variable antes de enviar. Si todo funciona podes copiar el armado al inet1.execute

Tambien te cambie los + por & en el data poruqe asi lo vi en varios sitios que entre

Te agrege una cabecera de tipo de contenido

Proba y decime (y eso que de VB6 no caso un fulbo, pero la programación siempre sera programación)
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: demono en Marzo 18, 2007, 01:43:12
Algun dia te dije Camello que sos groso?  :palmas: :palmas: :palmas: :palmas:
Funciona de 10, se ve que eso es lo que le faltaba agregar al código.

Con respecto a los & y la suma de variables es lo mismo ya que si daría la misma cadena, pero igualmente esta perfecto :D


Mil gracias  :jaja:
Título: Re: Duda VB6 - Logueo en Internet
Publicado por: Camello_AR en Marzo 18, 2007, 04:05:43
Por nada y no soy nada groso de HTTP algo entiendo pero de  VB ni idea, de hecho en programación visual solo hice alunas boludeces en delphi (versión 1 o 2) que empece un curso de esos por revista y cuando empezó a aumentar lo deje (de 5 mangosw 2 revistas, a 5 mangos una y 7/8 mangos despues en el 98 medio carito)