Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ferminako en 30 Octubre 2012, 13:29 pm



Título: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 30 Octubre 2012, 13:29 pm
Buenas a todos, este es mi primer post y sinceramente en temas relacionados con el hacking se muy poco...

Soy programador y me ha surgido la necesidad de ingresar en una url  con login y password y una vez logueado  ir a otra url que desencadena un proceso de actualizacioón.

Dado que necesito automatizarlo en vez de todos los dias ir a mano a la web loguearme y darle al link que lleva a la url que desencadena el proceso de actualización de una bd , necesito un script para ponerlo en una tarea programada en mi servidor.

Lo más parecido que tengo es un escript  en mi servidor corriendo que se conecta a una ftp y  realiza unos uploads...

Podria realizar lo mismo para mi caso con la web?
Si es asi como podria ser?

Gracias a todos!


Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 30 Octubre 2012, 14:32 pm
me ha surgido la necesidad de ingresar en una url  con login y password y una vez logueado ir a otra url

necesito un script para ponerlo en una tarea programada en mi servidor.

Da más datos:

Que SO usa el server, (Por lo de tarea programada entiendo que usas Windows y su programador de tareas, pero por si acaso pregunto)
En que lenguaje lo necesitas (Batch, Bash, vbs, python, etc... ¿o no importa?)

Citar
Lo más parecido que tengo es un escript en mi servidor corriendo que se conecta a una ftp y realiza unos uploads...
(Si usas windows) ¿Utilizas el comando FTP de Windows para hacer el upload, u otro comando externo? (¿WPut por ejemplo, o cual?)
(Si usas Windows y no usas IExplorer) ¿Te importaría descargar y utilizar comandos externos para abrir el sitio web y loguearte, etc? (De lo contrario, es imposible hacerlo con Batch y/o VBS)

Saludos


Título: Re: script para loguearse en una web e ir a una url
Publicado por: ferminako en 30 Octubre 2012, 18:03 pm
Buenas tardes, el que tengo de ftp que es un .bat lo tengo sobre un server con linux en un hosting... lo he puesto solo como ejemplo.

En este caso podria ser ahi con linux o en una makina local de mi empresa que  lleva windows server peor no recuerdo la version sorry :S si es necesaria te la miro.

La problematica es tal que tengo que entrar en la web : www.ejemplo.com ahi tengo para loguearme, meto mi id y mi pass eso me lleva a otra pagina por ejemplo www.ejemplo.com/profile y ahi tengo un boton que al pulsarlo ejecuta una actualización de una base de datos con stocks de productos y demás.

Me da iwal en linux en windows y como hacerlo pero  necesito automatizar la tarea ;)

Gracias



Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 30 Octubre 2012, 19:56 pm
Me da iwal en linux en windows y como hacerlo

Perfecto, pues he escogido Ruby:

Código
  1. # -*- coding: UTF-8 -*-
  2.  
  3. require 'watir-webdriver'
  4.  
  5. browser = Watir::Browser.new
  6. browser.goto('http://foro.elhacker.net/login.html')
  7. browser.text_field(:name => "user").set "test"
  8. browser.text_field(:name => "passwrd").set "test"
  9. browser.button(:value => "Ingresar").click
  10. # browser.close
  11.  
  12. __END__

