Portál AbcLinuxu, 30. dubna 2025 21:40

down-rapid

4.1.2009 20:06 | Přečteno: 3414× | Stahovaci skripty | Výběrový blog

Takže jsem se konečně dostal k tomu, abych sem hodil další stahovací skriptík, tentokrát pro rapidshare.com. Tak doufám, že některým se bude hodit a budou rádi, že jsem ho sem dal.

A teď už k věci, trošku to popíšu, protože to už neni pár řádek jako posledně. Možná se z toho někdo poučí, naopak, někteří sem budou určitě psát, že jde něco řešit líp, např. používat grep, sed příp. awk místo perlu. Přestože je to trošku složitější skript, psal jsem ho prostě úplně jednoduše a Perl používám právě proto, že jsem línej kombinovat více grepů a sedů a psát nějaký šílený regexpy, když v Perlu to jde o hodně jednodušejc.

Na začátku skriptu se načte seznam proxy serverů. Já to používám tak, že mám přes SSH vytvořené tunely na tinyproxy servery běžící na různých serverech a pak jako proxy používám ty tunely. Např. localhost:3000 je přes SSH tunel směřovanej na tinyproxy na serveru A, localhost:3001 je směřovanej na tinyproxy na serveru B. Používám tinyproxy, protože na Debianu se ihned po instalaci tinyproxy spusti, poslouchá na portu 8888 a přístup je omezen právě z localhostu. Samozřejmě můžete si nainstalovat jakýkoliv jiný proxy, ale já ten tinyproxy instaluju jen kvůli tomu stahování, takže po dokončení stahování ho zase odinstaluju (purge), takže nemusím dělat složitou konfiguraci. Jinak instalaci provádím právě tím skriptíkem sshmulti (http://www.abclinuxu.cz/blog/RoboShim/2008/6/sshmulti-sshm), takze na aktuálně na 18 serverech nainstaluju tinyproxy jedním příkazem a nemusím se s tím nějak složitě dělat.

Soubor s proxy má jednoduchý formát, prostě SSH server|http://proxy:port. Důležitá je přitom pouze ta adresa proxy, ten SSH je pouze pro výpis nápovědy. Jinak ten tunel na SSH server můžete vytvářet buď pomocí parametrů u ssh (-L localport:remotehost:remoteport), což je ale v případě použítí sshmulti dost nešikovné, nebo si pro používané SSH servery nastavit PortForward v ~/.ssh/config přidáním rádky LocalFoward localport remotehost:remoteport. Já mám takhle pro každý server vlastní konfiguraci, takže při hromadném připojení se mi tunely vytvoří. Pokud byste měli servery s proxy daemonama v jedné síti, tak se můžete SSHckem připojit pouze a jeden server v té síti a udělat tunely pro různé lokální porty a ty pak z toho SSH serveru směřovat na různé proxy servery, vyjádřeno SSH konfigurací asi takhle:

Host SSH.server.domain.com
  LocalForward 3000 proxy1.domain.com:8888
  LocalForward 3001 proxy2.domain.com:8888
  LocalForward 3002 proxy3.domain.com:8888
Přístup na těch proxy serverech pak stačí povolit pouze z toho SSH serveru. Pokud chcete použít pouze přístup přímo z lokálního serveru bez proxy, tak v souboru s proxy zadejte pouze "NONE" místo proxy URL.

Když už máte takhle seznam proxy serverů, tak na začátku skriptu se projdou parametry a můžete trochu upravit seznam proxy serverů, které se skutečně použijou. Pokud nezadáte žádný parametr pro manipulaci se seznamem proxy, použijou se všechny proxy. Pokud zadáte parametr -a (jako ADD), tak se do prázdého seznamu budou přidávat pouze zadané proxy z originálního seznamu. Naopak, pokud použijete -d (jako DELETE), tak se originální seznam zkopíruje celý a budou se proxy odebírat. ADD a DELETE udáváte číslem, které zastupuje proxy server v originálním seznamu. Kromě toho můžete použít taky přepínač -p (jako PROXY) a tam zadáte plnou URL proxy serveru.

Dál můžete zadat přepínač -r (RATE), kterým limitujete rychlost stahování wgetem (man wget --limit-rate). Dál jsou tam dva přepínače -c (CONSOLE) a -x (Xka), kterýma vynucujete použití konzole nebo Xek. Samozřejmě, že pokud budete spouštět přes SSH terminál bez X-forwardu a vynutíte Xka, tak to bude "zlobit". Na druhou stranu můžete v Xkách vynutit konzoli a zadávat CAPTCHA kód na konzoli.

No a dostali jsme se k hlavnímu cyklu, kterej se provádí, dokud jsou nějaké URL ke stahování. Nejdřív se otestuje, jestli už soubor z URL neexistuje a když existuje, tak se přeskočí s hlášením. To je opatření, aby náhodou stahovač zbytečně nestahoval už stažený soubor. No a když neexistuje, tak se jde ke stahování.

Postup se téměř opakuje: přečíst stránku, vyparsovat hodnoty, připravit další request. Nejdřív se přečte první stránka ze zadaného URL. Tam je formulář na výběr stažený jako registrovaný uživatel nebo free. Já taham free, takže se vyhledá URL pro správné tlačítko. Vyšle se teda request pro nalezené URL s těmi správnými POST daty. V dalším výstupu už jsou ta důležitá data. Buď je v HTML stránce text, že jste vypotřebovali váš stahovací limit a musíte nějakou dobu čekat (podle mých zkušeností tak 50-120 minut). V tom případě se použije další proxy. Pokud jste limit nepřesáhli a můžete stahovat, najde se v textu obrázek CAPTCHA, čas pro čekání před stahováním (obvykle 60-120 sekund), popis pro zadání kódu, jméno stahovaného souboru a hlavně URL pro stažení.

Jenom vsuvku uvedu, že Rapidshare je dost aktivní v úpravách systému, takže během psaní tohoto textu změnili typ CAPTCHA (zrušili koťátka a štěňátka a zobrazujou CAPTCHA v 3D drátovém modelu znaků vytlačených do plochy) a dál URL pro zobrazení CAPTCHA kódu už není čistý HTML, ale do stránky to vypisuje JavaScript a používají operátor spojování řetězců, znak plus "+".

A ještě jednu vsuvku. Než jsem se dostal k tomu, abych tenhle skript vystavil, tak se rapid rozhodnul zrušit CAPTCHA úplně, takže je teď jeden z těch lepší sdílečů, který nepožaduje interaktivní práci. I přesto jsem kód pro captcha nechal, kdyby se ho někdy v budoucnu rozhodli zase vrátit, tak to bude aspoň jednodušší.

Dále se z odstavce před vsuvkou pokračuje tím, že se počká zadaný čekací čas před stahováním. Následující popis práce s CAPTCHA samozřejmě platí pouze tehdy, pokud je CAPTCHA obrázek nalezen. Pak se stáhne obrázek CAPTCHA. Pokud je skript spuštěný z terminálu z X serveru a nebyla požadována konzole, tak se obrázek zobrazí v gqview (tohle je jedna z dependencies, ale můžete si prohlížeč samozřejmě změnit) a dále se zobrazí Xdialog (druhá dependence) a tím se přečte kód a po zadání kódu se gqview zakilluje a captcha smaže. Pokud skript neběží v Xkách nebo byla požadována pouze konzole, tak se obrázek nezobrazí a na konzoli se požaduje zadání kódu. Obrázek můžete zobrazit více způsoby: (a) stažením na lokální stanici s prohlížečem obrázků, (b) nastavení web serveru pro /tmp (případně si můžete ve skriptu změnit) a zobrazení obrázku ve web browseru, (c) zobrazením obrázku pomoci nejaké ASCII-art knihovny (např. aa nebo caca), ale netuším, jak dobře tu CAPTCHu dokážete rozeznat.

No a když zadáte kód, tak se připraví POST data a wgetem se stáhne soubor.

No a skript je tady.

#!/bin/bash

proxiesfile="$HOME/.download-proxies"

if ! [ -e "$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

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 "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 "value please"
          exit
        fi
      ;;
      -r)
        if [ $# -gt 1 ];then
          rate="--limit-rate=$2"
          i=$[$i-1]
          shift 2
        else
          echo "value please"
          exit
        fi
      ;;
      -p) 
        if [ $# -gt 1 ];then
          proxylist="$proxylist $2"
          shift 2
          i=$[$i-1]
        else
          echo "value please"
          exit
        fi
      ;;
      -c)
        console=1
        shift
      ;;
      -x)
        console=0
        shift
      ;;
      *)
        v="$1"
        shift 1
        set -- "$@" "$v"
      ;;
    esac
    i=$[$i-1]
  done

  if [ -z "$proxylist" ] ;then proxylist="$allproxylist";fi

  while [ $# -gt 0 ];do

    if [ -e "$( basename "$1" )" ] && [ -s "$( basename "$1" )" ];then
      echo "File $( basename "$1" ) already exists and is not empty, not downloading, please delete it if you want to download"
    else

      echo "Downloading URL: $1"

      for proxy in $proxylist ;do
        if [ "$proxy" = "NONE" ];then
          unset http_proxy
        else
          export http_proxy="$proxy"
        fi

        echo "HTTP PROXY: $http_proxy"
        echo "GET 1: $1"
        output1="$( wget $rate -U "$agent" -nv -O - "$1" )"
        url="$( echo "$output1" | perl -e 'undef $/;$a=<STDIN>;print sprintf("%s",$url) if ((($tag)=($a=~m,(<form[^>]+id="ff"[^>]+>),is)) and (($url)=($tag=~m,action="([^"]+)",is)));' )"
        echo "GET 2 : $url"
        output2="$( wget $rate -U "$agent" -nv -O - --post-data="dl.start=Free" "$url" )"
        delay="$( echo "$output2" | perl -e 'undef $/; $a=<STDIN>;print "$1" if ($a=~m,var\s+c\s*=\s*(\d+)\s*;,is);' )"
        echo "DELAY: $delay"
        wait="$( echo "$output2" | perl -e 'undef $/; $a=<STDIN>;print "$1" if ($a=~m,(?:wait|try\s+again\s+in\s+(?:about)?)\s+(\d+\s+minutes?),is);' )"
        echo "WAIT: $wait"
        img="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>;print "$img" if (($img)=($a=~m,<img\s+src="([^"]+/access[^"]+)",is)) and ($img=~s/\x27\s*\+\s*\x27//g);' )"
        echo "IMG: $img"
        codetitle="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>; print "$1" if ($a=~m,(security\s+question[^\x27]+)\x27,is);' )"
        if echo "$codetitle" | grep -qE 'Have[[:space:]]+Fun';then happyhour=1;else happyhour=0;fi
        echo "CODETITLE: $codetitle"
        echo "HAPPYHOUR: $happyhour"
        file="$( echo "$output2" | perl -e ' undef $/; $a=<STDIN>;print "$1" if ($a=~m,<form\s+name="dlf?"\s+action="[^"]+/([^"/]+)",is);' )"
        echo "FILE: $file"
        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 "URL2: $url2"
        echo "HTTP PROXY: $http_proxy"
        if [ -n "$file" ] && [ -n "$url2" ];then
          if [ $happyhour -eq 0 ];then
            if [ -n "$delay" ];then for i in `seq $delay -1 1`;do echo -en "waiting $delay seconds [ $i ]     \r";sleep 1;done;echo;fi
            printf "URL: %s\nFile: %s\nIMG Code: %s\n" "$url2" "$file" "$img"
            echo "HTTP PROXY: $http_proxy"
            if [ -n "$img" ];then
              wget $rate -U "$agent" -nv -O "/tmp/$( basename "$img" )" -c "$img"
              if [ -n "$DISPLAY" ];then gqview "/tmp/$( basename "$img" )" >/dev/null 2>&1 & pid="$!" ; fi
              # display "$img" &
              code=""
              if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
                while [ -z "$code" ];do code="$( Xdialog --wmclass 'down-rapid' --no-cancel --title "RapidShare downloader" --screen-center --stdout --inputbox "Enter the CAPTCHA code\\n($codetitle)" 14 40 )" ; if [ $? -eq 1 ];then code="-";fi;done
              else
                while [ -z "$code" ];do read -p "Code ($codetitle) ['-' for stop]: " code;done
              fi
              if [ -n "$DISPLAY" ];then kill "$pid" ; fi
              rm -f "/tmp/$( basename "$img" )"
            else
              code="*"
            fi
            if [ "$code" != "-" ];then
              ### code="$( echo "$code" | tr 'a-z' 'A-Z' )"
              cmd="/bin/false"
              echo "$url2" | ( IFS="|";while read url data;do
                  set -x
                  if [ "$code" = "*" ];then
                    codetxt=""
                  else
                    codetxt="&accesscode=$code"
                  fi
                  if [ -z "$data" ];then
                    actionstring="actionstring=1"
                  else
                    actionstring="actionstring=${data}"
                  fi
                  if wget $rate -U "$agent" -c -O "$file" --post-data="${actionstring}${codetxt}" "$url"; then break;fi
                  set +x
                done 
              )
              if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 1000 ];then break;else echo "Unable to continue download";exit 1;fi
            else
              exit 1
            fi
          else
            echo "$url2" | ( IFS="|";while read url data;do
                set -x
                if wget $rate -U "$agent" -c -O "$file" --post-data="actionstring=1" "$url"; then break;fi
                set +x
              done 
            )
            if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 1000 ];then break;else echo "Unable to continue download";exit 1;fi
          fi
        elif [ -n "$wait" ];then
          echo "Wait $wait"
        else
          echo "$output"
          exit 3
        fi

      done
      if [ -e "$file" ] && [ $( stat -c '%s' "$file" ) -gt 100000 ];then true;else echo "Unable to continue download";exit 1;fi

    fi

    shift
  done


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 } ] 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)
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

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

