Помогите с верблюдом: rapidshare downloader

Discussion in 'PHP' started by flatr0ze, 2 Sep 2009.

  1. flatr0ze

    flatr0ze New Member

    Joined:
    30 Jul 2009
    Messages:
    6
    Likes Received:
    3
    Reputations:
    0
    Гутен Таг, уважаемые!
    После гнобения трекеров, все чаще приходится прибегать к старым методам добычи вареза и прочей вкуснятины.
    Идея созрела в голове давно, но мотивация появилась лишь недавно.
    Состоит в следующем: скрипт, перл, запрос вида:
    Далее вкрипт на первой стадии находит сервер с файлом (и нам не приходится жать на кнопку "Free"), на второй выдергивает ссылку на сам файл (и нам не приходится ждать несколько минут для получения ссылки).
    Помощь нужна с третьей стадией - там появляется кнопка "Submit query", по истечению времени на которую надо смело нажать и получить файл. Тупо вгетом или еще как не получится скачать файл по добытой из второй стадии ссылки - он там есть только как аттачмент (а-ля веб-мэйл).
    Я так и не смог понять какой запрос сделать и что запостить чтобы файл полился в рабочую папку со скриптом, поэтому взываю к богам перла!
    *молится 10100101...*
    Лог финального запроса выглядит примерно вот так (из ФаерФокса, где все пашет нормально):
    Собственно, сам rapidie.pl:
    PHP:

    #!/usr/bin/perl
    # Title: RapiDIE
    # Description: rapidshare fast file downloading script
    # Version: 0.7.1
    # Author: flatr0ze

    use LWP::Simple;
    use 
    LWP::UserAgent;

    my $url $ARGV[0];

    # STAGE-I: Detecting our server
    my $html get($url);
    $html =~ /<form id="ff" action="(.*)" method="post">/;
    my $server = $1;
    print 
    "\nServer is:\t\t".$server."\n";

    # STAGE-II: Getting file location
    $trick LWP::UserAgent->new;

    my $request HTTP::Request->new(POST=>$server);
    $request->content_type('application/x-www-form-urlencoded');
    $request->content("dl.start=Free");
    my $result $trick->request($request);

    my $output $result->content;
    $output =~ /<input checked type="radio" name="mirror" onclick="document.dlf.action=\\'(.*)\\';" \/>/;
    my $file = $1;
    print 
    "File location is:\t".$file."\n\n";

    # STAGE-III: Downloading the file

    $ua LWP::UserAgent->new;

    my $req HTTP::Request->new(POST=>$server);
    $req->content_type('application/x-www-form-urlencoded');
    $req->content("mirror=on&x=55&y=79");
    my $res $ua->request($req);

    my $out $res->content;

    #print $out;

     
    #1 flatr0ze, 2 Sep 2009
    Last edited: 2 Sep 2009