Autor
|
Tema: [RUBY] script para loguearse en una web e ir a una url (Leído 26,038 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
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 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. # -*- coding: ISO-8859-1 -*- # 5ª edición require 'watir-webdriver' 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
# 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
|
|
|
En línea
|
|
|
|
ferminako
Desconectado
Mensajes: 19
|
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!
|
|
« Última modificación: 1 Noviembre 2012, 22:01 pm por ferminako »
|
En línea
|
|
|
|
ferminako
Desconectado
Mensajes: 19
|
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:\>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:\>
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
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: exit if Object.const_defined?(:Ocra)
un saludo
|
|
|
En línea
|
|
|
|
ferminako
Desconectado
Mensajes: 19
|
es tu script simplemente he cambiado la gema por la de ie: # -*- 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
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
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í: ocra navegante.rb AutoItX3.dll Con este script: # -*- coding: ISO-8859-1 -*- require 'watir' require 'watir-classic' 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")
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
|
|
« Última modificación: 2 Noviembre 2012, 17:34 pm por EleKtro H@cker »
|
En línea
|
|
|
|
ferminako
Desconectado
Mensajes: 19
|
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 ... 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.
|
|
« Última modificación: 2 Noviembre 2012, 18:29 pm por ferminako »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
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=278fí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: require 'win32/registry'
Y usa esta dll para asegurarnos: exoshare.com/download.php?uid=NZ2SSJIIPD: 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
|
|
« Última modificación: 2 Noviembre 2012, 19:05 pm por EleKtro H@cker »
|
En línea
|
|
|
|
ferminako
Desconectado
Mensajes: 19
|
Algo hemos avanzado,he metido tu dll, ya abre le browser y mete datos, pero falla al intentar acceder, relacionado con watir-clasic no? el codigo es # -*- 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
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
¿El error solo lo tienes al usar ocra? prueba así: browser.link(:text => /$LINK1_NAME/).click browser.link(:text => /$LINK2_NAME/).click
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Loguearse en una web desde vb6
Programación Visual Basic
|
Edu
|
6
|
7,539
|
10 Septiembre 2010, 23:13 pm
por Edu
|
|
|
[Script]Script para calcular offset de un ejectuable
Ingeniería Inversa
|
.:UND3R:.
|
4
|
5,090
|
29 Septiembre 2011, 16:13 pm
por .:UND3R:.
|
|
|
[Shell script] Un pequeño script para ver temperaturas.
Scripting
|
manute_powa
|
3
|
5,942
|
7 Enero 2012, 02:18 am
por manute_powa
|
|
|
Problema Script Ruby
Scripting
|
daniel.r.23
|
1
|
2,297
|
30 Marzo 2013, 22:48 pm
por RyogiShiki
|
|
|
armitage falla al loguearse
Seguridad
|
Borito30
|
0
|
2,025
|
26 Febrero 2017, 01:52 am
por Borito30
|
|