Aquí te dejo el ejemplo compilado para que compruebes si funciona correctamente con tu navegador (El cual no me has especificado): http://exoshare.com/download.php?uid=XD4DTSFN
(Te debería salir la página de login de elhacker.net, con estos datos)
(http://img832.imageshack.us/img832/9674/prtscrcapturel.jpg)


Para que el ejemplo deje de ser un ejemplo obviamente necesito que me proporciones la URL y tus datos de acceso (por privado, claro), y entonces te podré ayudar a hacer el script si no sabes como y de paso compilarlo a EXE para que no tengas que instalar Ruby,
o puedes hacerlo tú mismo instalando Ruby con el ejemplo que te he dado.



Si prefieres hacerlo con Batch, aquí tienes alguna solución que dí hace tiempo:

Tema: Cambiar ip mediante .bat (http://foro.elhacker.net/empty-t345035.0.html)



Si prefieres hacerlo con VBS (Solamente si en el equipo de Windows server tienes IE instalado) tienes ejemplos en Google.


Un saludo


Título: Re: script para loguearse en una web e ir a una url
Publicado por: ferminako en 31 Octubre 2012, 10:14 am
buscando budcando he encontrado un script en vbs que me funciona, pero tengo un problema y es que en vez de usar :
     .getElementByID("usuario").value = "xxxx"
necesito usar por name:
    .getElementsByName("clave").value = "...." pero me da error y me dice que no existe .getElementsByName en vbs , cual seria su equivalente???? es que el campo de la clave no tiene id solo name :S y para hacer click en un boton?


Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 31 Octubre 2012, 12:12 pm
Si eliges hacerlo en VBS no te podré ayudar porque no tengo IE para testear,

En Ruby te lo dí prácticamente hecho, solo hay que cambiar los valores (Y añadir una simple línea para la otra página de la actualización de la BD),
si es por lo de dar tus datos de acceso entonces puedo hacer un EXE que tome los valores desde un archivo de texto y así no tienes que darme nada, no me cuesta nada.
(perdona que insista, solo doy soluciones)

Un saludo




Referencia:
http://msdn.microsoft.com/en-us/library/aa752084%28v=vs.85%29.aspx


Ejemplos:
http://www.computing.net/answers/programming/vbscript-to-launch-a-secure-website-login/20230.html

http://www.tek-tips.com/viewthread.cfm?qid=1167873

http://forums.digitalpoint.com/showthread.php?t=684027

http://www.anwarsayed.com/3/post/2011/7/vbs-script-login-to-website-automatically.html

http://www.computing.net/answers/programming/vb-script-to-login-web-page/22035.html

Código
  1. DIM IE
  2. DIM ipf
  3.  
  4. Set IE = CreateObject("InternetExplorer.Application")
  5. IE.navigate "http://zip4.usps.com/zip4/citytown.jsp"
  6. IE.Visible = True
  7.  
  8. While IE.Busy
  9.     WScript.Sleep 50
  10. Wend
  11.  
  12. Set ipf = IE.document.all.getElementByID("city")
  13. ipf.Value = "redmond" 'fill in the text box
  14. Set ipf = IE.document.all.state
  15. ipf.Value = "WA" 'fill in the text box
  16. Set ipf = IE.document.all.Submit
  17. ipf.Click    'click the submit button
  18. 'IE.Quit




Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 31 Octubre 2012, 12:23 pm
necesito usar por name:
    .getElementsByName("clave").value = "...." pero me da error y me dice que no existe

getelementsbyname es un método solo del objeto "document" así que debes usarlo así:
Código
  1. document.getElementsByName('nombre')

De todas formas como ya te digo no tengo IE para testear, prueba este otro:
Código
  1. .getElementsByTagName('nombre')

y para hacer click en un boton?
Mira el code VBS de ejemplo que puse más arriba, ahi lo tienes.


Título: Re: script para loguearse en una web e ir a una url
Publicado por: ferminako en 31 Octubre 2012, 12:52 pm
Justamente estaba probando con esos comando pero ninguno es valido :( juuu

Pero weno seria posible que desarrollaras en ruby y luego compilaras un .exe  que se alimentase de un txt o cualquier sistema de fichero donde pueda poner
1º La url a la que debe ingresar el navegador
2ºid o name del txt del user y el contenido
3º id o name del txt del pass y el contenido(en este caso es name porque no tiene id... :( sino lo haria en vbs)
4ºenviar el form bien metiendo el id del boton que lo envia o con el name del formulario y hacer submit
5ºClick en el boton que realiza la accion

Gracia suna vez mas elektro!!!


Título: Re: script para loguearse en una web e ir a una url
Publicado por: overxfl0w13 en 31 Octubre 2012, 14:10 pm
Urllib de python te puede venir muy bien para eso, busca información en google es muy simple :)


Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 31 Octubre 2012, 14:30 pm
Si no te he entendí mal después del primer click te redirige a una página donde tienes que hacer otro click en un botón, osea, 2 botones en total, ¿no?

A ver si te sirve:

Navegante.rb
MEJORADO
Código
  1. # -*- coding: UTF-8 -*-
  2.  
  3. require 'watir-webdriver'
  4.  
  5. if not ARGV.empty? then FILE = ARGV[0] else FILE = 'C:\Windows\Login.txt' end
  6.  
  7. File.open(FILE, 'r+').each_line do |line|
  8.    if line['URL'] then $URL = line.split('=').last.chomp end
  9.    if line['USER_TYPE'] then $USER_TYPE = line.split('=').last.chomp.to_sym end
  10.    if line['USER_NAME'] then $USER_NAME = line.split('=').last.chomp end
  11.    if line['USER_TEXT']  then $USER_TEXT = line.split('=').last.chomp end
  12.    if line['PASS_TYPE'] then $PASS_TYPE = line.split('=').last.chomp.to_sym end
  13.    if line['PASS_NAME'] then $PASS_NAME = line.split('=').last.chomp end
  14.    if line['PASS_TEXT']  then $PASS_TEXT  = line.split('=').last.chomp end
  15.    if line['BUTTON1_TYPE']  then $BUTTON1_TYPE  = line.split('=').last.chomp.to_sym end    
  16.    if line['BUTTON1_NAME'] then $BUTTON1_NAME = line.split('=').last.chomp end
  17.    if line['BUTTON2_TYPE']  then $BUTTON2_TYPE  = line.split('=').last.chomp.to_sym end    
  18.    if line['BUTTON2_NAME'] then $BUTTON2_NAME = line.split('=').last.chomp end
  19. end
  20.  
  21. print "
  22.  
  23. INFO:
  24.  
  25. [+] URL:
  26.    #{$URL}
  27.  
  28. [+] Usuario:
  29.    Atributo = #{$USER_TYPE}
  30.    Nombre   = #{$USER_NAME}
  31.    Texto    = #{$USER_TEXT}
  32.  
  33. [+] Contraseña:
  34.    Atributo = #{$PASS_TYPE}
  35.    Nombre   = #{$PASS_NAME}
  36.    Texto    = #{$PASS_TEXT}
  37.  
  38. [+] Botón 1:
  39.    Atributo = #{$BUTTON1_TYPE}
  40.    Nombre   = #{$BUTTON1_NAME}
  41.  
  42. [+] Botón 2:
  43.    Atributo = #{$BUTTON2_TYPE}
  44.    Nombre   = #{$BUTTON2_NAME}
  45.  
  46. "
  47.  
  48. browser = Watir::Browser.new
  49. browser.goto($URL)
  50. browser.text_field($USER_TYPE => $USER_NAME).set $USER_TEXT
  51. browser.text_field($PASS_TYPE => $PASS_NAME).set $PASS_TEXT
  52. browser.button($BUTTON1_TYPE=> $BUTTON1_NAME).click
  53. browser.button($BUTTON2_TYPE=> $BUTTON2_NAME).click
  54. #browser.close
  55.  

(http://img843.imageshack.us/img843/8373/prtscrcapturew.jpg)

login.txt
MEJORADO
Código:
# Valores para XXXX_TYPE: id, title, name, tag_name, value, index, text, etc...
# Importante: No dejar espacios en las líneas entre el caracter "="

URL=http://foro.elhacker.net/login.html

USER_TYPE=name
USER_NAME=user
USER_TEXT=test

PASS_TYPE=name
PASS_NAME=passwrd
PASS_TEXT=test

BUTTON1_TYPE=tag_name
BUTTON1_NAME=Ingresar

BUTTON2_TYPE=tag_name
BUTTON2_NAME=By Elektro H@cker

PD: Guarda el "Login.txt" en la ruta "C:\Windows\Login.txt" o pásale el argumento al script desde la consola así:
Código:
navegante.exe "C:\carpeta\mis _datos_de_acceso.txt"

Ejecutable: http://exoshare.com/download.php?uid=0BHKQ263
MEJORADO


Título: Re: script para loguearse en una web e ir a una url
Publicado por: ferminako en 31 Octubre 2012, 17:43 pm
Gracias Elektro , aun no he podido probarlo porque no he sido capaz de descargarlo, a donde le tengo que daR?toke lo q toke  es publi xDDD


Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 31 Octubre 2012, 18:02 pm
Gracias Elektro , aun no he podido probarlo porque no he sido capaz de descargarlo, a donde le tengo que daR?toke lo q toke  es publi xDDD

Pero si sale una lista de 14 servidores para descargar del que más te guste xD, dale a la flecha verde en cualquier fila (http://exoshare.com/images/click.gif)

aquí tienes uno... http://www.2shared.com/file/wP_goUlJ/navegante.html

saludos


Título: Re: script para loguearse en una web e ir a una url
Publicado por: ferminako en 31 Octubre 2012, 18:36 pm
sorry elektro , culpa de mi navegador :( me estaba volviendo loco jajaja muchas gracias por tu ayuda voy a probarlo.ç
Un saludo


Título: Re: script para loguearse en una web e ir a una url
Publicado por: ferminako en 1 Noviembre 2012, 13:34 pm
Si en vez de haber un segundo boton , fuera un link, funcionaria?


Título: Re: script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 1 Noviembre 2012, 15:01 pm
Si en vez de haber un segundo boton , fuera un link, funcionaria?

Claro, aquí tienes  ;)

PD: Ya sabía yo que al final... xD si es que te complicas!

Navegante.rb
Código
  1. # -*- coding: UTF-8 -*-
  2.  
  3. # 4ª edición
  4.  
  5. require 'watir-webdriver'
  6.  
  7. if not ARGV.empty? then FILE = ARGV[0] else FILE = 'C:\Windows\Login.txt' end
  8.  
  9. File.open(FILE, 'r+').each_line do |line|
  10.    if line['URL']         then $URL         = line.split('=').last.chomp        end
  11.    if line['USER_TYPE']   then $USER_TYPE   = line.split('=').last.chomp.to_sym end
  12.    if line['USER_NAME']   then $USER_NAME   = line.split('=').last.chomp        end
  13.    if line['USER_TEXT']   then $USER_TEXT   = line.split('=').last.chomp        end
  14.    if line['PASS_TYPE']   then $PASS_TYPE   = line.split('=').last.chomp.to_sym end
  15.    if line['PASS_NAME']   then $PASS_NAME   = line.split('=').last.chomp        end
  16.    if line['PASS_TEXT']   then $PASS_TEXT   = line.split('=').last.chomp        end
  17.    if line['BUTTON_TYPE'] then $BUTTON_TYPE = line.split('=').last.chomp.to_sym end    
  18.    if line['BUTTON_NAME'] then $BUTTON_NAME = line.split('=').last.chomp        end
  19.    if line['LINK1_TYPE']  then $LINK1_TYPE  = line.split('=').last.chomp.to_sym end    
  20.    if line['LINK1_NAME']  then $LINK1_NAME  = line.split('=').last.chomp        end
  21.    if line['LINK2_TYPE']  then $LINK2_TYPE  = line.split('=').last.chomp.to_sym end    
  22.    if line['LINK2_NAME']  then $LINK2_NAME  = line.split('=').last.chomp        end
  23. end
  24.  
  25. print "
  26.  
  27. INFO:
  28.  
  29. [+] URL:
  30.    #{$URL}
  31.  
  32. [+] Usuario:
  33.    Atributo = #{$USER_TYPE}
  34.    Nombre   = #{$USER_NAME}
  35.    Texto    = #{$USER_TEXT}
  36.  
  37. [+] Contraseña:
  38.    Atributo = #{$PASS_TYPE}
  39.    Nombre   = #{$PASS_NAME}
  40.    Texto    = #{$PASS_TEXT}
  41.  
  42. [+] Botón:
  43.    Atributo = #{$BUTTON_TYPE}
  44.    Nombre   = #{$BUTTON_NAME}
  45.  
  46. [+] Link 1:
  47.    Atributo = #{$LINK1_TYPE}
  48.    Nombre   = #{$LINK1_NAME}
  49.  
  50. [+] Link 2:
  51.    Atributo = #{$LINK2_TYPE}
  52.    Nombre   = #{$LINK2_NAME}
  53.  
  54. "
  55.  
  56. browser = Watir::Browser.new
  57. browser.goto($URL)
  58. browser.text_field($USER_TYPE => $USER_NAME).set $USER_TEXT
  59. browser.text_field($PASS_TYPE => $PASS_NAME).set $PASS_TEXT
  60. browser.button($BUTTON_TYPE=> $BUTTON_NAME).click
  61. browser.link($LINK1_TYPE=> $LINK1_NAME).click
  62. browser.link($LINK2_TYPE=> $LINK2_NAME).click
  63. #browser.close

Login.txt
Código:
# Valores para XXXX_TYPE: id, title, name, tag_name, value, index, text, etc...
# Importante: No dejar espacios en las líneas entre el caracter "="

URL=http://foro.elhacker.net/login.html

USER_TYPE=name
USER_NAME=user
USER_TEXT=Nombre de usuario

PASS_TYPE=name
PASS_NAME=passwrd
PASS_TEXT=Contrasenya

BUTTON_TYPE=tag_name
BUTTON_NAME=Ingresar

LINK1_TYPE=text
LINK1_NAME=Dudas Generales

LINK2_TYPE=text
LINK2_NAME=Dudas Generales

Ejecutable: http://exoshare.com/download.php?uid=HT0OTNAQ


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 1 Noviembre 2012, 19:33 pm
Funciona Perfecto Elektro...  Mil gracias tio ! pero me acaban de joder y han metido un a pagina intermedia, puedes compilarme uno para que despues del boton haya dos links en vez de solo uno???

Por cierto si tengo que poner espacios como lo hago??

Te debo una birras o algo tio   >:D


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 1 Noviembre 2012, 19:56 pm
por cierto de scripting no tengo ni zorra pero si t puedo exar un cable en algun tema de diseño html5,css3, mediaqueries phonegap etc... nose por devolverte tu tiempo tio ;)


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 1 Noviembre 2012, 20:06 pm
loes espacios puedes añadirlos sin problemas , lo que no puedes es añadir un espacio después del "="


Código:
INPUT_NAME=Nombre con espacios
Bien

Código:
INPUT_NAME= Nombre con espacios
Mal

en un rato edito el post de la otra página y hago ejecutable

PD: Quizás necesite aprender en un tiempo el CSS3, te tomo la palabra xD

saludos

EDITO: Listo


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 1 Noviembre 2012, 20:20 pm
Ni lo dudes elektro temas de html5 css3 responsive design , lo que necesites tengo material didactico  y t puedo hacer los ejemplos q necesites ;)


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 1 Noviembre 2012, 20:51 pm
hay un problema tio los links llevan tildes... y  peta por el utf8... he pasado en vez de las tildes el correspondiente codificado como ó  y similares pero peta iwal. Tienes solucion???


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 1 Noviembre 2012, 21:49 pm
hay un problema tio los links llevan tildes... y  peta por el utf8... he pasado en vez de las tildes el correspondiente codificado como ó  y similares pero peta iwal. Tienes solucion???

que trabajo me das  :-X en realidad es culpa mía por no prevenir una posible incompatibilidad de caracteres xD

PD: Asegúrate de guardar el login.txt en codificación ANSI sinó no va a funcionar.

Código
  1. # -*- coding: ISO-8859-1 -*-
  2.  
  3. # 5ª edición
  4.  
  5. require 'watir-webdriver'
  6.  
  7. if not ARGV.empty? then FILE = ARGV[0] else FILE = 'C:\Windows\Login.txt' end
  8.  
  9. File.open(FILE, 'r+').each_line do |line|
  10.    if line['URL']         then $URL         = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  11.    if line['USER_TYPE']   then $USER_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  12.    if line['USER_NAME']   then $USER_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  13.    if line['USER_TEXT']   then $USER_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  14.    if line['PASS_TYPE']   then $PASS_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  15.    if line['PASS_NAME']   then $PASS_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  16.    if line['PASS_TEXT']   then $PASS_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  17.    if line['BUTTON_TYPE'] then $BUTTON_TYPE = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end    
  18.    if line['BUTTON_NAME'] then $BUTTON_NAME = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  19.    if line['LINK1_TYPE']  then $LINK1_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end    
  20.    if line['LINK1_NAME']  then $LINK1_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  21.    if line['LINK2_TYPE']  then $LINK2_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end    
  22.    if line['LINK2_NAME']  then $LINK2_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  23. end
  24.  
  25. print "
  26.  
  27. INFO:
  28.  
  29. [+] URL:
  30.    #{$URL}
  31.  
  32. [+] Usuario:
  33.    Atributo = #{$USER_TYPE}
  34.    Nombre   = #{$USER_NAME}
  35.    Texto    = #{$USER_TEXT}
  36.  
  37. [+] Contraseña:
  38.    Atributo = #{$PASS_TYPE}
  39.    Nombre   = #{$PASS_NAME}
  40.    Texto    = #{$PASS_TEXT}
  41.  
  42. [+] Botón:
  43.    Atributo = #{$BUTTON_TYPE}
  44.    Nombre   = #{$BUTTON_NAME}
  45.  
  46. [+] Link 1:
  47.    Atributo = #{$LINK1_TYPE}
  48.    Nombre   = #{$LINK1_NAME}
  49.  
  50. [+] Link 2:
  51.    Atributo = #{$LINK2_TYPE}
  52.    Nombre   = #{$LINK2_NAME}
  53.  
  54. "
  55.  
  56. browser = Watir::Browser.new
  57. browser.goto($URL)
  58. browser.text_field($USER_TYPE => $USER_NAME).set $USER_TEXT
  59. browser.text_field($PASS_TYPE => $PASS_NAME).set $PASS_TEXT
  60. browser.button($BUTTON_TYPE=> $BUTTON_NAME).click
  61. browser.link($LINK1_TYPE=> $LINK1_NAME).click
  62. browser.link($LINK2_TYPE=> $LINK2_NAME).click
  63. #browser.close

Código:
# Valores para XXXX_TYPE: id, title, name, tag_name, value, index, text, etc...
# Importante: No dejar espacios en las líneas entre el caracter "="

URL=http://foro.elhacker.net/login.html

USER_TYPE=name
USER_NAME=user
USER_TEXT=Nombre de usuario

PASS_TYPE=name
PASS_NAME=passwrd
PASS_TEXT=Contraseña

BUTTON_TYPE=tag_name
BUTTON_NAME=Ingresar

LINK1_TYPE=text
LINK1_NAME=Dudas Generales

LINK2_TYPE=text
LINK2_NAME=Dud´´´´as Generales

ejecutable: http://exoshare.com/download.php?uid=VOXC0Q9I


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 1 Noviembre 2012, 21:58 pm
Citar
que trabajo me das   en realidad es culpa mía por no prevenir una posible incompatibilidad de caracteres xD

Lo se y te pido disculpas por el lio, a la vez que te lo agradezco ;)  funciona perfecto!!! ya sabes para temas de desarrollo aki estoy ;) me mandas un mp o un mail ok??

Un saludo!


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 2 Noviembre 2012, 16:03 pm
Vale  ya tengo ruby, me iniciado he creado nas cuantas clases y demas , esta interesante.

Tambien he compilado mis programas con ocra.

Pero al intentar  compilar tu escript pero con watir el de ie, en vez del de mozilla , que  evidentemente e preinstalado , obtengo este error:
Código:
C:\>ocra --output navegante.exe navegante.rb
=== Loading script to check dependencies


INFO:

[+] URL:
    http://ggg.es/privado

[+] Usuario:
    Atributo = name
    Nombre   = usuario
    Texto    = admin

[+] Contraseña:
    Atributo = name
    Nombre   = clave
    Texto    = gfgfddf

[+] Botón:
    Atributo = tag_name
    Nombre   = Acceder

[+] Link 1:
    Atributo = text
    Nombre   = Actualización

[+] Link 2:
    Atributo = text
    Nombre   = Exportar Artículos Ahora

C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-classic/elemen
t.rb:66:in `assert_exists': Unable to locate element, using {:tag_name=>"Acceder
"} (Watir::Exception::UnknownObjectException)
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-c
lassic/element.rb:419:in `perform_action'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-c
lassic/element.rb:276:in `click!'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/watir-classic-3.3.0/lib/watir-c
lassic/element.rb:218:in `click'
        from C:/navegante.rb:59:in `<top (required)>'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ocra-1.3.0/bin/ocra:1146:in `lo
ad'
        from C:/Ruby193/lib/ruby/gems/1.9.1/gems/ocra-1.3.0/bin/ocra:1146:in `<t
op (required)>'
        from C:/Ruby193/bin/ocra:23:in `load'
        from C:/Ruby193/bin/ocra:23:in `<main>'

C:\>


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 2 Noviembre 2012, 16:25 pm
postea el script que tienes para comprobar que todo está correctamente :-/

Si estás usando esta línea en tu script, eliminala y deja que termine la ejecución, con watir y watir-webdriver a mi también me daba problemas:
Código
  1. exit if Object.const_defined?(:Ocra)

un saludo


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 2 Noviembre 2012, 16:44 pm
es tu script simplemente he cambiado la gema por la de ie:
Código:
# -*- coding: ISO-8859-1 -*-


require 'watir'

if not ARGV.empty? then FILE = ARGV[0] else FILE = 'C:\Windows\Login.txt' end

File.open(FILE, 'r+').each_line do |line|
    if line['URL']         then $URL         = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['USER_TYPE']   then $USER_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['USER_NAME']   then $USER_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['USER_TEXT']   then $USER_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['PASS_TYPE']   then $PASS_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['PASS_NAME']   then $PASS_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['PASS_TEXT']   then $PASS_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['BUTTON_TYPE'] then $BUTTON_TYPE = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['BUTTON_NAME'] then $BUTTON_NAME = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['LINK1_TYPE']  then $LINK1_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['LINK1_NAME']  then $LINK1_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['LINK2_TYPE']  then $LINK2_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['LINK2_NAME']  then $LINK2_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
end

print "

INFO:

[+] URL:
    #{$URL}

[+] Usuario:
    Atributo = #{$USER_TYPE}
    Nombre   = #{$USER_NAME}
    Texto    = #{$USER_TEXT}

[+] Contraseña:
    Atributo = #{$PASS_TYPE}
    Nombre   = #{$PASS_NAME}
    Texto    = #{$PASS_TEXT}

[+] Botón:
    Atributo = #{$BUTTON_TYPE}
    Nombre   = #{$BUTTON_NAME}

[+] Link 1:
    Atributo = #{$LINK1_TYPE}
    Nombre   = #{$LINK1_NAME}

[+] Link 2:
    Atributo = #{$LINK2_TYPE}
    Nombre   = #{$LINK2_NAME}

"

browser = Watir::Browser.new
browser.goto($URL)
browser.text_field($USER_TYPE => $USER_NAME).set $USER_TEXT
browser.text_field($PASS_TYPE => $PASS_NAME).set $PASS_TEXT
browser.button($BUTTON_TYPE=> $BUTTON_NAME).click
browser.link($LINK1_TYPE=> $LINK1_NAME).click
browser.link($LINK2_TYPE=> $LINK2_NAME).click
#browser.close


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 2 Noviembre 2012, 17:29 pm
El problema es que hay algo que Ocra está omitiendo (según parece algo de AutoIt), y aparte de eso watir se hace complicado de compilar con ocra así que...

usa el buscador de windows y copia la dll "autoitx3.dll" de la carpeta "win32ole" de Ruby, la copias junto a tu script para añadir manualmente la dll, así:
Código:
ocra navegante.rb AutoItX3.dll

Con este script:
Código
  1. # -*- coding: ISO-8859-1 -*-
  2.  
  3. require 'watir'
  4. require 'watir-classic'
  5.  
  6. exit if Object.const_defined?(:Ocra)
  7.  
  8. AutoIt_dll = "\"" + File.dirname(__FILE__).gsub("/","\\")+"\\AutoItX3.dll" + "\""
  9.  
  10. if not ARGV.empty? then FILE = ARGV[0] else FILE = 'C:\Windows\Login.txt' end
  11.  
  12. File.open(FILE, 'r+').each_line do |line|
  13.    if line['URL']         then $URL         = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  14.    if line['USER_TYPE']   then $USER_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  15.    if line['USER_NAME']   then $USER_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  16.    if line['USER_TEXT']   then $USER_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  17.    if line['PASS_TYPE']   then $PASS_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  18.    if line['PASS_NAME']   then $PASS_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  19.    if line['PASS_TEXT']   then $PASS_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  20.    if line['BUTTON_TYPE'] then $BUTTON_TYPE = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  21.    if line['BUTTON_NAME'] then $BUTTON_NAME = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  22.    if line['LINK1_TYPE']  then $LINK1_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  23.    if line['LINK1_NAME']  then $LINK1_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  24.    if line['LINK2_TYPE']  then $LINK2_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
  25.    if line['LINK2_NAME']  then $LINK2_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
  26. end
  27.  
  28. print "
  29.  
  30. INFO:
  31.  
  32. [+] URL:
  33.    #{$URL}
  34.  
  35. [+] Usuario:
  36.    Atributo = #{$USER_TYPE}
  37.    Nombre   = #{$USER_NAME}
  38.    Texto    = #{$USER_TEXT}
  39.  
  40. [+] Contraseña:
  41.    Atributo = #{$PASS_TYPE}
  42.    Nombre   = #{$PASS_NAME}
  43.    Texto    = #{$PASS_TEXT}
  44.  
  45. [+] Botón:
  46.    Atributo = #{$BUTTON_TYPE}
  47.    Nombre   = #{$BUTTON_NAME}
  48.  
  49. [+] Link 1:
  50.    Atributo = #{$LINK1_TYPE}
  51.    Nombre   = #{$LINK1_NAME}
  52.  
  53. [+] Link 2:
  54.    Atributo = #{$LINK2_TYPE}
  55.    Nombre   = #{$LINK2_NAME}
  56.  
  57. "
  58.  
  59. system("regsvr32 /s AutoIt_dll")
  60.  
  61. browser = Watir::Browser.new
  62. browser.goto($URL)
  63. browser.text_field($USER_TYPE => $USER_NAME).set $USER_TEXT
  64. browser.text_field($PASS_TYPE => $PASS_NAME).set $PASS_TEXT
  65. browser.button($BUTTON_TYPE=> $BUTTON_NAME).click
  66. browser.link($LINK1_TYPE=> $LINK1_NAME).click
  67. browser.link($LINK2_TYPE=> $LINK2_NAME).click
  68. #browser.close
  69.  
  70. system("regsvr32 /u /s AutoIt_dll")

PD: A mi me tira error todo el rato del OLE porque no tengo internet explorer, pero creo que te debería funcionar como está.

saludos


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 2 Noviembre 2012, 18:15 pm
He probado primero a compilar con la gema de mozilla con el ejemplo que funcionaba por descartar que sea problema de mi configuración y compila correctamente.
Dicho esto... he probado con la dll que me comentas y al compilar me da un error pero se cierra la cmd  y no puedo capturarlo mas que imprimiendo pantalla asi q te lo dejo como imagen ... :P
(http://s2.subirimagenes.com/imagen/previo/thump_8097214error.png) (http://www.subirimagenes.com/imagen-error-8097214.html)

Por cierto como detectaste el posible error, y llegaste a la conclusionde la dll???

Por cierto la dll no la tiene mi sistema a si que la descargue  y puse donde tengo el rb para poder compilarlo con ocra.... nose si ademas debo meterlo en windows en alguna carpeta...
Gracias

EDITO:
Ahora que me doy cuenta tengo al gema watir pero no la clasic...  pero al e bajado  y vuelto a probar y sale lo mismo.


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 2 Noviembre 2012, 19:03 pm
El intérprete te dice el error, solo hay que pararse a leer, así lo deducí xD, luego busqué en San Google y me topé con esto: http://johnallen.us/?p=278

fíjate en el nuevo error de la imagen que has posteado, require no puede cargar "win32/registry"

Ocra no me daba ese error, pero bueno, parece que se a olvidado de incluirla en tu equipo, añade esto al script de antes:
Código
  1. require 'win32/registry'

Y usa esta dll para asegurarnos: exoshare.com/download.php?uid=NZ2SSJII (http://exoshare.com/download.php?uid=NZ2SSJII)

PD: La dll no hay que meterla en ninguna carpeta, se incluye dentro del exe porque según lei Ocra omite esa dll con Watir, no la incluye y por lo tanto tampoco la registra.

saludos


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 3 Noviembre 2012, 00:50 am
Algo hemos avanzado,he metido tu dll, ya abre le browser y mete datos, pero falla  al intentar acceder, relacionado con watir-clasic no?
(http://s3.subirimagenes.com:81/imagen/previo/thump_8097959error.png) (http://www.subirimagenes.com/imagen-error-8097959.html)
 el codigo es
Código:
# -*- coding: ISO-8859-1 -*-

require 'watir'
require 'watir-classic'
require 'win32/registry'

exit if Object.const_defined?(:Ocra)

AutoIt_dll = "\"" + File.dirname(__FILE__).gsub("/","\\")+"\\AutoItX3.dll" + "\""

if not ARGV.empty? then FILE = ARGV[0] else FILE = 'C:\Windows\Login.txt' end

File.open(FILE, 'r+').each_line do |line|
    if line['URL']         then $URL         = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['USER_TYPE']   then $USER_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['USER_NAME']   then $USER_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['USER_TEXT']   then $USER_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['PASS_TYPE']   then $PASS_TYPE   = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['PASS_NAME']   then $PASS_NAME   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['PASS_TEXT']   then $PASS_TEXT   = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['BUTTON_TYPE'] then $BUTTON_TYPE = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['BUTTON_NAME'] then $BUTTON_NAME = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['LINK1_TYPE']  then $LINK1_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['LINK1_NAME']  then $LINK1_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
    if line['LINK2_TYPE']  then $LINK2_TYPE  = line.split('=').last.chomp.force_encoding("ISO-8859-1").to_sym end
    if line['LINK2_NAME']  then $LINK2_NAME  = line.split('=').last.chomp.force_encoding("ISO-8859-1")        end
end

print "

INFO:

[+] URL:
    #{$URL}

[+] Usuario:
    Atributo = #{$USER_TYPE}
    Nombre   = #{$USER_NAME}
    Texto    = #{$USER_TEXT}

[+] Contraseña:
    Atributo = #{$PASS_TYPE}
    Nombre   = #{$PASS_NAME}
    Texto    = #{$PASS_TEXT}

[+] Botón:
    Atributo = #{$BUTTON_TYPE}
    Nombre   = #{$BUTTON_NAME}

[+] Link 1:
    Atributo = #{$LINK1_TYPE}
    Nombre   = #{$LINK1_NAME}

[+] Link 2:
    Atributo = #{$LINK2_TYPE}
    Nombre   = #{$LINK2_NAME}

"

system("regsvr32 /s AutoIt_dll")

browser = Watir::Browser.new
browser.goto($URL)
browser.text_field($USER_TYPE => $USER_NAME).set $USER_TEXT
browser.text_field($PASS_TYPE => $PASS_NAME).set $PASS_TEXT
browser.button($BUTTON_TYPE=> $BUTTON_NAME).click
browser.link($LINK1_TYPE=> $LINK1_NAME).click
browser.link($LINK2_TYPE=> $LINK2_NAME).click
#browser.close

system("regsvr32 /u /s AutoIt_dll")
Y en la cmd para compilar:
ocra navegante.rb AutoItX3.dll


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 3 Noviembre 2012, 10:44 am
¿El error solo lo tienes al usar ocra?
prueba así:

Código
  1. browser.link(:text => /$LINK1_NAME/).click
  2. browser.link(:text => /$LINK2_NAME/).click


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: ferminako en 3 Noviembre 2012, 12:22 pm
Al compilarlo no da error, es al ejecutar el exe,  abre el ie, pone el user y pass y peta, tb con estos ultimos cambios. Desisto jajaj y te dejo en paz, ya lo tengo funcional en firefox , asi que  suficiente , gracias por toda tu ayuda elektro ;)


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: e-pepillo en 2 Febrero 2013, 14:14 pm
Hola EleKtro H@cker:
Tengo un archivo en php para que los usuarios de mi web se logueen y accedan, pero no se cómo hacer para que una vez comprobado que están registrados en la base de datos Myqsl vayan a una determinada página, es decir, lo que no se es con qué instrucción redirigirlos a una web concreta.
Este es el código del archivo functions.php

Código
  1. <?php
  2. function verificar_datos($usuario,$password) {
  3.   $query = "SELECT password FROM ".usuarios." WHERE username='$usuario'";
  4.   $query = mysql_query($query);
  5.   $query = mysql_fetch_array($query);  
  6.   if ($password==$query['password']) {
  7.        echo "Los datos han sido introducidos satisfactoriamente";  
  8.  
  9.  
  10. return true;
  11.  
  12.  
  13.  
  14.   } else {
  15.      return false;
  16.   }
  17. }
  18. function retrieve_data($usuario,$password) {
  19.   $query = "SELECT username,id FROM ".usuarios." WHERE username='$usuario'";
  20.   $query = mysql_query($query);
  21.   if ($query = mysql_fetch_array($query)) {
  22.      define("USER-NAME",$query['username']);
  23.      define("USER-ID",$query['id']);
  24.   }
  25. }
  26. function access_denied($page) {
  27.   if (!LOGGED_IN) {
  28.      header("Location: login.php?nextURL=" .$page);
  29.      return false;
  30.   } else {
  31.  
  32.   }
  33. }
  34.  
  35. function display_error($string) {
  36.   echo '<H1>ERROR USUARIO O CONTRASEÑA ERRONEA</H1>:'.$string;
  37. }
  38. ?>


Título: Re: [RUBY] script para loguearse en una web e ir a una url
Publicado por: Eleкtro en 2 Febrero 2013, 15:27 pm
Bienvenido al foro e-pepillo, pero hay unas reglas que seguir... no está permitido revivir posts antiguos para hacer preguntas, lo correcto es que crees un nuevo post para formular tu pregunta, y debes usar el botón "Insertar código" para postear codes.

Yo no sé mucho de programación web, en php no puedo ayudarte.

Tema cerrado.