SVN: toys/rsget.pl/Get/MegaUpload

sparky sparky at pld-linux.org
Fri Dec 3 23:37:21 CET 2010


Author: sparky
Date: Fri Dec  3 23:37:21 2010
New Revision: 11943

Modified:
   toys/rsget.pl/Get/MegaUpload
Log:
- MU changed a lot (no more captcha), pushed what I've got so far


Modified: toys/rsget.pl/Get/MegaUpload
==============================================================================
--- toys/rsget.pl/Get/MegaUpload	(original)
+++ toys/rsget.pl/Get/MegaUpload	Fri Dec  3 23:37:21 2010
@@ -14,25 +14,7 @@
 uri: qr{megarotic\.com/(../)?\?d=}
 uri: qr{sexuploader\.com/(../)?\?d=}
 uri: qr{megavideo\.com/\?d=}
-status: OK 2010-07-12
-
-pre:
-	my @captcha_solver;
-
-	my $mu_font_db = data_file( "mu_font_db.gif" );
-	eval {
-		die "Font DB 'mu_font_db.gif' does not exist\n" unless $mu_font_db;
-
-		require Image::Magick;
-		my $dbf = new Image::Magick;
-		$dbf->Read( $mu_font_db );
-		die "Cannot open image $mu_font_db\n" unless $dbf->Get( "width" );
-	};
-	if ( $@ ) {
-		warn "MegaUpload: Unable to use native captcha solver: $@\n";
-	} else {
-		@captcha_solver = ( solver => \&mu_captcha );
-	}
+status: OK 2010-12-03
 
 unify:
 	my ($id) = /d=([A-Z0-9]*)/i;
@@ -44,176 +26,18 @@
 start:
 	GET( unify( $-{_uri} ) );
 
-stage_init:
-	RESTART( 10 * 60, "temporarily blocked" )
-		if m{document\.location='http://www\.megaupload\.com/\?c=msg'};
-
-	ERROR( "file not found" )
-		if /Unfortunately, the link you have clicked is not available/
-			or /This file has expired due to inactivity/;
-	m{<TD valign="middle" align="left" .*?width="500">(.*?)</TD>}s;
-	my @f = map m#<font.*?>\s*(.*?)\s*</font>#g, $1;
-	my $name = $f[1];
-	$name =~ s/(.*)\.(\..{1,5})$/$1\0$2/; # mark truncated name
-	INFO( iname => $name, asize => $f[5] );
-
-	DELAY( 600, "temporarily unavailable" )
-		if /The file you are trying to access is temporarily unavailable/;
-
-	ERROR( "not allowed: file larger than 1GB" )
-		if /The file that you're trying to download is larger than 1 GB/;
-
-	if ( /The file you're trying to download is password protected/ ) {
-		ERROR( "password required" ) unless exists $-{_opts}->{pass};
-
-		! my $form = $self->form( id => "passwordform" );
-		$form->set( filepassword => $-{_opts}->{pass} );
-		CLICK_NEXT( stage_last, $form->post() );
-	}
-
-	! $-{form} = $self->form( id => "captchaform" );
-
-stage_captcha:
-	! m{<img src="(http://.*?mega.*?\.com/gencap\.php\?[0-9a-f]+\.gif)"};
-
-	GET( $1, keep_referer => 1 );
-
-	CAPTCHA( qr/[A-HKMNP-Z]{3}[1-9]{1}/,
-		@captcha_solver,
-		process => \&mu_decaptcha
-	);
-
-	RESTART( -1, "can't read captcha" ) unless defined $_;
-
-	$-{form}->set( captcha => $_ );
-	GET( $-{form}->post() );
-
-	$-{form} = $self->form( id => "captchaform" );
-	if ( $-{form} ) {
-		CAPTCHA_RESULT( "FAIL" );
-		PRINT( "invalid captcha" );
-		GOTO stage_captcha;
-	} else {
-		CAPTCHA_RESULT( "OK" );
-	}
-
-stage_last:
-	ERROR( "invalid password" )
-		if /The file you're trying to download is password protected/;
+	! m{<strong>File size:</strong> ($STDSIZE)<br />}o;
+	my $size = $1;
 
