Login a un foro desde Java

Que tal compañeros

Buscando en la red, encontré una respuesta para loggearme en algún foro desde este foro (valga la redundancia):
http://www.dreamincode.net/forums/topic/187860-java-login-to-forum-netwo...

Sin embargo no me ha funcionado porque no encuentro bien la relación de los parámetros dentro del bloque try/catch... por ejemplo, si quisiera loggearme aqui en JavaMéxico, mis fracciones de código vitales para ese login son:

---------------------------------
URLObj = new URL("http://www.javamexico.org/")
...
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(connect.getOutputStream()));
writer.write("name=nekio&pass=miPassword&user-login-form=post");
writer.close();
---------------------------------

Viendo el codigo HTML del formulario de login en este foro (JavaMéxico) es que saque los nombres de los parámetros, pero no estoy seguro que sean esos.

Alguién sabe concretamente como puedo reconocer los nombres de los parametros del loggin de cualquier foro?

Gracias por su apoyo

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Y despues vas a publicar

Y despues vas a publicar contenido automáticamente? :) tipo... spam?

Como sea, la respuesta es: tienes que ver todos los elementos de tipo input que estén dentro del formulario. Luego el servidor te va a devolver una cookie que tienes que guardar y volverla a pasar en la siguiente peticion.

Imagen de Shadonwk

che gacho mi amigo Oscar

che gacho mi amigo Oscar jajaj :p

Ja ja por que? Ademas la

Ja ja por que? Ademas la respuesta es correcta.

Imagen de rodrigo salado anaya

Selenium & HtmlUnit

Puedes usar HtmlUnitDriver de selenium por ejemplo:

// No se si esto corra pero es una idea que seguro te ayudara

def driver = new HtmlUnitDriver()
//driver.setJavascriptEnabled(true); solo usalo si vas a usar JavaScript!
driver.get(''http://www.javamexico.org/")
log.info driver.getPageSource()

WebElement usr = driver.findElement(By.name('usuario'))
usr.sendKeys("Nick XYZ")

WebElement pws = driver.findElement(By.name('clave'))
pws.sendKeys("UuYyOoPp")

WebElement intro = driver.findElement(By.cssSelector("#entrar"))
intro.click()

driver.manage().cookies.each { ck ->
            log.info ck
}

Y chan chan, como comente no se si esto sirva tal cual pero estoy seguro que con htmlunit y el webdriver de selenium lo puedes lograr.

Saludos.

Imagen de rodrigo salado anaya

! Geb&HtmlUnit

O podrías usar Geb, pero Geb con HtmlUnit apesta, no se puede ni usar decentemente JavaScript "js", en fin no estas obligado a usar HtmlUnitDriver.

Imagen de rodrigo salado anaya

HttpClient ?

Incluso te pudiera servir darle una vistazo a HttpClient (http://hc.apache.org/httpclient-3.x/) yo no lo se usar pero en un proyecto de trabajo lo usan justo para lo que preguntas. No puedes dar clic o modificar inputs no es para eso pero no chicle y te ayuda.

Imagen de nekio

Algo así

Si, mi idea es saturar el servidor de Java México con SPAM, jejejeje, nah!!! no es cierto.

En realidad lo que quiero es ver como loggearme a servidores como MEGA, PutLocker, y algunos foros para extraer mi información de usuario y vaciarla en una aplicación Java de escritorio.

Gracias por tu respuesta colega

Jejeje lo se. Además el

Jejeje lo se. Además el evitar spam es responsabilidad del servidor. Pues si, como dice Rodrigo, puedes usar la clase HttpClient para tratar de emular el funcionamiento de un browser, el inconveniente es que tienes que primero identificar todos los campos del formulario que tienes que enviar y luego seguir la secuencia de validación que el servidor establezca; en la mayoría de los casos es un(a) cookie.

El gran inconveniente es que si le cambian el nombre de uno de esos parámetros tu programa se romperá.

Intenta primero ver si la página tiene un API a la cual le puedas programar las peticiones. Si no lo tiene, tendrás que revisar como funciona cada pagina para obtener la información y los mecanismos anti spam que tenga (ie re-catpcha etc )

Si logras que tu cliente se comporte como un browser con un humano por detras, no deberias de tener ningún problema

Suerte.

Imagen de nekio

Listo!

Gracias Rodrigo, me funcionó de maravilla la librería que nos comentas, y pues aunque está casado con el codigo fuente del foro (como menciona Oscar) al que necesito loggearme (pues no tiene un API) me es útil la herramienta.

Gracias por su apoyo