SVN: toys/rsget.pl/Get/FileFactory
sparky
sparky at pld-linux.org
Sun Jul 11 19:49:22 CEST 2010
Author: sparky
Date: Sun Jul 11 19:49:22 2010
New Revision: 11646
Modified:
toys/rsget.pl/Get/FileFactory
Log:
- updated, mostly rewritten, to use recaptcha
Modified: toys/rsget.pl/Get/FileFactory
==============================================================================
--- toys/rsget.pl/Get/FileFactory (original)
+++ toys/rsget.pl/Get/FileFactory Sun Jul 11 19:49:22 2010
@@ -10,7 +10,7 @@
web: "http://filefactory.com/"
tos: "http://filefactory.com/legal/terms.php"
uri: qr{filefactory\.com/file/[0-9a-z]{6}}
-status: BROKEN 2010-07-11
+status: OK 2010-07-11
start:
GET( $-{_uri} );
@@ -31,31 +31,43 @@
RESTART( $1 / 1000, "free limit reached" ) if $1 > 0;
}
- ! m#var.*?eval.*?fromCharCode.*?"(\?key=.*?)"#;
- GET( "/file/getLink.js" . $1, keep_referer => 1 );
-
- ! s/^(.*)var \S+=function\(\){ var \S+=(.*?);.*//m;
- my ($vars, $toeval) = ($1, $2);
-
- my %vars = map { /var\s+(\S+?)\s*=\s*'(.*?)'/ } split /;/, $vars;
- my $code = join "", map { /'(.*)'/ ? $1 : $vars{ $_ } } split /\s*\+\s*/, $toeval;
-
- CLICK( $code );
-
- ! m#<span class="countdown".*?>(\d+)</span>#;
- $-{wait} = $1;
- RESTART( $-{wait}, "free limit reached" ) if $-{wait} > 120;
-
- ! m#var.*?eval.*?fromCharCode.*?"(\?key=.*?)"#;
- GET( "/file/getLink.js" . $1, keep_referer => 1 );
+ $-{post} = {
+ recaptcha_shortencode_field => "undefined",
+ };
+ ! m#(check):'([0-9a-f]{32})'#;
+ $-{post}->{$1} = $2;
+
+ ! m#Recaptcha\.create\("([a-zA-Z0-9]{40})"#;
+ CLICK( "http://www.google.com/recaptcha/api/challenge?k=$1&ajax=1&cachestop=" . rand, keep_referer => 1 );
+
+ ! m{challenge : '(\S+?)',};
+ $-{post}->{recaptcha_challenge_field} = $1;
+ GET( "http://www.google.com/recaptcha/api/image?c=$1", keep_referer => 1 );
+
+ CAPTCHA(
+ qr/\S+ \S+/
+ );
+
+ RESTART( 0, "Captcha not solved" ) unless $_;
+
+ $-{post}->{recaptcha_response_field} = $_;
+ GET( "http://www.filefactory.com/file/checkCaptcha.php", post => $-{post}, keep_referer => 1 );
+
+ if ( /{status:"fail",message:"Entered code was incorrect\."}/ ) {
+ CAPTCHA_RESULT( "FAIL" );
+ RESTART( 0, "Captcha failed" );
+ } else {
+ CAPTCHA_RESULT( "OK" );
+ }
- ! s/^(.*)var \S+=function\(\){ var \S+=(.*?);.*//m;
- my ($vars, $toeval) = ($1, $2);
+ ! m#{status:"ok",path:"(.*?)"}#;
+ GET( $1 );
- my %vars = map { /var\s+(\S+?)\s*=\s*'(.*?)'/ } split /;/, $vars;
- $-{file_uri} = join "", map { /'(.*)'/ ? $1 : $vars{ $_ } } split /\s*\+\s*/, $toeval;
+ ! m#<a href="(\S+)" id="downloadLinkTarget">#;
+ $-{file_uri} = $1;
- WAIT( $-{wait}, "starting download" );
+ ! m#<input type="hidden" id="startWait" value="(\d+)"#;
+ WAIT( $1, "starting download" );
CLICK_DOWNLOAD( $-{file_uri} );
More information about the pld-cvs-commit
mailing list