-	! /<a href="(.*?)".*IMG SRC=".*?but_dnld_regular.gif/;
+	! m{<div class="down_butt_pad1" style="display:none;" id="downloadlink"><a href="(.*/files/.*/(.*))" class="down_butt1"};
 	$-{file_uri} = $1;
+	my $name = $2;
+
+	INFO( name => $name, asize => $size );
 
 	! /count=([0-9]+);/;
 	WAIT( $1, "starting download" );
 
 	CLICK_DOWNLOAD( $-{file_uri} );
 
-	GOTO stage_init if m{/download\.jpg'.*Filename:}s;
-
-	RESTART( - irand( 60, 300 ), "limit reached" )
-		if /Download limit exceeded/;
-
-perl:
-	
-sub mu_decaptcha
-{
-	my $img = shift;
-	$img->color_filter( sub { shift } );
-	return $img->doublesize->ocr();
-}
-
-my %size = (
-	A => 28, B => 22, C => 21, D => 27, E => 16,
-	F => 16, G => 26, H => 26, K => 20, M => 38,
-	N => 28, P => 21, Q => 30, R => 22, S => 18,
-	T => 19, U => 26, V => 22, W => 40, X => 23,
-	Y => 18, Z => 18
-);
-
-my @db;
-
-sub mu_captcha_read_db()
-{
-	my $dbf = new Image::Magick;
-	$dbf->Read( $mu_font_db );
-	foreach my $pos ( 0..3 ) {
-		my @list = sort keys %size;
-		@list = (1..9) if $pos == 3;
-
-		my $height = 32;
-		my $width = 40;
-		my $left = $width * $pos;
-		$width = 22 if $pos == 3;
-		my $top = 0;
-	
-		my %db;
-		foreach my $char ( @list ) {
-			my $db = $dbf->Clone();
-			$db->Crop( width => $width, height => $height, x => $left, y => $top );
-			$db{$char} = $db;
-			$top += 32;
-		}
-		push @db, \%db;
-	}
-}
-
-sub mu_captcha_get_char
-{
-	my ($src, $db, $width, $x) = @_;
-
-	my $img = $src->Clone();
-	$img->Crop( width => $width, height => 32, x => $x, y => 0 );
-	$img->Extent( width => $width, height => 32, x => 0, y => 0 );
-
-	my $min_me = 1;
-	my $best_char = undef;
-	my @metric = ( metric => 'MEPP' );
-	foreach my $n ( keys %$db ) {
-		my $diff = $img->Compare( image => $db->{$n}, @metric );
-		if ( $diff and $diff =~ /Exception 410:.*metric/ ) {
-			@metric = ();
-			redo;
-		}
-		$diff = $img unless $diff;
-		my $me = $diff->Get( 'mean-error' );
-		if ( $me < $min_me ) {
-			$min_me = $me;
-			$best_char = $n;
-		}
-	}
-	return $best_char;
-}
-
-sub mu_captcha
-{
-	my $data_ref = shift;
-
-	mu_captcha_read_db() unless @db;
-
-	open IMAGE, '>', '.captcha.gif';
-	print IMAGE $$data_ref;
-	close IMAGE;
-
-	my $img = new Image::Magick;
-	my $x = $img->Read( '.captcha.gif' );
-	unlink '.captcha.gif';
-	return if length $x;
-
-	my ($width, $height) = $img->Get( 'columns', 'rows' );
-
-	my $bg = new Image::Magick;
-	$bg->Set( size => $width."x32" );
-	$bg->Read( "xc:white" );
-	$bg->Composite( image => $img );
-
-	my @cap;
-	push @cap, mu_captcha_get_char( $bg, $db[0], 40, 0 );
-	push @cap, mu_captcha_get_char( $bg, $db[1], 40, $size{$cap[0]} - 6 );
-	push @cap, mu_captcha_get_char( $bg, $db[2], 40, $width - 56 );
-	push @cap, mu_captcha_get_char( $bg, $db[3], 22, $width - 22 );
-
-	return join "", @cap;
-}
-
 # vim: filetype=perl:ts=4:sw=4


More information about the pld-cvs-commit mailing list