4.1.2009 22:20 kecal
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin
Osobne jsem skepticky k 'neprustrelnosti' podobnych bash skriptu.
4.1.2009 22:35 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid

Co presne myslis tou "neprustrelnosti"? Me to funguje, jak ma. A jak jsem psal u tech dalsich skriptu, kdyz to zmeni, tak skriptik upravim.

4.1.2009 22:23 VRtulnikk | skóre: 17 | blog: blogisek | Rokycany
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin
Tak dlouho jsem řešil podobné věci, až jsem si koupil premium :)
4.1.2009 23:20 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid

Jo, taky jsem ted premyslel, ze bych si na stahnuti dalsich sezon Big Bang Theory koupil treba jenom 3-denni ucet pres telefon (PayPal nemam, zatim ho na nic nepotrebuju). To by se docela dalo, ale pak jsem si to znovu rozmyslel a opravdu se mi nevyplati to platit, kdyz polovina nalezenych odkazu rapidshare nefunguje a ze vsech stahovanych souboru polovinu stahnu pres jiny sdilece (megauploads, leteckaposta, ulozto). Navic obvykle taham 2-6 souboru tydne (Heroes, HIMYM a IT-Crowd), navic kdyz je pauza ve vysilani, tak ani to. Takze se mi opravdu nevyplati zarizovat premium ani na jeden den. Naposledy jsem tahal Dextra 3.sezonu (asi 12 dilu, z toho asi 3 dily z rapidu po 2 archivech, zbytek megaupload), pouzil jsem celkem asi jenom 5 proxy serveru a tahal jsem z mixu rapidshare a megaupload. A stahnul jsem to asi behem 3 hodin. Pak jsem jeste nasel Transporter 3 (6 archivu z rapidu). No a pak nic pres 3 tydny. Navic me vubec nebavi tahat to pres firefox - kdyz mi FF chcipne (nebo ho musim zabit), abych tahal znovu. Nehlede na vic soucasnych tahani pres ruzny proxy.

