Inicio > Java > Jugando con la API de Captcha trader con Java

Jugando con la API de Captcha trader con Java

Para los que no lo conozca Captcha Trader es una herramienta que permite autocompletar captchas. Están disponibles los plugins para JDownloader y Mipony. Todo esto acompañado de unos créditos que tienes que ir recargando ayudando a la página.
El modo en que se ayuda a la página es el siguiente: la página te da un captcha y tu le dices lo que pone, si es correcto obtentrás 7 captchas automaticos. Esto último se puede hacer vía web o mediante el programa llamado Captcha Notifier.

Pues hoy vamos a ver como funcionan (a groso modo) tanto los plugins como el Captcha Notifier.

Lo primero es crearnos un usuario en captchatrader.com y una vez hecho esto solicitar una contraseña de desarrollador. Para solicitar la contraseña pinchamos sobre Developers y después sobre Request one here. Rellenamos los campos y nos aparecerá la API KEY.


Lo siguiente que debemos hacer es en la misma página del captcha trader en la opción de Developer descargarnos la API para Java “CaptchaTrader.jar” y añadirla a nuestro nuevo proyecto (Si no sabes hacer esto último mírate esta otra entrada Añadir librerías externas en Eclipse.


También es necesario añadir una segunda librería, la “Apache Commons Codec” necesaria para poder ver las imágenes que recibamos del servidor. La librería está disponible en la página de apache Descargar librería de Codecs

Y a continuación el código

package captchaTraderEx;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Scanner;

import org.apache.commons.codec.binary.Base64;

import com.captchatrader.CaptchaTrader;

public class CaptchaTraderExample
{

	public static void main(String[] args) throws Exception
	{
		// Creamos un nuevo objeto CaptchaTrader donde pondremos nuestro usuario
		// y contraseña de la web
		CaptchaTrader captcha = new CaptchaTrader("Usuario", "contraseña");
		// Setearemos nuestra API KEY
		captcha.setApiKey("Vuestra KEY API");
		/* Nos mostrará nuestros creditos actuales */



		// *************************************************************
		// Lo primero que vamos a hacer es solicitar una imagen para que
		// nosotros le respondamos. Con esto conseguiremos 7 autocaptchas por
		// cada uno de los captchas introducidos.
		// ************************************************************* 

		/* Muestra el número actual de creditos disponibles (1 credito = 1*/
		// autocaptcha)
		System.out.println("Tienes " + captcha.getCredits() + " creditos");
		// Nos dirá aproximadamente cuando tardará en llegarnos el captcha (en
		// segundos)
		System.out.println("Tiempo de espera: " + captcha.getWaitTime());

		// Solicitamos un nuevo captcha (una imagen jpeg)
		String cadena = captcha.enqueue();
		// Eliminamos la información "inutil"
		cadena = cadena.substring("data:image/jpeg;base64".length());

		// Decodificamos la imagen en un array
		byte[] imagen = Base64.decodeBase64(cadena);
		// En este caso en lugar de mostrarla gráficamente he preferido
		// guardarla en un fichero
		File of = new File("foto.jpg");
		FileOutputStream osf = new FileOutputStream(of);
		osf.write(imagen);
		osf.flush();
		osf.close();

		System.out.print("Imagen recibida correctamente\n" + "Tienes: " + captcha.getWaitTime() + "segundos para contestar\n" + "Introduce la respuesta: ");

		String texto;
		Scanner teclado = new Scanner(System.in);
		texto = teclado.nextLine();
		// Enviamos al servidor nuestra respuesta
		captcha.answer(texto);

		// El servidor tarda cierto tiempo en comprobar que la info es correcta,
		// esperaremos 30 segundos y luego pulsaremos enter para ver nuestros
		// creditos
		System.out.println("Espera 30 segundos, escribe algo y pulsa enter");
		teclado.next();
		// Volvemos a mirar nuestos creditos
		System.out.println("Tienes " + captcha.getCredits() + " creditos");

		// Por último comentar que si no supiesemos la respuesta podemos hacer un
		// captcha.dequeue();
		// Seguido de un
		// captcha.enqueue();
		// para obtener la siguiente imagen



		// *************************************************************
		// Esta segunda parte del código veremos como darle una imagen al
		// servidor y que este nos devuelva la respuesta.
		// *************************************************************

		// Con esta línea el captcha trader nos devolverá automaticamente la
		// respuesta
		texto = captcha.submit(new File("Ruta de la imagen"));
		System.out.println(texto);

		// Por último para decirle a captcha trader si la respuesta es buena o no,
		// es decir, si la cadena recibida corresponede a la imagen enviada
		// lo hacemos con el método respond.
		if (teclado.nextLine().compareTo("s") == 0)
			captcha.respond(true);
		else
			captcha.respond(false);
	}
}
Anuncios
Categorías:Java
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: