FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
||||
|
||||
¡Hola a todos!
Cita:
Cita:
Gracias. Al González. |
#22
|
||||
|
||||
Hola,
Casi se me pasa responder a esto Al, te pido disculpas. Yo utilizé la última versión de ambos "programas", es decir, la última versión de las librerías que pude conseguir y a la vez la versión 10 de los componentes Indy. De echo hace poco probé el programa que escribí a modo de ejemplo y traté de hacerlo funcionar con Indy 9 y no pude hacerlo. Lo digo para que conste. Con Delphi 10 y lo que yo recuerdo son la última versión de OpenSSL pude hacer lo que quería: conectar con Gmail y traer los nuevos correos de varias cuentas. |
#23
|
||||
|
||||
Cita:
He visto que repites varias veces la sentencia:
Se reemplazar por esta para que quede mejor:
__________________
[Crandel] |
#24
|
||||
|
||||
Muy cierto Crandel, es mejor poner la propiedad size a cero. Por cierto, no comentas que te parece el resto del código.
PD: Aprovecho para preguntar ¿que le paso a este hilo? ¿se puede considerar muerto? ¿nadie mas saco algo en limpio? |
#25
|
||||
|
||||
A jíjole, ya es tarde
¡Hola a todos!
Cita:
Mañana instalaremos la primera versión de la solución a nuestro cliente. Ya es funcional la automatización sobre dos de los tres sitios Web (en una versión básica). Faltará hacer algunas mejoras, pero confío en que pronto tendremos esto al 100%. Algunos datos clave para quienes deseen desarrollar este tipo de soluciones: El componente TIdHTTP es excelente, pero no es la única herramienta que utilizamos. En cada caso primero hay que estudiar las tripas del sitio Web, elaborando un "mapa" de las URLs que se mandan llamar y sus parámetros. Un largo trabajo de arqueología informática, donde se requiere mucha paciencia. En este punto, mi recomendación es usar un componente TWebBrowser para saber cuáles son los parámetros que la página envía al servidor Web, y entonces después poder automatizar esos envíos con TIdHTTP. Domingo Seoane nos expone un buen ejemplo del evento TWebBrowser.OnBeforeNavigate2 en este mensaje. (la sentencia "ShowMessage(Values['P1']);" puede ser sustituida por "ShowMessage(Text);" para mostrar todos los parámetros (nombres y valores) que están a punto de enviarse en la petición). Gracias Domingo, ese ejemplo me sirvió muchísimo cuando no encontraba la manera de ver los parámetros que una página enviaba bajo el método Post. Lo que usualmente hacía para averiguarlo era guardar una copia local de la página como archivo .htm, cambiar su método Post por Get y ejecutar tal archivo, pero por alguna razón no se guardaba correctamente (incluso hasta instalé Firefox por primera vez para intentarlo con ese otro navegador ). Pero definitivamente es más profesional hacer trabajo de arqueología con herramientas más finas y no puro pico y pala. La esencia de automatizar un sitio Web ya sea con TIdHTTP o con rutinas de más bajo (y flexible) nivel como las propuestas por Domingo, consiste en conocer las URLs (direcciones Web) a las cuales hay que ordenarles algo y los parámetros que habremos de enviarles para que ese algo ocurra de manera correcta. Dichas URLs aparecen en los atributos "Action" de las etiquetas HTML "Forms" (¿cómo? ¿el lector todavía no ha usado la opción "Ver código fuente" de su navegador? ). Generalmente, cuando se invoca a una de esas direcciones Web, el misterioso programa servidor que se encuentra del otro lado de la línea (generalmente Apache), nos envía como respuesta un flujo de bytes HTML, una página vaya. El resto del trabajo consiste en analizar ese flujo de bytes como una cadena de caracteres, buscando en posiciones específicas el dato que deseamos extraer. Esto no quiere decir que vamos a estudiar la cadena que regresó byte por byte. La cadena de bytes puede ser guardada como una página .htm y verla con mayor detalle en cualquier editor de texto. De hecho esto se hace generalmente desde antes de empezar a programar (me meto al navegador, consulto un dato y la página que me regresa la guardo como archivo local). Se estudia ese archivo de texto para encontrar patrones comunes que ayuden a identificar con seguridad la posición donde siempre aparece el dato que buscamos. Es decir, ya se ha familiarizado uno con el código fuente de una página de resultados y es entonces cuando podemos escribir un algoritmo que acaricie a esos caracteres y bese a la parte más sensible de la cadena, obteniendo ese «¡Si, aquí!» que todos deseamos escuchar.
En las próximas versiones vamos a utilizar alguna biblioteca (esas que creíamos que eran librerías en el siglo pasado) especial para análisis sintáctico HTML y reconocimiento de expresiones regulares. Esto con el fin de hacer más segura la extracción de datos. Porque como el propietario del sitio cambie ligeramente el diseño de la página...¡pabernosmatao! Todo esto que escribí fue a botepronto (palabra hermana de pabernosmatao) y en base a mis escasos conocimientos sobre la Web. Aún así, espero que resulte de utilidad y de antemano pido disculpas por si dije alguna babosada. Ahora sí me voy a cenar, mañana será al gran día (a ver cómo me sale la quincena ). Un abrazo parseado. |
#26
|
||||
|
||||
Cita:
Ahora lo implemente con SendRequest y no tengo ese problema, en realidad se adapta mejor a mi problema porque realmente simula que es el IE y no un programa de automatización Por otro lado estoy usando una clase llamada THTMLParser para analizar el texto de las paginas web con buenos resultados, ya me pondre mas a delante a estudiar "Expresiones regulares" que parece ser una mejor herramienta.
__________________
[Crandel] |
#27
|
||||
|
||||
Viendo todo esto: ¿Se podria ejecutar un navegar pasandole los parametros necesarios para el login?
Ejemplo:
O algo asi, para que habra el navegador con la web del foro y ya logeado con mi usuario y password. Un saludo, Roger. |
#28
|
||||
|
||||
Lo que puedes hacer, es usar la función SendRequest de seoane con la que te logueas, y luego envias la orden que se habra la pagina que quieras con el IE sin necesidad de mandar parámetros.
No lo he probado pero deberia funcionar.
__________________
[Crandel] |
#29
|
||||
|
||||
Cita:
Cita:
Lo que si podríamos hacer en el caso del ClubDelphi, es loguearnos usando la función SendRequest, pero marcando la opción "Recuerdame", de esta forma la información de login se guardara en una cookie persistente que la nueva ventana del explorer si podrá utilizar. |
#30
|
||||
|
||||
Tenemos dos problemas Houston
¡Hola a todos!
Los saludo con muchísimo gusto esperando que hayan tenido una muy feliz Navidad y deseándoles lo mejor para el año que está por comenzar. Les actualizo mi caso, ahora si estoy en algunos aprietos técnicos. Son dos problemas en sí: 1. En una de las páginas que estoy automatizando veo que los parámetro enviados mediante el método Post son: Cita:
Content-Disposition: form-data; name"? Al parecer están codificados (encriptados). Como pista, se supone que esos parámetros incluyen las cadenas "6D1948", "3F5108" y "8D3902", ya que las capturo en tres cuadros de texto de la página Web antes de hacer el "sumbit". Pero no encuentro aún la relación entre un "----------------------------7d6242382036e" y un 6D1948, aunque sospecho que no es tan difícil de averiguar. 2. El otro problema que tengo es que el sitio Web es HTTPS por lo que tengo que usar las DLLs libeay32.dll y ssleay32.dll, pero aún así, el componente TIdHTTP me arroja la excepción: EIdOSSLConnectError with message 'Error connecting with SSL. En este momento no puedo determinar que versión de SSL estoy usando, pero ¿cuál versión me sugieren utilizar con Delphi 7 y dónde podría conseguir ese par de DLLs? De antemano les agradezco su ayuda. Un abrazo espacial. Al González. |
#31
|
||||
|
||||
Hola Al,
Lo que planteas tiene una explicación muy sencilla. La codificación del formulario es diferente a la que estas acostumbrado. Hasta ahora habías tratado con formularios cuyo atributo enctype era "aplicación/x-www-form-urlencoded", por lo que los datos del formulario tenían un aspecto como este: Código:
nombre1=valor1&nombre2=valor2 Con relación a tu pregunta, "----------------------------7d6242382036e" no es mas que un separador y no tiene relación con el valor de ninguno de los parámetros. Creo que Indy puede trabajar con este tipo de codificación, pero ya sabes que yo soy mas de WinInet, así que es mejor que alguien con mas experiencia en Indy te lo confirme. |
#32
|
||||
|
||||
Cita:
Lo mismo lo estoy con mi programa, el problema es que ahora quiero abrir varias instancias de mi programa, pero que cada una este conectada con un usuario diferente. El sitio me obliga a usar cookies. pd: Estoy usando WinInet
__________________
[Crandel] Última edición por Crandel fecha: 28-12-2006 a las 02:01:39. |
#33
|
||||
|
||||
Ah, OK, entonces...
¡Hola a todos!
Cita:
TWebBrowser y TIdHTTP con “multipart/form-data”, ¿se puede? De antemano gracias. Un abrazo multiparte. Al González. |
#34
|
||||
|
||||
Cita:
Todo esto con Indy 10 y mediante el método científico de probar una por una las opciones hasta dar con la adecuada // Saludos Última edición por roman fecha: 10-02-2007 a las 03:08:35. |
#35
|
||||
|
||||
Gracias. ¿Y se podrá con multi hilo?
¡Hola a todos!
Antes que nada pido una disculpa por demorarme más de un mes en retomar el tema. Román: felicidades por la nueva marca y gracias por los datos que proporcionas sobre Indy. Me parece que uno de los problemas residía en que estaba yo utilizando la versión 9 de esta biblioteca de componentes, en lugar de la 10 (nunca la he actualizado): Cita:
Debido a que también había que resolver el otro problema (cómo enviar datos multi parte), y ya no contaba con mucho tiempo para investigar más por mi cuenta, decidí confiar esta última pieza del caso a un colega de Veracruz, quien finalmente tuvo más éxito que yo, pero utilizando un componente de Kyriacos Michael llamado TIEHTTP (http://www.badfan.com/delphi/tie_http_https.html), el cual viene con un buen soporte para envío de datos multipart. El único detalle en contra de este componente es que requiere Internet Explorer, pero en el caso concreto que nos ocupa acá eso no representa ningún problema. Ya se está utilizando aceptablemente la versión preliminar de la aplicación, pero ahora tengo en mente hacer esto con muli hilo (multithread), lo cual desconozco si es soportado por TIdHTTP y TIEHTTP (ojalá que sí). La idea es que mientras el servidor Web responde a una consulta, pueda lanzarse otra más, ya sea al mismo servidor Web o a otro (la aplicación hace múltiples consultas a tres servidores, la idea es que ahora las haga de manera simultánea para economizar tiempo). Haré algunas pruebas y les avisaré lo que ocurra. De antemano les agradezco por cualquier consejo que consideren útil. Un abrazo múltiple. Al González. Última edición por Al González fecha: 18-02-2007 a las 06:10:21. |
#36
|
||||
|
||||
Cita:
Estoy realizando la conexion a un servidor con multihilo, pero el resto de los hilos pierden la sesion, como hago para que todos mantengan la misma sesion? edito: me parece que mi problema esta por otro lado, no esta perdiendo la sesion, porque un hilo si lo esta manteniendo.
__________________
[Crandel] Última edición por Crandel fecha: 12-03-2007 a las 02:44:58. |
#37
|
|||
|
|||
Ayuda!!!!
Buenas tardes.. Amigos soy nuevo en este sitio y para serles sincero no creo tener ni la mitad del conocimiento q tienen ustedes y por eso les pido su ayuda.. Resulta que aqui en venezuela para poder solicitar la cita del pasaporte es necesario ingresar a esta pag: http://www.onidex.com.ve/ pero el servicio brindado por esta pagina es fatal, osea no sirve.. (NO PUEDO CONECTARME CON FACILIDAD) El servicio de la pagina es todo el dia pero las solicitudes se acaban en menos de media hora a partir de las 9 am. Lo que quisiera yo es q me ayuden a poder automatizar la entrada a la pagina sin tener que estar dandole reintentar todo el tiempo y tambien a poder llenar todo lo q pide la pag de forma automatica con agun programa o algo.. Les repito no se mucho en relacion a esto pero puedo aprender.. Espero pronta respuesta y de antemano muchas gracias.. (Para su mayor comodidad puenen in gresar a la pag despues de las 11 am hora venezuela)
|
#38
|
|||
|
|||
Hola Al
como dec, yo accedo a Gmail con indy y tambien tuve problemas con las versiones de libeay32.dll y ssleay32.dll No recuerdo como pero logre dar con las versiones indicadas uso delphi 7 con las indy que el trae... que versión serán? parece que 9.00.10 las versiones de dll que me funcionan son las de indy_OpenSSL096m Si no las consigues te las paso Saludos Pablo |
#39
|
|||
|
|||
Perdón, me pasa por apurado y no leer todo!!!
Ya estaba resuelto este tema... Muy interesante el hilo!!!!! Saludos otra vez Pablo |
#40
|
|||
|
|||
Hola chicos!!!
Perdón por reabrir este antiguo hilo, pero la verdad es que me ha venido genial el trabajo realizado por todos. Pero me surge una duda/cuestión, a ver si saben como atacarla. ¿Como realizo las llamadas a las funciones Javascript que contiene la web solicitada? Un saludo!! |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Automatizacion de word (generar documentos) | alt126 | C++ Builder | 4 | 24-04-2007 05:19:27 |
Automatizacion de word (insertar tablas) | alt126 | C++ Builder | 2 | 04-11-2005 11:44:29 |
Consejo Automatizacion Excel Builder C++ | alt126 | C++ Builder | 0 | 14-04-2005 11:52:04 |
HTTP Indy | bochi | Internet | 1 | 27-12-2003 02:57:34 |
Http Server | ebeltete | Internet | 0 | 17-05-2003 03:57:39 |
|