Jinak samozrejme existuje spousta ruznych klientu pro premium ucty, takze muzes pouzit ty. Tohle je skriptik pro anonymni pristup.

6.1.2009 17:58 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: down-rapid
+1 ;-)
Jistota je jistota
4.1.2009 23:19 Tomáš | skóre: 31 | blog: Tomik
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin

 Pěkné. Jenom bych poradil, že to funguje i bez user-agent.  A chtěl bych se zeptat, dalo by se to udělat tak, aby se to stahovalo na ty jednotilvé servery, když na jednom je málo volného místa?

4.1.2009 23:41 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid
Pěkné.

Diky

Jenom bych poradil, že to funguje i bez user-agent.

Je to mozny. Kdyz jsem to psal, tak mi to nejak nechodilo. Tak jsem experimentoval s ruznyma vecma (referer, user-agent, cookies) no a agent mi tam zustal. Tak jsem ho tam nechal - funkcnosti to neubira a ano to nezvysuje zatez. Sice to asi zrejme rapid nebude nikdy testovat (protoze je jednoduchy to padelat a testovani user-agent by zabralo vetsi namahu, nez pro klienta to padelat), ale i tak to muze zvysi sance na funkcnost. Ale samozrejme si to muzes odmazat.

A chtěl bych se zeptat, dalo by se to udělat tak, aby se to stahovalo na ty jednotilvé servery, když na jednom je málo volného místa?

Ja mam takhle k dispozici asi 5 serveru, kam muzu tahat a ukladat to tam, takze ten skript mam na tehle strojich a spoustim ho tam, kde potrebuju. Ty proxy servery jsou opravdu jenom kvuli tomu, aby se pouzila jina IP adresa.

Kdybys to chtel ukladat na ruzny servery, tak by se dal asi udelat nejakej dalsi skriptik, kterymu bys dal seznam serveru, kam to chces tahat, ten by se pak pres SSH podival, kolik je mista a kdyz by bylo vic nez nejaky minimum, tak by to tam stahnul. Kdyby bylo malo, tak by mrknul na dalsi ssh server. Samozrejme by to vyzadovalo, abys mel login na ty servery pres klice, aby to neoxidovalo s heslem. A taky bys mel nastaveno NONE v ~/.download-proxies, aby to tahalo primo z toho serveru. Videl bych to na neco takovydleho:

#!/bin/bash
## minimum volnyho mista 2GB
minfree=$(( 2 * 1024 * 1024 * 1024 ))
## cilovy adresar, kam se ma stahovat
downdir=/data/download
if [ $# -lt 2 ];then
  echo "$0 URL ssh-server ssh-server ..."
else
  URL="$1"
  shift
  while [ $# -gt 0 ];do
    if [ "$( ssh "$1" df -P -B 1 "$downdir" | tail -n1 )" -ge "$minfree" ];then
      ssh "$1" down-rapid "$URL"
      shift $(( $# - 1 ))
    fi
    shift
  done
fi

Samozrejme to netestuje, jestli to ten skript na tom serveru stahnul dobre. To se holt musi delat rucne, ale to, rekl bych, je uz drobnost.

5.1.2009 15:13 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin
Uz pred vyse rokom som si spravil velmi podobny skript. Pritomnost X-iek som testoval podla premennej DISPLAY. V textovom mode som zobrazoval cez cacaview (Vdaka zoomu a antialiasingu sa dali citat aj tie enhanced obrazky so psami a mackami, aj ked to chvilu trvalo). Tiez od zaciatku pouzivam tunelovanie cez ssh na rozne proxy s rozdielom, ze tunely si otvara skript podla toho ako potrebuje. Navyse si vzdy osaha dostupne proxy a taha cez tu, na ktoru musi najmenej cakat. Do coho sa mi uz par mesiacov nechce je viacvlaknovost - aby jedna instancia skriptu vyuzivala vsetky proxy. Na druhej strane vytvara pomocne suborove zamky, takze nie je problem pustit vo viacerych terminaloch skript viackrat a oni sa uz dohodnu, aby nepouzivali rovnaku proxy v ten isty cas.
If you hold a Unix shell up to your ear, you can you hear the C.
5.1.2009 16:13 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid
Uz pred vyse rokom som si spravil velmi podobny skript.

Urcite nas bude vic:-)

Pritomnost X-iek som testoval podla premennej DISPLAY.

Presne tak testuju i ja, ale nechavam moznost neotravovat oknama a umoznuju nacteni captchi z console (ikdyz by to slo taky jednoduse vymazanim DISPLAY)

V textovom mode som zobrazoval cez cacaview (Vdaka zoomu a antialiasingu sa dali citat aj tie enhanced obrazky so psami a mackami, aj ked to chvilu trvalo).

Tak takhle drsnej teda opravdu nejsem:-) Ikdyz jsem nad tim premyslel, ze by to slo, opravdu si nejsem jistej, jak moc by to bylo pouzitelny.

Tiez od zaciatku pouzivam tunelovanie cez ssh na rozne proxy s rozdielom, ze tunely si otvara skript podla toho ako potrebuje. Navyse si vzdy osaha dostupne proxy a taha cez tu, na ktoru musi najmenej cakat. Do coho sa mi uz par mesiacov nechce je viacvlaknovost - aby jedna instancia skriptu vyuzivala vsetky proxy. Na druhej strane vytvara pomocne suborove zamky, takze nie je problem pustit vo viacerych terminaloch skript viackrat a oni sa uz dohodnu, aby nepouzivali rovnaku proxy v ten isty cas.

Tak klobouk dolu, takhle jsem to uz nedomakal. Taky tam mam kod, ktery zpusobi pouziti dalsi proxy, kdyz by se melo cekat dalsi dobu. Ale aby si to samo nahazovalo ssh tunel na tu proxy, zamky atd, to fakt delat nebudu (hlavne proto, ze tu proxynu vzdycky pred stahovanim rucne nainstaluju a po dokonceni stahovani zase odinstaluju, takze stejne to pripojeni musim rucne nahodit). Samozrejme je mozny spustit ten skript vickrat. Bud jim prepinacema reknes, ze maji pouzivat ruzny proxy, nebo to nechas, pak by se melo stat akorat to, ze pres nejakou proxynu bude stahovat jenom ten, kterej se na ni dostane prvni, ostatni asi budou mit hlasku, ze z ty IP adresy uz se stahuje (vida, tohle jsem nikdy nezkousel, osobne definuju rucne tu proxy, ktera se ma pouzit), nebo ze se musi pockat.

5.1.2009 17:50 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: down-rapid
Uzitocnost osahavania viacerych proxy a vyber tej, na ktoru treba cakat najmenej suvisi s rychlostou linky a dennou dobou. Pocas dna (teda pocas dna cca na vychodnom pobrezi USA) mi to taha okolo 60kB/s, takze 100MB file to stiahne cca za 30 minut. Potom 16 minut caka. Takze cca 65% taha a zvysok sa flaka. V noci to taha okolo 220kB/s, takze 100MB za 8 minut a zase caka 16 minut. Takze je uzitocny uz iba okolo 30% casu. Pri 3 proxy a ich automatickom vyhladavani by tahal teoreticky blizko 100%.

Otvaranie ssh tunela nie je nic zlozite.
ssh -L"localhost:`getfreeport`:$host":80 -aNT "$proxyhost" 2>/dev/null &
Uzitocne je pouzivat prikaz "trap ... EXIT", aby po pade nemusel clovek rucne cistit otvorene spojenia.
If you hold a Unix shell up to your ear, you can you hear the C.
5.1.2009 21:06 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid

JO, tak ten muj skript proste prochazi postupne vsechny, takze pokud maji vsechny nejaky cekani, tak to skonci bez stazeni. Pak staci spustit znovu, mrknout na nejmensi cas, hodit sleep pred ten prikaz a spustit znovu.

Driv mi to z rapidu tahalo mezi 300-500kB/s, ted to jede tak 100-200kB/s, kdyz to vybehne na 300kB/s, tak je to opravdu dobry. Takze kdyz jsem driv tahal tech 500kB/s (100MB bylo asi za 3 minuty), tak se mi stavalo, ze na vsech asi 17 proxynach jsem musel cekat, ale pouze jednotky minut, takze jsem to resil tim sleepem.

To vytvareni tunelu urcite neni slozity, nicmene ja potrebuju interaktivne tinyproxy nainstalovat a pak zase odinstalovat, takze ssh musim spoustet vzdycky, takze tunely mam v ~/.ssh/config a pak uz se jenom loguju ala cluster-ssh (osobne pouzivam vlastni skirptik sshmulti http://www.abclinuxu.cz/blog/RoboShim/2008/6/sshmulti-sshm), takze jednim prikazem pak tinyproxy nainstaluju na vsech proxynach najednou a stejne tak jednim prikazem odinstaluju. A stejne tak nemusim na spojeni pouzivat trap, protoze spojeni spravuju manuale sam.

Ale mas to fakt hezky vychytany:-)

6.1.2009 17:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin
Tenhle skript pro GreaseMonkey taky nevypadá špatně.
6.1.2009 17:49 VSi | skóre: 28
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin

Místo tinyproxy je zajímavá možnost tohle:

www.okisoft.co.jp/esc/python/proxy/

stačí mít nainstalovyný Python, a spustit. Celé je to v jednom souboru. Implicitně poslouchá na portu 8000, povolené klienty a port jde nastavit jako parametr.

6.1.2009 18:17 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid

No, zkusil jsem to a vubec to nevypada spatne!! Diky. Je to urcite o hodne lepsi reseni, nez porad instalovat a odinstalovavat tinyproxy

7.1.2009 03:56 Deleted [8409] | skóre: 14 | blog: darkblog
Rozbalit Rozbalit vše Re: down-rapid
Odpovědět | Sbalit | Link | Blokovat | Admin
Zajimavy skript. Ja osobne jsem zkusil program FreeRapid a nemuzu si stezovat. Mam pocit, ze umi i nastaveni tech proxy serveru.
7.1.2009 10:32 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-rapid

No, tak to vypada taky dobre:) V Jave napsany, takze bezi na Lin+Win. Ja jsem si napsal ten skriptik i pro ty dalsi stahovace. Vubec by nebylo spatny, kdyz tenhle freerapid umel i dalsi share-weby. Sice je blby, ze se neda spoustet vzdalene pres ssh (sice by to slo pres vnc, ale clovek uz proste potrebuje navic nejaky X prostredi). Ja jsem spis cmdline orientovanej:)

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.