Organizace Open Container Initiative (OCI) (Wikipedie), projekt nadace Linux Foundation, vydala Runtime Specification 1.3 (pdf), tj. novou verzi specifikace kontejnerového běhového prostředí. Hlavní novinkou je podpora FreeBSD.
Nový open source router Turris Omnia NG je v prodeji. Aktuálně na Allegro, Alternetivo, Discomp, i4wifi a WiFiShop.
Na YouTube a nově také na VHSky byly zveřejněny sestříhané videozáznamy přednášek z letošního OpenAltu.
Jednou za rok otevírá společnost SUSE dveře svých kanceláří široké veřejnosti. Letos je pro vás otevře 26. listopadu v 16 hodin v pražském Karlíně. Vítáni jsou všichni, kdo se chtějí dozvědět více o práci vývojářů, prostředí ve kterém pracují a o místní firemní kultuře. Můžete se těšit na krátké prezentace, které vám přiblíží, na čem inženýři v Praze pracují, jak spolupracují se zákazníky, partnery i studenty, proč mají rádi open source a co
… více »Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za říjen (YouTube).
Jeff Quast otestoval současné emulátory terminálu. Zaměřil se na podporu Unicode a výkon. Vítězným emulátorem terminálu je Ghostty.
Amazon bude poskytovat cloudové služby OpenAI. Cloudová divize Amazon Web Services (AWS) uzavřela s OpenAI víceletou smlouvu za 38 miliard USD (803,1 miliardy Kč), která poskytne majiteli chatovacího robota s umělou inteligencí (AI) ChatGPT přístup ke stovkám tisíc grafických procesů Nvidia. Ty bude moci využívat k trénování a provozování svých modelů AI. Firmy to oznámily v dnešní tiskové zprávě. Společnost OpenAI také nedávno
… více »Konference Prague PostgreSQL Developer Day 2026 (P2D2) se koná 27. a 28. ledna 2026. Konference je zaměřena na témata zajímavá pro uživatele a vývojáře. Příjem přednášek a workshopů je otevřen do 14. listopadu. Vítáme témata související s PostgreSQL či s databázemi obecně, a mohou být v češtině či angličtině.
Byl vydán Devuan 6 Excalibur. Přehled novinek v poznámkách k vydání. Kódové jméno Excalibur bylo vybráno podle planetky 9499 Excalibur. Devuan (Wikipedie) je fork Debianu bez systemd. Devuan 6 Excalibur vychází z Debianu 13 Trixie. Devuan 7 ponese kódové jméno Freia.
Společnost Valve aktualizovala přehled o hardwarovém a softwarovém vybavení uživatelů služby Steam. Podíl uživatelů Linuxu poprvé překročil 3 %, aktuálně 3,05 %. Nejčastěji používané linuxové distribuce jsou Arch Linux, Linux Mint a Ubuntu. Při výběru jenom Linuxu vede SteamOS Holo s 27,18 %. Procesor AMD používá 67,10 % hráčů na Linuxu.
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:8888Pří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
Tiskni
Sdílej:
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.
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?
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.
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.
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.
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
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.
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:)