abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:44 | Nová verze

    Byl vydán Mozilla Firefox 127.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 127 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    dnes 15:11 | Nová verze

    Byla vydána (𝕏) nová verze 9.5 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | IT novinky

    Společnost Raspberry Pi dnes vstoupila na Londýnskou burzu jako Raspberry Pi Holdings plc (investor).

    Ladislav Hagara | Komentářů: 0
    dnes 01:22 | IT novinky

    Do 17. června do 19:00 běží na Steamu přehlídka nadcházejících her Festival Steam Next | červen 2024 doplněná demoverzemi, přenosy a dalšími aktivitami. Demoverze lze hrát zdarma.

    Ladislav Hagara | Komentářů: 0
    včera 22:33 | IT novinky

    Apple na své vývojářské konferenci WWDC24 (Worldwide Developers Conference, keynote) představil řadu novinek: svou umělou inteligenci pojmenovanou jednoduše Apple Intelligence, iOS 18, visionOS 2, macOS Sequoia, iPadOS 18, watchOS 11, …

    Ladislav Hagara | Komentářů: 7
    včera 21:44 | Nová verze

    Vyšla nová verze XMPP (Jabber) klienta Gajim, která přidává podporu reakcí pomocí emoji (XEP-0444: Message Reactions) a citace zpráv (XEP-0461: Message Replies). Přehled dalších vylepšení je k dispozici na oficiálních stránkách.

    sonicpp | Komentářů: 1
    včera 15:00 | Nová verze

    Po po téměř roce vývoje od vydání verze 5.38 byla vydána nová stabilní verze 5.40 programovacího jazyka Perl (Wikipedie). Do vývoje se zapojilo 75 vývojářů. Změněno bylo přibližně 160 tisíc řádků v 1 500 souborech. Přehled novinek a změn v podrobném seznamu.

    Ladislav Hagara | Komentářů: 7
    včera 12:00 | Zajímavý článek

    Uroš Popović popisuje, jak si nastavit Linux na desce jako Raspberry Pi Zero, aby je šlo používat jako USB „flešku“.

    Fluttershy, yay! | Komentářů: 1
    včera 08:44 | Zajímavý software

    Andreas Kling oznámil, že jelikož už se nevěnuje nezávislému operačnímu systému SerenityOS, ale výhradně jeho webovému prohlížeči Ladybird, přičemž vyvíjí primárně na Linuxu, SerenityOS opustí a Ladybird bude nově samostatný projekt (nový web, repozitář na GitHubu).

    Fluttershy, yay! | Komentářů: 2
    včera 02:22 | Nová verze

    Po dvou měsících vývoje byla vydána nová verze 0.13.0 programovacího jazyka Zig (GitHub, Wikipedie). Přispělo 73 vývojářů. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    down-shares - jeden pro všechny

    24.5.2009 23:07 | Přečteno: 2710× | Stahovaci skripty | poslední úprava: 28.5.2009 01:11

    Tak je to tady. Nefungoval megauploads, chtěl jsem přidělat/opravit pár dalších stahovacích skriptů, nebavilo mě stále kopírovat kód na výběr proxy, zobrazení captcha a čtení kódu. Takže jsem se dokopal a spojil všechny stahovače do jednoho skritpu a společný kód nacpal do funkcí.

    Většinu kódu jsem využil (zkopíroval a mírně vyladil) z předchozích skriptů, takže pokud chce někdo popis, tak ať se podívá do těch předchozích. Takže zmínim jen to nejdůležitější.

    Mám tam funkci na stažení captcha obrázku a přečtení kódu. K zobrazení se používá gqview, k přečtení kódu se použije buď Xdialog (X) nebo read (konzole). Použití X je podmíněné proměnnou DISPLAY, konzoli jde vynutit použitím přepínače.

    Dál jsem přidal funkci delaytime. Někdy se totiž zobrazí odpočítávání zároveň s captcha obrázkem, takže je možné začít odpočítávat už během zobrazení captcha a čtení kódu z klávesnice. Pokud tohle stahovací systém umožňuje, zjistí se aktuální čas před čtením captcha a po načtení kódu od uživatele se odpočítává už jenom doba, která zbývá z původní doby čekání.

    Místo opakovaného psaní wget příkazu jsem definoval funkci, je to tak taky jednodušší. Díky tomu používají všechny stahovače cookies.

    Pro každý stahovač je definovaná vlastní funkce, která se pak volá podle rozpoznané URL.

    Pro každé stahování se nastavuje http_proxy. V souboru je seznam všech možných proxy serverů, lze vytvořit nový seznam zadáním indexů původního seznamu, nebo z původního seznamu některé proxy odstranit, případně lze nastavit vlastní jinou proxy.

    Pozor u stahovače netload.in. Tohle je trošku zvláštní stahovač. Někdy zobrazí pouze nějakou dobu k čekání a pak rovnou odkaz pro stažení. Jindy ale zobrazí rovnou odkaz, který ale vede na stránku, kde je captcha a beží jiné zpoždění. Nepochopil jsem, jak se server rozhoduje, kdy bude stahování bez captcha a kdy s captcha. Bez captcha je stahování fungující, s captcha zatím nefunguje. Pokud budu mít někdy čas, dostatek odkazů na testování a bude to zrovna zobrazovat captcha, tak to dodělám. Zatím jsem byl vždy v situaci, že jsem to stáhnul bez captcha nebo jsem měl odkaz na jinej server.

    Pokud máte připomínky, budu sledovat diskuzi, tak můžete psát.

    UPDATE 2009/05/25: Ověřuje se, že soubor se seznam proxy serverů je skutečně soubor nebo link na soubor.

    UPDATE 2009/05/28: Pár nových úprav:

    TODO

    #!/bin/bash
    
    ################################################################################
    ################################################################################
    
    export LANG="C"
    
    function exitcode() {
      trap '' 1 2 3 6 9 15
      if [ $# -gt 0 ];then local ec="$1" ; else local ec=0 ; fi
      rm -rf "$tmpdir"
      trap - 1 2 3 6 9 15
      exit $ec
    }
    
    function readcaptcha() {
      if [ $# -eq 0 ];then code="-";return;fi
      local img="$1"
      shift
      if [ $# -gt 0 ];then local codetitle="\\n($2)" ; fi
      if [ -n "$img" ];then
        wgetcmd -nv -O "$captmp" "$img"
        echo "+++ CAPTCHA local: $captmp [ $( file --mime-type -b "$captmp" ) ]"
        case "$showcaptcha" in
          "x" )
            if [ -n "$DISPLAY" ];then
              if [ -n "$gqview" ];then
                gqview "$captmp" >/dev/null 2>&1 & local pid="$!"
              elif [ -n "$cacaview" ];then
                echo "+++ gqview not found, but cacaview found - using cacaview to show captcha"
              else
                echo "+++ neither gqview nor cacaview found - not showing captcha"
              fi
            else
              if [ -n "$cacaview" ];then
                echo "+++ XDISPLAY not found, using cacaview to show captcha"
                DISPLAY="" cacaview "$captmp"
              else
                echo "+++ cacaview not found - not showing captcha"
              fi
            fi ;;
          "c" ) if [ -n "$cacaview" ];then DISPLAY="" cacaview "$captmp" ; else echo "+++ cacaview not found - not showing captcha" ; fi ;;
          "0" ) echo "+++ not showing captcha as requested" ;;
        esac
        code=""
        while [ -z "$code" ];do
          if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
            code="$( Xdialog --no-cancel --title "$captmp" --screen-center --stdout --inputbox "Enter the CAPTCHA code${codetitle}" 14 40 )"
            if [ $? -eq 1 ];then code="-";fi
          else
            read -p "Code ($codetitle) ['-' for stop]: " code
          fi
        done
        if [ "$showcaptcha" = "x" ] && [ -n "$DISPLAY" ];then kill "$pid" ; fi
        rm -f "$captmp"
      else
        code="*"
      fi
    }
    
    function delaytime() {
      if [ $# -eq 0 ];then return 0 ; fi
      local delay="$1"
      shift
      if [ $# -gt 0 ];then
        local delaystart="$1"
      else
        local delaystart="$( date +"%s" )"
      fi
      if [ -n "$delay" ]; then
        realdelay="$(( $( date +"%s" ) - ( $delaystart + $delay ) ))"
        if [ $( date +"%s" ) -le $(( $delaystart + $delay )) ] ; then
          while [ $( date +"%s" ) -le $(( $delaystart + $delay )) ];do
            echo -en "+++ delaying $delay seconds [ $(( $delaystart + $delay - $( date +"%s" ) )) ]     \r"
            sleep 1
          done
          echo
        fi
      fi
    }
    
    function wgetcmd() {
      LANG="C" wget $rate -U "$agent" --save-cookies "$cookies" --keep-session-cookies --load-cookies "$cookies" "$@"
    }
    
    ################################################################################
    
    function downrapid() {
      local id="rapidshare.com"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local url1="$( echo "$output1" | perl -e ' undef $/;$a=<STDIN>;print sprintf("%s",$url) if ((($tag)=($a=~m,(<form\s+[^>]*id="ff"[^>]*>),is)) and (($url)=($tag=~m,action="([^"]+)",is))); ')"
      echo "*** $id URL1: $url1"
      local output2="$( wgetcmd -nv -O - --post-data="dl.start=Free" "$url1" )"
    
      local data="$( echo "$output2" | perl -e '
        undef $/; $a=<STDIN>;
        ($delay)=($a=~m,var\s+c\s*=\s*(\d+)\s*;,is);
        ($wait)=($a=~m,(?:wait|try\s+again\s+in\s+(?:about)?)\s+(\d+\s+minutes?),is);
        (($img)=($a=~m,<img\s+src="([^"]+/access[^"]+)",is)) and ($img=~s/\x27\s*\+\s*\x27//g);
        ($codetitle)=($a=~m,(security\s+question[^\x27]+)\x27,is);
        ($file)=($a=~m,<form\s+name="dlf?"\s+action="[^"]+/([^"/]+)",is);
        print "$delay\n$wait\n$img\n$codetitle\n$file\n";
      ' )"
    
      local delay="$( echo "$data" | sed -n -e '1p;' )"
      local wait="$( echo "$data" | sed -n -e '2p;' )"
      local img="$( echo "$data" | sed -n -e '3p;' )"
      local codetitle="$( echo "$data" | sed -n -e '4p;' )"
      local file="$( echo "$data" | sed -n -e '5p;' )"
      if [ -e "$file" ] ; then file="$file.$( date +"%Y%m%d-%H%M%S" ).$$" ; fi
    
      local url3
    
      if echo "$codetitle" | grep -qE 'Have[[:space:]]+Fun';then local happyhour=1;else local happyhour=0;fi
    
      local url2="$(
        echo "$output2" \
        | perl -e '
            undef $/;
            $a=<STDIN>;
            while (($u)=($a=~m,document\.dlf\.action=\\\x27([^\x27]+)\\\x27;,is)) {
              $a=~s,document\.dlf\.action=\\\x27([^\x27]+)\\\x27;,,is;
              print "$u\n" unless $u=~m,http://rs\d+tl\d*\.,i; 
            };
          '
      )"
    
      echo "*** $id URL2: $url2"
      echo "*** $id DELAY: $delay"
      echo "*** $id WAIT: $wait"
      echo "*** $id CAPTCHA: $img"
      echo "*** $id CODETITLE: $codetitle"
      echo "*** $id HAPPYHOUR: $happyhour"
      echo "*** $id FILE: $file"
      if [ -n "$file" ] && [ -n "$url2" ];then
        if [ $happyhour -eq 0 ];then
          local delaystart="$( date +"%s" )"
          readcaptcha "$img" "$codetitle"
          if [ "$code" = "-" ];then
            return 3
          else
            delaytime "$delay" "$delaystart"
          fi
        fi
        echo "$url2" | while read url3;do
          if [ "$code" = "*" ] || [ $happyhour -eq 1 ];then
            codetxt=""
          else
            codetxt="&accesscode=$code"
          fi
          actionstring="actionstring=1"
          if wgetcmd -c -O "$file" --post-data="${actionstring}${codetxt}" "$url3"; then break;fi
        done 
        if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 1000 ];then return 0;fi
      elif [ -n "$wait" ];then
        echo "--- $id Wait $wait"
        return 2
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    ##############################
    
    function downsuborysk() {
      local id="subory.sk"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -O - -q "$url" )"
      local data="$( echo "$output1" | perl -e '
          undef $/;
          $a=<STDIN>;
          ($delay)=($a=~m,^\bcislo\s*=\s*(\d+)\s*;,im);
          (($form)=($a=~m,(<form\s+[^>]*name=captchaform[^>]*>.*?</form>),is)) and ((($img)=($form=~m,<img\s+[^>]*src="(/captcha3/captcha\.php\?id=[^"]+)"[^>]*>,is)) or 1) and (($url)=($form=~m,<form\s+[^>]*action="([^"]+)",is));
          print "$delay\n$img\n$url\n";
        '
      )"
      echo "*** $id DATA: $data"
      local baseurl="${url%/download/*}"
      local delay="$( echo "$data" | sed -n -e '1p;' )"
      local captchaimgpath="$( echo "$data" | sed -n -e '2p;' )"
      local path="$( echo "$data" | sed -n -e '3p;' )"
      captchaimg="$baseurl$captchaimgpath"
      local url1="$baseurl$path"
      echo "*** $id URL1: $url1"
      echo "*** $id CAPTCHA: $captchaimg"
      echo "*** $id DELAY: $delay"
      if [ -n "$path" ] && [ -n "$captchaimgpath" ];then
        local delaystart="$( date +"%s" )"
        readcaptcha "$captchaimg"
        if [ "$code" = "-" ];then
          return 3
        else
          delaytime "$delay" "$delaystart"
          postdata="submitted=1&str=$code"
          wgetcmd -c --post-data="$postdata" --referer="$url" "$url1"
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    ##############################
    
    function downuloziskosk() {
      local id="ulozisko.sk"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url" )"
      local data="$( echo "$output1" | perl -e '
          undef $/;
          $a=<STDIN>;
          ($form)=($a=~m,(<form\s+[^>]*name\s*=\s*"formular"[^>]*>.*?</form>),is);
          ($delay)=($form=~m,function\s+set\s*\(\s*\)\s*\{\s*cas_\d+\s*=\s*(\d+)\s*;\s*\},is);
          ($img)=($form=~m,<img\s+[^>]*src="(/obrazky/obrazky\.php\?[^"]+)"[^>]*>,is);
          ($url)=($form=~m,<form\s+[^>]*action\s*=\s*"([^"]+)",is);
          while (($hidden)=($form=~m,(<input\s+[^>]*type\s*=\s*"hidden"[^>]*>),is)) {
            $form=~s,(<input\s+[^>]*type\s*=\s*"hidden"[^>]*>),,is;
            ($name)=($hidden=~m,name\s*=\s*"([^"]+)",is);
            ($val)=($hidden=~m,value\s*=\s*"([^"]+)",is);
            $file=$val if ($name eq "name");
            $val=unpack("H*",$val);
            $val=~s/(..)/%$1/g;
            push @hidden,sprintf("%s=%s",$name,$val);
          }
          print sprintf("%s\n%s\n%s\n%s\n%s",$delay,$img,$url,join("&",@hidden),$file);
        '
      )"
      local baseurl="http://www.ulozisko.sk"
      local delay="$( echo "$data" | sed -n -e '1p;' )"
      local captchaimgpath="$( echo "$data" | sed -n -e '2p;' )"
      local captchaimg="$baseurl$captchaimgpath"
      local url1path="$( echo "$data" | sed -n -e '3p;' )"
      local url1="$baseurl$url1path"
      local postdata="$( echo "$data" | sed -n -e '4p;' )"
      local filename="$( echo "$data" | sed -n -e '5p;' )"
      echo "*** $id URL1: $url1"
      echo "*** $id CAPTCHA: $captchaimg"
      echo "*** $id DELAY: $delay"
      echo "*** $id FILE: $filename"
      if [ -n "$url1path" ] && [ -n "$captchaimgpath" ];then
        local delaystart="$( date +"%s" )"
        readcaptcha "$captchaimg"
        if [ "$code" = "-" ];then
          return 3
        else
          delaytime "$delay" "$delaystart"
          postdata="$postdata&antispam=$code"
          wgetcmd -c --post-data="$postdata" --referer="$url" "$url1"
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    ##############################
    
    function downmegaupload() {
      local id="megaupload.com"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local data="$( echo "$output1" | perl -e '
        undef $/;
        $a=<STDIN>;
        ($captcha)=($a=~m#<img\s+[^>]*src=["\x27]([^"\x27]+/gencap\.php[^"\x27]+)["\x27]#i);
        @fields=();
        while (($t1)=($a=~m/(<input\s+[^>]*type=["\x27]hidden["\x27][^>]*>)/i)) {
          if ((($field)=($a=~m/name=["\x27](captchacode|megavar)["\x27]/i)) and (($val)=($a=~m/value=["\x27]([^"\x27]*)["\x27]/i))) {
            $val=~s/(.)/"%".unpack("H2",$1)/ge;
            push @fields,sprintf("%s=%s",$field,$val);
          }
          $a=~s/<input\s+[^>]*type=["\x27]hidden["\x27][^>]*>//i
        }
        print "$captcha\n";
        print join("&",@fields)."\n";
        '
      )"
      local url1="$url"
      local captchaimg="$( echo "$data" | sed -n -e '1p;' )"
      local postdata="$( echo "$data" | sed -n -e '2p;' )"
      echo "*** $id URL: $url1"
      echo "*** $id CAPTCHA: $captchaimg"
      if [ -n "$captchaimg" ] && [ -n "$url1" ];then
        readcaptcha "$captchaimg"
        if [ "$code" = "-" ];then
          return 3
        else
          local output2="$( wgetcmd --post-data="$postdata&captcha=$code" --referer="$url" -O - -nv "$url1" )"
          local data="$( echo "$output2" | perl -e '
              undef $/;
              $a=<STDIN>;
              ($delay)=($a=~/count\s*=\s*(\d+)\s*;/);
              ($t1)=($a=~m#<div\s+[^>]*id="downloadlink"[^>]*>(.*?)</div>#) and ($url)=($t1=~m#<a\s+[^>]*href=[\x27"]([^\x27"]+)[\x27"]#);
              print "$delay\n$url\n";
            '
          )"
          local delay="$( echo "$data" | sed -n -e '1p;' )"
          local url2="$( echo "$data" | sed -n -e '2p;' )"
          echo "*** $id URL2: $url2"
          echo "*** $id DELAY: $delay"
          if [ -n "$url2" ];then
            delaytime "$delay"
            wgetcmd -c "$url2"
          else
            echo "--- $id Unable to download"
            return 3
          fi
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    ##############################
    
    function downbagruj() {
      local id="bagruj.cz"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local data="$( echo "$output1" | perl -e '
          undef $/;
          $a=<STDIN>;
          if (($b)=($a=~m,<form\s+[^>]*name="f1"[^>]*>(.+?)</form>,is)) {
            @inputs=();
            while ((($input)=($b=~m,(<input\s+[^>]*type="hidden"[^>]*>),is)) and (($name)=($input=~/name="([^"]+)"/is)) and (($value)=($input=~/value="([^"]*)"/is))) {
              $value=unpack("H*",$value);
              $value=~s/(..)/%$1/g;
              push @inputs,sprintf("%s=%s",$name,$value);
              $b=~s,(<input\s+[^>]*type="hidden"[^>]*>),,is;
            }
            $postdata=join("&",@inputs);
            $captcha=$t1 if (($t1)=($b=~m,<img\s+[^>]*src="(http://bagruj.cz/captchas/[^.]+.jpg)"[^>]*>,is));
            $delay=$t1 if (($t1)=($b=~m,<span\s+[^>]*id="countdown"[^>]*>(\d+)</span[^>]*>,is));
            print "$captcha\n$delay\n$postdata\n";
          };
        '
      )"
      local captchaimg="$( echo "$data" | sed -n -e '1p;' )"
      local delay="$( echo "$data" | sed -n -e '2p;' )"
      local postdata="$( echo "$data" | sed -n -e '3p;' )"
      echo "*** $id CAPTCHA: $captchaimg"
      echo "*** $id DELAY: $delay"
      if [ -n "$captchaimg" ] ;then
        local delaystart="$( date +"%s" )"
        readcaptcha "$captchaimg"
        if [ "$code" = "-" ];then
          return 3
        else
          delaytime "$delay" "$delaystart"
          local url1="$( wgetcmd -O - -q --post-data="$postdata&code=$code" "$url" | perl -e 'undef $/;$a=<STDIN>;print "$b" if (($b)=($a=~m,<a\s+href="([^"]+)">\1</a>,is));' )"
          echo "*** $id URL1: $url1"
          if [ -z "$url1" ]; then return 1 ; fi
          wgetcmd -c "$url1"
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    function downiskladka() {
      local id="iskladka.cz"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local url1="$( dirname "$url" )/$( echo "$output1" | perl -e '
          undef $/;
          $a=<STDIN>;
          if ((($url)=($a=~m,<iframe\s+[^>]*src="(iCopy/index.php[^"]+)",is)) and (($path,$param)=($url=~m,^(.*)\?file=(.*)$,i))) {
            $param=unpack("H*",$param);
            $param=~s/(..)/%$1/g;
            print sprintf("%s?file=%s",$path,$param);
          };
        '
      )"
      echo "*** $id URL1: $url1"
      local output2="$( wgetcmd -O - -q --referer "$url" "$url1" )"
      local data="$( echo "$output2" | perl -e '
          undef $/;
          $a=<STDIN>;
          ($file)=($a=~m,var\s+downloadCounterLink\s*=\s*[\x27"]([^\x27"]+)[\x27"]\s*;,is);
          ($delay)=($a=~m,var\s+downloadCounter\s*=\s*(\d+)\s*;,is);
          if (($url)=($a=~m,^\s*document\.getelementbyid\("downloadstatus"\)\.innerhtml\s*=\s*"\s*<iframe\s+[^>]*src=\x27(http.*/icopy/downloadbalancer[^\x27]+)\x27,im)) {
            $url=~s,"\+downloadCounterLink\+",$file,is;
          }
          $file=~tr/+/ /;
          $file=~s/%(..)/chr(hex($1))/ge;
          print sprintf("%s\n%s\n%s\n",$url,$file,$delay);
        '
      )"
      local url2="$( echo "$data" | sed -n -e '1p;' )"
      local file="$( echo "$data" | sed -n -e '2p;' )"
      local delay="$( echo "$data" | sed -n -e '3p;' )"
      if [ -e "$file" ] ; then file="$file.$( date +"%Y%m%d-%H%M%S" ).$$" ; fi
      echo "*** $id URL2: $url2"
      echo "*** $id FILE: $file"
      echo "*** $id DELAY: $delay"
      if [ -n "$url2" ] && [ -n "$file" ];then
        if [ -n "$delay" ];then delaytime "$delay" ; fi
        wgetcmd -O "$file" --referer="$url1" "$url2"
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    function downleteckaposta() {
      local id="leteckaposta.cz"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local data="$( echo -e "<<$url>>\n$output1" | perl -e '
          undef $/; $a=<STDIN>;
          ($burl)=($a=~m,<<(https?://[^/]+)/.*?>>,i);
          (($t,$file)=($a=~m,(<a\s+[^>]*class=["\x27]download-link["\x27][^>]*>)([^<]+)</a>,is)) and (($path)=($t=~m,href=["\x27](/file/[^"\x27]+)["\x27],is));
          print "$burl\n$path\n$file\n";
        '
      )"
      local baseurl="$( echo "$data" | sed -n -e '1p;' )"
      local urlpath="$( echo "$data" | sed -n -e '2p;' )"
      local file="$( echo "$data" | sed -n -e '3p;' )"
      local url1="$baseurl$urlpath"
      if [ -e "$file" ] ; then file="$file.$( date +"%Y%m%d-%H%M%S" ).$$" ; fi
      echo "*** $id URL1: $url1"
      echo "*** $id FILE: $file"
      if [ -n "$file" ] && [ -n "$urlpath" ];then
        wgetcmd -O "$file" --referer="$url1" "$url1"
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    function downulozto() {
    ## http://uloz.to/1617316/Heroes.S03E23.HDTV.XviD-LOL.avi 
      local id="uloz.to"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" | perl -e 'undef $/;$_=<STDIN>;print $1 if m;(<form\s+[^>]*name="dwn".*?</form>);is;' )"
      local data="$( echo "$output1" | perl -e '
          undef $/;$_=<STDIN>;
          (($f)=(m/(<form\s+[^>]*name="dwn"[^>]*>)/is)) and (($url)=($f=~m/action="([^"]+)"/is));
          (($f)=(m;(<img\s+[^>]*id="captcha"[^>]*>);is)) and (($captcha)=($f=~m;src="([^"]+)";is));
          (($f)=(m;(<input\s+[^>]*id="captcha_nb"[^>]*>);is)) and (($capctrl)=($f=~m;value="([^"]+)";is));
          (($f)=(m;(<input\s+[^>]*id="download_button"[^>]*>);is)) and (($downbut)=($f=~m;value="([^"]+)";is)) and ($downbut=~s/(.)/sprintf("%%%s",unpack("H",$1))/ge or 1);
          print "$url\n$captcha\n$capctrl\n$downbut\n";
        '
      )"
      local file="$( basename "$url" )"
      if [ -e "$file" ] ; then file="$file.$( date +"%Y%m%d-%H%M%S" ).$$" ; fi
      local url1="$( echo "$data" | sed -n -e '1p;' )"
      local captchaimg="$( echo "$data" | sed -n -e '2p;' )"
      local captchanb="$( echo "$data" | sed -n -e '3p;' )"
      local downbut="$( echo "$data" | sed -n -e '4p;' )"
      echo "*** $id URL1: $url1"
      echo "*** $id CAPTCHA: $captchaimg"
      echo "*** $id FILE: $file"
      if [ -n "$captchaimg" ] && [ -n "$file" ];then
        readcaptcha "$captchaimg"
        if [ "$code" = "-" ];then
          return 3
        else
          postdata="captcha_nb=$captchanb&captcha_user=$code&download=$downbut"
          wgetcmd -O "$file" --post-data="$postdata" --referer "$url" "$url1"
          if [ "$( file -b --mime-type "$file" )" = "text/html" ] && iconv -c -f utf-8 -t ascii//translit "$file" | grep -qEi 'Prekrocen[[:space:]]+pocet[[:space:]]+FREE[[:space:]]+slotu';then 
            rm "$file"
            echo "--- $id No free slots"
            return 1
          fi
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    function downulozcz() {
      local id="uloz.cz"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local url1="$( echo "$output1" | perl -e '
          undef $/;
          $a=<STDIN>;
          ($url)=($a=~m,href=["\x27](http://[^/]*uloz\.cz/auth/[a-f0-9]+/file/[^"\x27]+)["\x27],is);
          print "$url";
        '
      )"
      echo "*** $id URL1: $url1"
      if [ -n "$url1" ];then
        wgetcmd -c --referer="$url" "$url1"
      else
        echo "--- $id Unable to download"
        return 3
      fi
    }
    
    function downfilefactory() {
      local id="filefactory.com"
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local output1="$( wgetcmd -nv -O - "$url" )"
      if echo "$output" | grep -Eqi 'no free download slots.*try again later' ;then
        echo "--- $id No free slots"
        return 1
      fi
      local baseurl="$( echo "$url" | sed -e 's,\([^/]\+://[^/]\+\)/.*$,\1,' )"
      local path1="$( echo "$output1" | perl -e 'undef $/;$a=<STDIN>; print "$url" if (($t)=($a=~m,(<a\s+[^>]*class="download"[^>]*>),is)) and (($url)=($t=~m,href="([^"]+)",is));' )"
      local url1="$baseurl$path1"
      echo "*** $id URL1: $url1"
      local output2="$( wgetcmd -nv -O - --referer="$url" "$url1" )"
      local data1="$( echo "$output2" | perl -e '
        undef $/;$a=<STDIN>;
        (($capid)=($a=~m,(<input\s+[^>]*id="captchaID"[^>]*>),is)) and (($v)=($t=~m,value="([^"]+)",is));
        (($capim)=($a=~m,(<img\s+[^>]*class="captchaImage"[^>]*>),is)) and (($v)=($t=~m,src="([^"]+)",is));
        print "$capid\n$capim\n";
      ' )"
      local postdata="captchaID=$( echo "$data1" | sed -n -e '1p;' )"
      local captchaimgpath="$( echo "$data1" | sed -n -e '2p;' )"
      local captchaimg="$baseurl$captchaimgpath"
      echo "*** $id CAPTCHA: $captchaimgpath"
      if [ -n "$captchaimgpath" ];then
        readcaptcha "$captchaimg"
        if [ "$code" = "-" ];then
          return 3
        else
          postdata="$postdata&captchaText=$code"
          local output3="$( wgetcmd -nv -O - --post-data="$postdata" --referer="$url" "$url1" )"
          local url2="$( echo "$output3" | perl -e ' undef $/;$a=<STDIN>; (($t)=($a=~m,(<a\s+[^>]*class="download"[^>]*>),is)) and (($url)=($t=~m,href="([^"]+)",is)); print "$url";' )"
          echo "*** $id URL2: $url2"
          wgetcmd -c --referer="$url1" "$url2"
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
      return 0
    }
    
    
    ################################################################################
    ################################################################################
    
    function downnetloadin() {
      local id="netload.in"
      ## http://netload.in/dateil4GMY6euLa/heroes.323.hdtv-lol.part4.rar.htm 
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local baseurl="$( echo "$url" | sed -e 's,\([^/]\+://[^/]\+\)/.*$,\1,' )"
      local output1="$( wgetcmd -nv -O - "$url" )"
      echo "$output1" > output1
      local data1="$( echo "$output1" | perl -e '
        undef $/;
        $a=<STDIN>;
        (($delay)=($a=~m,var\s+sss\s*=\s*-?\s*(\d+)\s*;,is));
        (($curl)=($a=~m,<div\s+[^>]*class="dl_first_link2"[^>]*>\s*<div\s+[^>]*class="Free_dl"[^>]*>\s*<a\s+[^>]*href="([^"]+)"[^>]*>,is)) and ($curl=~s/&amp;/\&/g or 1);
        (($t)=($a=~m,(<a\s+[^>]*class="download_fast_link"[^>]*>),is)) and (($furl)=($t=~m,href="([^"]+)",is)) and ($furl=~s/&amp;/\&/g or 1);
        (($fn)=($a=~m,<div\s+[^>]*class="dl_first_filename"[^>]*>\s*([^<]+)<,is));
        print "$delay\n$curl\n$fn\n$furl\n";
      ' )"
      local delay="$( echo "$data1" | sed -n -e '1p;' )"
      local cpath="$( echo "$data1" | sed -n -e '2p;' )"
      local file="$( echo "$data1" | sed -n -e '3p;' )"
      local fpath="$( echo "$data1" | sed -n -e '4p;' )"
      if [ -e "$file" ] ; then file="$file.$( date +"%Y%m%d-%H%M%S" ).$$" ; fi
      if [ -z "$cpath" ];then
        local url1="$baseurl/$fpath"
      else
        local url1="$baseurl/$cpath"
      fi
      echo "*** $id URL1: $url1"
      echo "*** $id FILE: $file"
      echo "*** $id DELAY: $delay"
      if ( [ -n "$cpath" ] || [ -n "$fpath" ] ) && [ -n "$file" ];then
        if echo "$url1" | grep -qi 'captcha=1' ; then
          local output2="$( wgetcmd -O - --referer="$url" "$url1" )"
          echo "$output2" > output2
          echo "captcha"
        else
          delaytime "$delay"
          wgetcmd -O "$file" -c --referer="$url" "$url1"
          if [ "$( file -b --mime-type "$file" )" = "text/html" ] ; then
            local wait="$( perl -e 'undef $/;$a=<STDIN>;print $wait/1000 if ($wait)=($a=~/(?:We\s+had\s+a\s+reqeust\s+with\s+the\s+IP.*?)?You\s+could\s+download\s+your\s+next\s+file\s+in.*?countdown\((\d+)/is);' < "$file" )"
            echo "--- $id WAIT: $wait secs"
            rm -f "$file"
            return 1
          fi
        fi
      else
        echo "--- $id Unable to download"
        return 3
      fi
      return 0
    }
    
    function downuploadedto() {
      local id="uploaded.to"
      ## http://uploaded.to/file/4z1nkb/heroes.323.hdtv-lol.part1.rar
      if [ $# -eq 0 ];then return 1;fi
      local url="$1"
      echo "*** $id URL: $url"
      local baseurl="$( echo "$url" | sed -e 's,\([^/]\+://[^/]\+\)/.*$,\1,' )"
      local output1="$( wgetcmd -nv -O - "$url" )"
      local data1="$( echo "$output1" | perl -e '
        undef $/;
        $a=<STDIN>;
        ($delay)=($a=~m,var\s+secs\s*=\s*?\s*(\d+)\s*;\s*//\s*Wartezeit,is);
        (($frm)=($a=~m,(<form\s+[^>]*name="download_form"[^>]*>),is)) and (($url)=($frm=~m,action="([^"]+)",is));
        (($fn)=($a=~m,<tr>[^<]*<td\s+[^>]*>\s*Filename:[^<]*</td[^>]*>[^<]*<td[^>]*>(.+?)</td[^>]*>[^<]*</tr[^>]*>,is)) and ($fn=~s,<[^>]+>,,gs or 1) and ($fn=~s/^\s+//s or 1) and ($fn=~s/\s+$//s or 1);
        ($wait)=($a=~m,Your Free-Traffic is exceeded.*Or wait (\d+\s+(?:minute|second|hour)s?),is);
        print "$delay\n$url\n$fn\n$wait\n";
      ' )"
      local delay="$( echo "$data1" | sed -n -e '1p;' )"
      local url1="$( echo "$data1" | sed -n -e '2p;' )"
      local file="$( echo "$data1" | sed -n -e '3p;' )"
      local wait="$( echo "$data1" | sed -n -e '4p;' )"
      if [ -e "$file" ] ; then file="$file.$( date +"%Y%m%d-%H%M%S" ).$$" ; fi
      echo "*** $id URL1: $url1"
      echo "*** $id DELAY: $delay"
      echo "*** $id FILE: $file"
      echo "*** $id WAIT: $wait"
      if [ -n "$wait" ];then
        echo "--- $id Wait $wait"
        return 2
      elif [ -n "$url1" ] && [ -n "$file" ];then
        delaytime "$delay"
        wgetcmd -O "$file" -c --referer="$url" "$url1"
      else
        echo "--- $id Unable to download"
        return 3
      fi
      return 0
    }
    
    ################################################################################
    ################################################################################
    
    proxiesfile="$HOME/.download-proxies"
    
    if ! [ -f "$proxiesfile" ] || ( [ -L "$proxiesfile" ] && ! [ -f "$( readlink -f "$proxiesfile" )" ] );then
      echo "Please, create file $proxiesfile"
      exit
    fi
    
    allproxylist="$( awk -F '|' '{print $2;}' "$proxiesfile" | tr '\n' ' ' )"
    sshtunnels="$( awk -F '|' '$1~/^.+$/{print "  " $1,$2;}' "$proxiesfile" )"
    sshtunservers="$( awk -F '|' '$1~/^.+$/{print $1;}' "$proxiesfile" | tr '\n' ' ' )"
    
    agent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
    
    console=0
    showcaptcha="x"
    
    if [ $# -gt 0 ];then
      i=$#
      while [ $i -gt 0 ];do
        case "$1" in
          -a)
            if [ $# -gt 1 ];then
              id="$[$2+1]"
              proxylist="$proxylist $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | sed -n "${id}p" )"
              i=$[$i-1]
              shift 2
            else
              echo "add proxy: value please"
              exit
            fi
          ;;
          -d)
            if [ $# -gt 1 ];then
              id="$[$2+1]"
              if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
              proxylist="$( echo "$proxylist" | tr -s '[[:space:]]' '\n' | sed "${id}d" )"
              i=$[$i-1]
              shift 2
            else
              echo "remove proxy: value please"
              exit
            fi
          ;;
          -r)
            if [ $# -gt 1 ];then
              rate="--limit-rate=$2"
              i=$[$i-1]
              shift 2
            else
              echo "rate limit: value please"
              exit
            fi
          ;;
          -p) 
            if [ $# -gt 1 ];then
              proxylist="$proxylist $2"
              shift 2
              i=$[$i-1]
            else
              echo "use proxy: value please"
              exit
            fi
          ;;
          -c)
            console=1
            shift
          ;;
          -x)
            console=0
            shift
          ;;
          -S )
            showcaptcha="0"
            shift
          ;;
          -C )
            showcaptcha="c"
            shift
          ;;
          -X )
            showcaptcha="x"
            shift
          ;;
          *)
            v="$1"
            shift 1
            set -- "$@" "$v"
          ;;
        esac
        i=$[$i-1]
      done
    
      gqview="$( type -t gqview )"
      cacaview="$( type -t cacaview )"
    
      if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi
    
      tmpdir="$( mktemp -d )"
      trap exitcode 1 2 3 6 9 15
      echo "=== TMPDIR: $tmpdir"
      cookies="$tmpdir"/cookies
      captmp="$tmpdir"/captcha
    
      while [ $# -gt 0 ];do
        url="$1"
        shift
        echo "=== Downloading URL: $url"
        rm -f "$cookies"
        touch "$cookies"
        for proxy in $proxylist ;do
          if [ "$proxy" = "NONE" ];then
            unset http_proxy
          else
            export http_proxy="$proxy"
          fi
          echo "=== HTTP PROXY: $http_proxy"
          if echo "$url" | grep -qEi 'rapidshare\.com/';then
            downrapid "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'subory\.sk/';then
            downsuborysk "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'ulozisko\.sk/';then
            downuloziskosk "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'megaupload\.com/';then
            downmegaupload "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'bagruj\.cz/';then
            downbagruj "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'filefactory\.com/';then
            downfilefactory "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'iskladka\.cz/';then
            downiskladka "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'leteckaposta\.cz/';then
            downleteckaposta "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'uloz\.to/';then
            downulozto "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'uloz\.cz/';then
            downulozcz "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'netload\.in/';then
            downnetloadin "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          elif echo "$url" | grep -qEi 'uploaded\.to/';then
            downuploadedto "$url"
            e=$?
            case "$e" in
              0 ) break ;;
              3 ) exitcode 3 ;;
              5 ) exit ;;
            esac
          else
            echo "Unknown URL $url"
            break
          fi
        done
      done
      exitcode
    else
      cat <<EndOfInfo
    
    ssh tunnels:
    $sshtunnels
    
    proxy list:
    $( echo "$allproxylist" | tr -s '[[:space:]]' '\n' | nl -v0 -w4 -s' -- ' )
    
    $sshtunservers
    
    Usage: $0 [ -a proxynum ] [ -d proxynum ] [ -r rate-limit ] [ -p proxyurl ] [ { -c | -x } ] [ -S | -C | -X ] URL ...
    -a proxynum
        add proxy at line proxynum
    -d proxynum
        delete proxy at line proxynum in ACTUAL proxy list
    -r rate-limit
        limit wget download rate
    -p proxyurl
        insert proxy specified by proxyurl
    -c
        use console to enter captcha code
    -x
        use X dialog to enter captcha code (this is default)
    -C
        use console cacaview to show captcha image
    -X
        use gqview in X to show captcha image (this is default)
    -S
        disable captcha showing (only ask for code)
    URL
        URL to download
    EndOfInfo
    fi
    
           

    Hodnocení: 100 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Limoto avatar 24.5.2009 23:13 Limoto | skóre: 32 | blog: Limotův blog
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Jenom počkej, až ty weby začnou předělávat.. Za chvilku tě to přestane bavit ;-)

    24.5.2009 23:32 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Oni uz je predelavaji:) Ale samozrejme, zalezi na tom, co na tom webu maji a jak slozity to maji. Dokud to bude jenom jednoduchej JS s nejakou hodnotou na odpocitavani a bude tam hodne veci ke stazeni, tak se to vyplati. Kdyz tam nebude nic, nebo stejny veci pujdou najit i jinde, nebo to bude pomaly a pritom slozitej JS kod na rozlousknuti, tak to samozrejme budu ignorovat.

    Zatim nejtezsi byl jeden JS, kde pouzivali nejaky metody na stringy a nejaky vypocty, ale vzdycky to bylo to stejny, jenom se menily hodnoty, takze na to stacil trosku slozitejsi (oproti ostatnim) regexp a pak jednoduchej JS interpret. Ono se jim taky moc nevyplati delat tam nejaky slozity zabezpecovani:) Dokonce rapidshare zrusil captcha.

    Takze jen tak me to bavit neprestane:) Jak muzes videt, prvni zapisek ve stahovacich skriptech je uz rok starej, a to jsem ty skripty mel jeste driv, nez jsem je dal do blogu.

    24.5.2009 23:26 Ja
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    awk: read error (Is a directory)
    awk: read error (Is a directory)
    awk: read error (Is a directory)
    |

    +----> pokus z rapidshare

    24.5.2009 23:36 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Ha, divny, posli mi URL (pres email, nebo sem do dizkuze, pokud to neni nejakej copyright), ktery stahujes. Ted zkousim jeden soubor a jede dobre, overil jsem i zkopirovat skript z blogu a porovnat s originalem a je to naprosto stejny (krome jednoho smazlyho komentare).

    24.5.2009 23:41 Ja
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Mea culpa - teraz som checkoval ten link browserom a na serveri sa uz nenachadzal - moze to byt ono? ;-) Nemalo by zahlasit nieco ako link deleted a tak? :-)

    25.5.2009 00:38 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Posli mi do mailu ten link. Me rapid pri neexistujicim odkazu hlasi neco jako host not found, ale mam dojem, ze by to melo takovej link preskocit, kdyz uz neexistuje, ale mozna jsem tam vynechal podminku.

    Hej, to neni chyba rapidu. Ten awk pouzivam pro cteni proxyn. Ale na zacatku mam test, jestli ten soubor existuje a kdyz ne, tak vypise chybu, takze by to nemelo takhle selhat. Aha, ty jsi to udelal jako adresar misto souboru?

    25.5.2009 00:43 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    E, sakra, takze link mi ani neposilej. Je to problem s tim souborem s tema proxynama ... udelam tam test, jestli to je soubor ...

    25.5.2009 01:00 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    He, zkousel jsem to udelat jako adresar a awk mi hlasil uplne jinou chybu nez tobe. Divny. Ale ted jsem to upravil, tak by to melo psat normalni chybu.

    24.5.2009 23:41 bubak
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    Jestli chces tenhle skript udrzovat, tak si automatizuj testy, jinak se z toho zblaznis
    25.5.2009 00:45 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    No, udrzovat ... budu to udrzovat tak, ze kdyz zjistim, ze nejakej link nejde, tak to opravim - pripadne, kdyz nekdo posle, ze neco nejde ... jinak nemam v planu, ze bych to kazdej den kontroloval, jestli se nekde neco nezmenilo. na to fakt neni cas.

    24.5.2009 23:44 Sid
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Jedine co sere su tie CAPTCHA kody - preco je take tazke napisat nieco na ich citanie (sledovanie zmeny farieb na obrazku, citanie ciar podla odtiena - transformacia do textu)?

    25.5.2009 00:50 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    no, tezky je to proto, ze mezi ty pismena davaji i ruzny cary na mateni OCR, navic tyhle ruzny cary maji obvykle i stejnou barvu. No a clovek ma hodne dobrej mechanizmus na rozpoznani tvaru, nebo aspon k prirazeni nejakyho tvaru k podobnymu, takze to precist dokaze. Ikdyz teda ja osobne mam obcas dost problem.

    Jednou taky rapid daval tusim pod pismenka obrazek kocicky nebo pejska a pak napsal, ze musis opsat jenom ty pismena, pod kteryma je kocicka:) Fakt zabavny, ale aby pocitac mohl tohle sam vyhodnotit, tak uz potrebujes opravdu umelou inteligenci, ktera dokaze pochopit, co je obrazek kocicky a co pejsek. Jinak asi by se dalo pripadne udelat neco jednoduchyho, kde bys pouzival masku kocicky a pejska, to nasel v captcha, pak vzal to pismeno pod tim, nejak odfiltroval ten obrazek a pak z toho dostal znak. Ale staci nepatrny deformace a klasicky OCR si s tim neporadi. Porad je ale jenodussi predhodit ten obrazek cloveku, kterej to zvladne behem par vterin:)

    25.5.2009 08:06 RapMan | skóre: 14 | blog: RapMan
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    To si pamatuju. Pejskove a kocicky byly jeste ruzne natoceny, ze i prirozena inteligence mela problemy rozpoznat, co je kocicka a co je pejsek....
    25.5.2009 10:23 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Presne:-) Bylo to docela zajimavy sledovat ten vyvoj. Nejdriv jenom klasicka captcha, pak v tom obrazku pribyla ta zviratka, ale porad se opisoval cely kod. A pak jednou udelali captcha delsi a zadavat se mela jenom pismena s kocickou. Tak jsem asi desetkrat blbe zadal kod, nez me napadlo se podivat na stranku web prohlizecem a zjistil jsem, ze se maji zadavat jenom znaky s kocickama:-) Za nejakou dobu zrusili zviratka a zmenili font. A pred nejakou dobou zrusili captcha uplne.

    Grunt avatar 25.5.2009 00:34 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Vzhledem k nedávným událostem je to docela odvaha. Věděl si, že obdoba DMCA byla přijata v EU? Jmenuje se to EU Copyright Directive a znění české implementace je třeba dostupné zde. Zatím jsem teda nenašel nic o nástrojích dovolujících či usnadňujích, ale bůh ví co v tom vlastně všechno je a co na nás platí.

    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    25.5.2009 00:53 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Uch , trosku jsi me vydesil. Ale klid. Muj skriptik nedela nic, co by porusovalo zakony - to by pak museli zrusit vsechny web browsery:) Jediny, co ten skriptik dela je:

    1. nacteni stranky a nelezeni dalsiho odkazu a metody prechodu na dalsi stranku
    2. pripadne nacteni pozadovaneho kodu overeni
    3. zaslani kodu a stazeni souboru

    Stejne jako to dela web browser, akorat v mym pripade se na to pouziva wget  a pokud neni pozadovanej kod overeni, tak to umoznuje beh automaticky bez interakce v prohlizeci.

    Grunt avatar 25.5.2009 01:36 Grunt | skóre: 23 | blog: Expresivní zabručení | Lanžhot
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    No, §43 nebo §44 pro tento případ asi platit nebudou, ale u §40 už si nejsem tak jistý (snažil jsem se asi půl hodiny přesně vyznačit, kterou část myslím, ale přes ten editor co tady funguje se mi to nepodařilo). U Adobe na to šli podobně.

    Stejne jako to dela web browser, akorat v mym pripade se na to pouziva wget a pokud neni pozadovanej kod overeni, tak to umoznuje beh automaticky bez interakce v prohlizeci.

    Proto to také zmiňuji.

    Na co 64-bitů když to jde i s jedním? | 80.78.148.5 | Hack (for) free or Die Hard!
    25.5.2009 02:10 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Uch ,ne, opravdu netusim, jakou cast par.40 bych mohl porusovat. Vsechno, co v tom skriptu pouzivam, je sirene pod GPL (bash, wget, Xdialog, gqview).

    Ne, do autorskeho prava opravdu nicim nezasahuju. Jedine, jak by se ten skript dal popsat je "usnadneni ziskavani verejne dostupneho weboveho obsahu". A pokud bys chtel "logicky" namitat, ze prave diky mojemu skriptu je mozny stahovat dila chranena autorskym zakonem, ktery nekdo jiny neopravnene siri, tak potom by ten zalobce musel zacit u vsech prohlizecu, vcetne IE, FF a jeste prede mnou i s wgetem.

    Ano, muj skript umoznuje jednodussi stahovani, ale to neni autorskym zakonem omezovane. A ochrana stahovani pomoci captcha neni ochrana autorskeho dila. Bud jsi spatne pochopil ten zakon, nebo jsi nepochopil, jak vlastne ty sdileci servery fungujou.

    25.5.2009 02:21 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Aha, ted jsem si precet tu zpravicku o rtmpdump. No, to jsou teda fakt paka:) Nicmene ten muj skript sam o sobe nic nestahuje, pouze pouziva externi utility. Takze pokud by chtel nekdo neco nahodou zakazovat, tak by musel zakazat wget, curl, lynx, links a mozna by se mi podarilo donutit i firefox, aby stranku stahnul a ulozil:) A to asi tezko.

    Problem je, ze rtmpdump pouzival opravdu nejakou cizi technologii, pravdepodobne i nejak chranenou. Jestli provadeli reverse-engineering netusim, nicmene bych rekl, ze to bylo podobne jako u pripadu TomTom versus Microsoft ohledne FAT. Adobe to zrejme nahral radsi na DMCA, ikdyz by mozna mohl hrat na reverse-engineering jejich protokolu (a urcite nekde v licenci maji, ze pri pouzivani flashe se nesmi komunikace zkoumat).

    Muj skript nic takovyho nedela, proste spusti program, precte a zpracuje data a spusti dalsi program. Pokud by neco takovyho chteli zakazat, tak muzou zrusit kompletne vsechno.

    27.5.2009 14:13 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    Např. v ČR je reverzní inženýrství pro účely interoperability zcela legální. Autor sice může v licenci chtít reverzní inženýrství zakázat, ale je mu to naštěstí prd platné, zákon je nadřazený jakékoliv licenci.
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    27.5.2009 17:58 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    Me vic uklidnuje, ze jsem ani zadne reverzni inzenyrstvi nedelal. Prohlizet kod stranky a vytvoreni programu tak, aby pracoval podle HTML kodu nastesti neni reveng, pouze vytvoreni kodu, aby provadel funkce podle specifikace HTML (stejne jako to dela kazdej HTML prohlizec):-)
    28.5.2009 09:02 xm | skóre: 36 | blog: Osvobozený blog | Praha
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    To je mi jasné, není to nic jiného než specifická forma webového browseru ;-) Já jen reagoval na to co bylo psáno v tom předchozím příspěvku o rtmpdump.
    Svoboda je tím nejdůležitějším, co máme. Nenechte se o ní připravit, podporujte Pirátskou stranu!
    25.5.2009 08:11 Zdeněk Štěpánek | skóre: 57 | blog: uz_mam_taky_blog | varnsdorf
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    A umi to aspon v konzoli sosat z rapidsharu? Na webu jsem nasel aspon milion ruznych skriptu kam se dal jmeno a heslo do rapidu a pak to sosa. Jenze to je ma uplne nanic kdyz zadny heslo nemam.

    Zdenek
    www.pirati.cz - s piráty do parlamentu i jinam www.gavanet.org - czfree varnsdorf
    25.5.2009 10:25 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    Hej, clovece, myslim, ze budes stastnej:) To je presne to, co to umi. Zadas na radku URL adresy, pokud mas i vic proxy serveru, tak skript vezme prvni URL. Nastavi prvni proxy a zkusi stahnout. Bud se to stahne a jde se na dalsi URL od prvni proxy opet, nebo je tam nejaky cekani X minut (obvykle 10 a vice), pak to vezmu druhou proxy a zase zkusi. Kdyz ted rapid nevyzaduje captcha, tak to samozrejme zadny kod nepozaduje, takze to bezi plne automaticky. Da se tak cucat z rapidu na vzdalenym serveru. A samozrejme to je pro anonymous usera.

    25.5.2009 10:42 bflmpsvz
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    Osobne mam odpor k bash skriptum delsim nez je par desitek radku. Neverim, ze jsou natolik neprustrelne...
    25.5.2009 11:56 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    Me nevadi i delsi bashe, ale musi to byt trosku prehledne. Snad tohle je, prakticky kazdou funkci muzes rozdelit na nejaky kod, ktery ma tak 10-30 radku.

    Jinak, co presne myslis "neprustrelnosti"? At uz myslis cokoliv, tenhle skript nemel byt "neprustrelny", ma proste zjednodusovat stahovani z ruznych shareovacich systemu. Misto abych zadaval odkaz do Firefoxu, zatezoval system spoustenim zbytecnych falshu a JS a stahovanim souboru, tak se jednoduse najde spravnej odkaz, pripadne captcha a stahne se soubor pomoci wgetu (muze se pouzit cokoliv jinyho). Diky pouziti wgetu lze jednoduse menit i proxy, coz bych ve Firefoxu opravdu delat nechtel. Zatimco v mym skriptu jednoduse zadat az 20 proxyn, ve FF by to bylo hodne obtizne, aspon napr. s FoxyProxy, kterou normalne pouzivam.
    jose17 avatar 25.5.2009 21:53 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    skoda, ze Ti tam chyba upnito.sk. obcas by sa hodil. jose

    Ja vim, on vi, ty nano!
    25.5.2009 23:37 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    hele, neni problem. Posli mi pres emailovej formular nejakej link, na kterym to budu moct zjistit a otestovat a pripisu to, pokud to nebude nejake extra slozity. Mozna jsem par odkazu na upnito.sk videl, ale zrejme jsme k nim mel jiny alternativy (rapid, megaupload ...), takze jsme nemel potrebu to psat (navic tam mam dva jiny slovensky (ulozisko.sk a subory.sk). Ale posli nejakej link a ja mrknu, jestli by to slo pridat.

    jose17 avatar 26.5.2009 15:32 jose17 | skóre: 44 | blog: Joseho_blog | Bratislava
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny

    1) ma este happyhour zmysel? imho captchu uz rapid zrusil uplne

    2) ak nenajde graficky displej nemohol by sa obrazok otvorit v cacaview? ked uz sa inak neda (server bez Xov) tak sa s pomocou +/- a pri troche stastia da CAPTCHA precitat

    Ja vim, on vi, ty nano!
    26.5.2009 18:45 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    ad 1) jestli ma smysl, to netusim, netusim ani, jestli happy hour jeste provozuji nebo ne. Proste jednou to meli, kod jsem napsal, tak jsem ho nechal. Mozna ze to i smysl ma, protoze porad jeste maji dlouhe cekaci doby po stazeni souboru - stahnes soubor a musis cekat X minut, docela to nastve, pokud to dela napr. 115 minut. Mam dojem, ze happy hour nemel ani tenhle limit, proste jsi tahal jako prihlasenej clovek - pristup k tahani, zadna captcha, zadny cekani. Takze radsi to tam necham, ikdyz osobne mam moznost pouzivat vic proxy serveru, takze cekaci doby mi nejak nevadi, ale pokud bych nahodou stahoval v dobe happy hour, tak je dobry, aby s tim skript umel pracovat, jinak by chcipnul, protoze by netusil, co se to vlastne deje.

    ad 2) v tech predchozich blozich jsme o tom diskutovali, ja jen zertoval s aalib, ale semo psal, ze cacaview pouzival. Nejsem si jistej, jak moc by to bylo citelny, ale zkusit to muzu - ted to bude jednodussi pridat, kdyz mam pro vsechny stahovace jenom jednu funkci na captcha, tak se na to zkusim podivat. Jinak co jsem tak na to koukal, tak obcas je captcha proste statickej link, kterej generuje stejnej kod a ten muj skript pred stahovanim zobrazuje ten captcha link, takze pokud by clovek stahoval na vzdalenym serveru bez Xek, tak muze na lokalnim stroji zkopirovat ten link do browsera - obcas tohle nemusi fungovat, kdyz i captcha pouziva cookies. Potom jsem navrhoval reseni zkopirovat stazeny obrazek do HTML adresare a mrknout na nej na ten server pres web, pripadne ze vzdaleneho serveru zkopirovat na lokalni masinu a podivat se na nej lokalne. Aby se tohle nemuselo resit, tak by se opravdu cacaview hodil. Pridelam si tady TODO, abych na to nezapomnel.
    28.5.2009 01:13 RoboShim | skóre: 13 | blog: RoboShim
    Rozbalit Rozbalit vše Re: down-shares - jeden pro všechny
    update 2009/05/28

    ad 2) tak ten cacaview je hotovej

    k tomu upnito.sk jsem se jeste nedostal, potreboval jsem udelat nejakej jinej skriptik:-) zkusim dneska vecer

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.