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 21:22 | Nová verze

    Armbian, tj. linuxová distribuce založená na Debianu a Ubuntu optimalizovaná pro jednodeskové počítače na platformě ARM a RISC-V, ke stažení ale také pro Intel a AMD, byl vydán ve verzi 24.5.1 Havier. Přehled novinek v Changelogu.

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

    Společnost xAI založena Elonem Muskem a stojící za AI LLM modelem Grok získala investici 6 miliard dolarů.

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

    Finálový zápas mistrovství světa v ledním hokeji přinesl nový rekord NIX.CZ (𝕏): "Dosavadní absolutní maximum našeho propojovacího uzlu bylo překonáno v čase 21:10, kdy jsme při přenosu dat dosáhli 3,14 Tbps. Je třeba také doplnit, že po deváté hodině večerní byly na maximu i ostatní datové přenosy nesouvisející s hokejovým šampionátem".

    Ladislav Hagara | Komentářů: 2
    dnes 15:11 | Pozvánky

    Přihlaste svou přednášku na další ročník konference LinuxDays, který proběhne 12. a 13. října na FIT ČVUT v pražských Dejvicích. CfP poběží do konce prázdnin, pak proběhne veřejné hlasování a výběr přednášek.

    Petr Krčmář | Komentářů: 0
    25.5. 19:00 | Zajímavý projekt

    Na crowdsourcingové platformě Crowd Supply byla spuštěna kampaň na podporu open source biometrického monitoru ve tvaru hodinek HealthyPi Move. Cena je 249 dolarů a plánovaný termín dodání listopad letošního roku.

    Ladislav Hagara | Komentářů: 13
    24.5. 22:22 | Upozornění Ladislav Hagara | Komentářů: 21
    24.5. 17:44 | Nová verze

    Firma Murena představila /e/OS verze 2.0. Jde o  alternativní sestavení Androidu bez aplikací Google. Mezi novinkami je podrobnější nastavení ochrany soukromí před sledováním aplikacemi. Murena prodává několik smartphonů s předinstalovaným /e/OS (Fairphone, repasovaný Google Pixel 5).

    Fluttershy, yay! | Komentářů: 0
    24.5. 14:33 | Zajímavý software

    Do 30. května lze v rámci akce Warhammer Skulls 2024 získat na Steamu zdarma hru Warhammer 40,000: Gladius - Relics of War.

    Ladislav Hagara | Komentářů: 1
    24.5. 13:33 | Nová verze

    HelenOS (Wikipedie), tj. svobodný operační systém českého původu založený na architektuře mikrojádra, byl vydán ve verzi 0.14.1. Přehled novinek v poznámkách k vydání. Vypíchnou lze nabídku Start. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 3
    23.5. 23:22 | Zajímavý software

    BreadboardOS je firmware pro Raspberry Pi Pico (RP2040) umožňující s tímto MCU komunikovat pomocí řádkového rozhraní (CLI). Využívá FreeRTOS a Microshell.

    Ladislav Hagara | Komentářů: 0
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (89%)
     (3%)
     (4%)
     (4%)
    Celkem 881 hlasů
     Komentářů: 16, poslední 14.5. 11:05
    Rozcestník

    Užitečné skripty 6: stahujeme z rapidshare

    12.4.2007 12:57 | Přečteno: 9416× | Linux

    Dnešní skript je trochu výjimečný tím, že když jsem začal psát tuto sérii, tak ještě neexistoval. Hledal jsem něco, čím se dají v linuxovém terminálu stahovat soubory z rapidshare, a to bez účtu na rapidshare. Našel jsem plno úžasných aplikací pro Windows, ale nic pro moje potřeby. Tak jsem si něco napsal sám

    Abstrakt

    Tento skript umí stahovat soubory ze serverů rapidshare (.de, .com). Využívá pouze základní nástroje a měl by tak fungovat všude (no dobře, na mikrovlnce mi to nefungovalo, na Asus WL500g taky ne, ale stačí oprava na jeden řádek). Umí ověřit základní chybové stavy (soubor už na serveru není, soubor na serveru sice je, ale server ho ještě nedovolí stáhnout). Od takto jednoduchého skriptu se nedá čekat, že by uměl lámat captcha, takže se zeptá uživatele, zbytek dělá sám.

    Skript využijete, pokud potřebujete stahovat něco na počítač, ke kterému nemáte momentálně fyzický přístup. Na tomto počítači vůbec nemusí být v provozu grafika, protože si captcha obrázek můžete prohlédnout z jiného počítače. Typické využití asi bude: sedím ve škole/práci a počítač doma sosá.

    Základní poznatky

    Stahování probíhá tak, že člověk někde získá odkaz, zadá do prohlížeče a dostane se tak na úvodní (první) stránku (kde se vybírá Premium nebo Free). Když klikne na Free, dostane se na druhou stránku, kde je captcha. Po napsání správného kódu se soubor začne stahovat.

    Servery jsou proti botům chráněny pomocí captcha. Obrázek se stahuje protokolem https. (může někdo vysvětlit, proč nestačí http?)

    Obě varianty rapidshare se trošku liší v uživatelském rozhraní. Na modifikaci .com se server (zrcadlo, mirror), odkud se má stahovat, nastavuje už ve formuláři na úvodní stránce , kdežto na .de se to řeší až na druhé stránce (tam, kde je captcha). V obou modifikacích se dá server (zrcadlo) změnit na druhé stránce.

    Modifikace .de nutí uživatele čekat nějakou dobu, než se zobrazí captcha. Je to spojené s ošklivě vypadajícím javascriptem (unescape a změť znaků, z nichž třetina je %). Existují návody, jak toto obejít, ale zdá se, že už nefungují, aspoň na mě vždy vybafla hláška psaná nejspíš německy. Modifikace .com čekací dobu nepoužívá a zobrazí captcha hned.

    Smysl pro humor: když si zkopírujete adresu obrázku captcha a později si ho necháte zobrazit v prohlížeči, přečtete na něm "LOL".

    Fair Play: když si necháte zobrazit captcha obrázek několikrát po sobě bez načtení celé stránky, bude na obrázku nápis, že jste bot a server se s vámi nebude bavit. Když načtete celou stránku znova, je všechno v pořádku, žádný IP ban se nekoná.

    Zdá se, že captcha na rapidshare je case insensitive. Navíc možná umožňuje záměnu nuly a písmene 'O', protože se mi ještě nikdy nestalo, že bych napsal kód špatně, i když v něm bylo něco kulatého.

    Samotný skript

    Soubor download.sh
    1. #!/bin/sh
    2. #usage: $0 <url>
    3. #tested on rapidshare.de and rapidshare.com
    4. #user settings
    5. url=$1
    6. directory=~/tmp/rs
    7. captchaimage=$directory/captcha.png
    8. tmpfile=$directory/wgettmp
    9. #other settings
    10. wget=/usr/bin/wget
    11. #auxiliary functions
    12. countdown(){
    13. echo Countdown
    14. x=$1
    15. until [ $x -le 0 ]; do
    16. echo -e -n "\\r$x "
    17. x=$(($x - 1))
    18. sleep 1
    19. done
    20. }
    21. #============================================================
    22. #The first page
    23. $wget -O $tmpfile $url
    24. present=`grep "You want to" $tmpfile | wc -l `
    25. if [ $present -ge 0 ]
    26. then
    27. echo "The file is present"
    28. else
    29. echo "The file is not present, exitting"
    30. exit 1 #the file is not available
    31. fi
    32. #============================================================
    33. #The second page (with captcha)
    34. action=`grep "action=" $tmpfile | sed -e 's/.*action="\([^"]*\)".*/\1/'`
    35. uri=`grep 'name="uri"' $tmpfile | sed -e 's/.*name="uri" value="\([^"]*\)".*/\1/'`
    36. if [ x$uri != x ]
    37. then
    38. postData="uri=$uri&dl.start=Free" # rapidshare.de
    39. server="de"
    40. else
    41. postData="dl.start=Free" # rapidshare.com
    42. server="com"
    43. fi
    44. echo Debug information: ----------------
    45. echo Action is $action
    46. echo Post Data are $postData
    47. echo Server is $server
    48. echo -----------------------------------
    49. #The second page is downloaded here
    50. $wget --post-data="$postData" -O $tmpfile $action
    51. echo Second page downloaded ------------
    52. if [ $server = "de" ]
    53. then
    54. #the "hidden" form with needed information)
    55. encoded=`grep unescape $tmpfile| sed "s/.*unescape('\(.*\)'.*/\1/"`
    56. if [ x$encoded = x ]
    57. then
    58. minutes=`grep "Or wait" $tmpfile | sed -e "s/.*Or wait\(.*\)minutes.*/\1/"`
    59. echo Cannot download file yet, wait $minutes minutes
    60. exit 2
    61. fi
    62. wait=`grep "var c =" $tmpfile | sed -e "s/.*var c =\([^;]*\);.*/\1/"`
    63. #some not fully understood hack, it does not work everywhere
    64. #http://www.j-pfennig.de/LinuxImHaus/kde_cgi_tutorial.html
    65. # uencoded=`printf "${encoded//\%/\x}"`
    66. substitued=`echo $encoded | sed 's/%/\\\\x/g'`
    67. uencoded=`printf $substitued`
    68. imagename=`echo $uencoded | sed -e 's/.*<;img src="\([^"]*\)">.*/\1/'`
    69. action=`echo $uencoded | sed -e 's/.*action="\([^"]*\)".*/\1/'`
    70. echo Debug information: ----------------
    71. echo Imagename is $imagename
    72. echo Action is $action
    73. echo Wait $wait
    74. echo -----------------------------------
    75. #rapidshare.de forces you to wait some time and it seem that
    76. #it really checks the time interval
    77. countdown $wait
    78. else #rapidshare.com
    79. action=`grep '<;form name="dl" action="' $tmpfile | sed -e 's/.*<;form name="dl" action="\([^"]*\)".*/\1/'`
    80. if [ x$action = x ]
    81. then
    82. minutes=`grep "Or wait" $tmpfile | sed -e "s/.*Or wait\(.*\)minutes.*/\1/"`
    83. echo Cannot download file yet, wait $minutes minutes
    84. exit 3
    85. fi
    86. imagename=`grep "Please enter" $tmpfile | sed -e 's/.*<;img src="\([^"]*\)".*/\1/'`
    87. fi
    88. echo Debug information: ----------------
    89. echo Imagename is $imagename
    90. echo Action is $action
    91. echo -----------------------------------
    92. #When the download form is displayed
    93. $wget -O $captchaimage "$imagename"
    94. #you will probably want to change the following line
    95. display $captchaimage &
    96. echo -----------------------------------
    97. echo ------ Enter Captcha ------------
    98. echo -----------------------------------
    99. echo -n "Enter captcha from the image: "
    100. read captcha
    101. if [ $server = "de" ]
    102. then
    103. postData="actionstring=Download&captcha=$captcha"
    104. else
    105. postData="actionstring=Download&accesscode=$captcha"
    106. fi
    107. echo Debug information: ----------------
    108. echo Post Data are $postData
    109. echo Action is $action
    110. echo Calling $wget:
    111. echo $wget --directory-prefix $directory --post-data="$postData" $action
    112. echo -----------------------------------
    113. #get the file
    114. $wget --directory-prefix $directory --post-data="$postData" $action
    115. echo Finished
    Lehké vysvětlení: Ve skriptu je hodně debugovacích informací, což není nikdy na škodu.

    Nejlepší na konec

    Skript se dá provozovat i na krabičkách, na kterých beží linux. Mám Asus WL500g s Olegovým firmware. Skript tam funguje, jenom se dvěma vadami, které se musí opravit:

    chybí příkaz 'wc', takže řádek 26 se musí upravit. Jako varování uvedu, že následující oprava nefunguje:

    • present=`grep "You want to" $tmpfile`
    • if [ "x$present" != x ]
    HTML tagy totiž spolehlivě zmatou bash.

    Program wget (vlastně busybox), který je v Olegově firmware, neumí '--post-data'. Je tedy potřeba použít plnou verzi wget [2]. Stačí rozbalit binárku kamkoliv na disk (binárka má přes 2MB, takže se asi musí dát na externí disk připojený přes USB) a na řádku 10 si nastavte správnou cestu. Nezapomeňte nastavit práva na spuštění.

    Odkazy

    1. Podobný skript, který ale vyžaduje Premium účet: http://www.markontech.com/2006/12/22/downloading-content-from-rapidsharecom-using-wget-and-bash/
    2. wget potřebný na Asus WL500g: http://wl500g.info/showthread.php?t=1370&highlight=wget+full

    Místa k vylepšení, otázky

    1. Přiznávám, že z programátorského hlediska nemusí být skript úplně skvělý, ale o to ani nešlo. Pokud by se někomu chtělo napsat ho lépe, budu jenom rád
    2. Kdyby se povedlo nějak pěkně lousknout captcha, bylo by to skvělé. Mělo by to pořád fungovat na malých krabičkách.
           

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    12.4.2007 13:59 Robert Krátký | skóre: 94 | blog: Robertův bloček
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Uff, je to pěkné, ale proč je skript s dvojitým řádkováním?
    12.4.2007 15:10 Tomáš | skóre: 31 | blog: Tomik
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Protoze chci, aby byly na vystupu videt mezery i ve vetsim poctu nez jedna, tak je to cele v PRE. Potom chci mit ocislovane radky, takze jsem to lupnul do OL. A dvojite radkovani je na svete. Bohuzel jsem nenasel navod, jak to udelat lepe.
    12.4.2007 14:06 Lu-Tze | skóre: 15 | blog: Lu-Tzeho blog
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Problém těhle skriptíků je v tom, že mají obvykle krátkou životnost - někde změněj název parametru a celej skript je rázem na nic. A pokud nejsi zrovna jeho autor, tak musíš složitě zjišťovat, kde ta chyba je.

    Chtělo by to nějakej přiměřeně umělointeligentní nástroj, kterej by dokázal sám podle toho, jak uživatel kliká, sestrojit ten konečnej automat, kterej popisuje pohyb na tom serveru (to znamená umět určit stav ve kterym sem /např.: stav špatně zadaná captcha/ a odvodit si akce, které mě dostanou do jiných stavů /např.: akce počkej 10 minut a pak následuj odkaz/). A kterej by samozřejmě uměl obejít captchu.
    12.4.2007 14:15 Oswald
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Tady je kdyžtak něco podobného pro edisk
    #!/bin/bash
    
    countDown() {
    	i=26
    	while ((--i >= 0)); do
    		echo -n "$i"
    		sleep 1
    		tput el1
    		tput cub 3
    	done
    }
    
    if [ $# != 1 ]; then
    	echo -e "\nUsage:\n\t$0 URL\n"
    	exit 1
    fi
    
    UA="Opera/9.12 (X11; Linux i686; U; en)"
    OUTPUT=~/Desktop/"$(basename $1 | sed -r 's/_[^_]+$//' | sed -r 's/-([^-]+)$/\1/')"
    DOWNLOAD="$(echo $1 | sed s/stahni/stahnout/)"
    
    echo -n Getting SID...
    SID="$(
    	curl -I --user-agent "$UA" "$1" 2>/dev/null | grep -Po '(?<=SID=)[^;]+'
    )"
    if [ -z "$SID" ]; then
    	echo " :("
    	exit 1
    fi
    echo " done: $SID"
    
    countDown
    
    
    curl --user-agent "$UA" \
         --output "$OUTPUT" \
         --cookie SID="$SID" \
         --referer "$1" \ 
         "$DOWNLOAD"
    Luboš Doležel (Doli) avatar 12.4.2007 18:18 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Stahujeme z RapidShare jinak ;-)
    1. Koupíme si premium account za pár babek
    2. Uložíme linky do links.txt
    3. wget -c -i links.txt --http-user=USERNAME --http-password=PASSWORD
    17.9.2007 21:40 Ciba, Vladimir Cibulka
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Ahoj, drobna oprava: wget -c -i links.txt --http-user=USERNAME --http-passwd=PASSWORD
    12.4.2007 18:50 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Neuveritelna nahoda, akurat som si v utorok napisal nieco podobne. Par rozdielov. CAPTCHA sa netaha na rapidshare.com cez https ale iba cez http. Mirror sa tiez vybera az na stranke s CAPTCHA. Pre mna bolo prioritou tahat rychlejsie ako normalne a vyuzit pri tom viac dostupnych IP adries (kolko IP adries mas, tolkokrat si clovekom). Takze moj skript je stavany tak, aby dokazal vyuzivat ssh-tunnely na vzdialene stroje. Namiesto wgetu pouzivam netcat. Mozno by to bolo vhodnejsie rieseni na routre. netcat ma 44kB a tych par hlaviciek si vyrobis rucne.

    A pred asi tyzdnom zrusili to kvazi encodovanie zoznamu mirrorov, takze uz sa netreba babrat s uudecode alebo podobne.

    Moj skript ked zisti, ze treba cakat, tak si pocka zisteny pocet minut+1 a potom to skusi znova. Budem este musiet dorobit, aby dokazal kruhovou sykorkou rozhadzovat linky na niekolko dostupnych IP adries. Zatial je to v stadiu, ze to treba robit rucne a pustit proces niekolkokrat, kazdy s disjunktnym zoznamom suborov na stiahnutie.
    If you hold a Unix shell up to your ear, you can you hear the C.
    Marián Kyral avatar 12.4.2007 21:00 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Nevím co máš za verzi olegova fw, ale v aktuální verzi wc v BusyBoxu je.
    [maros@wl-500gp root]$ wc -h
    wc: illegal option -- h
    BusyBox v1.1.3 (2007.01.01-14:37+0000) multi-call binary
    
    Usage: wc [OPTION]... [FILE]...
    
    A nainstalovat plnohodnotný wget taky není žádný problém:
    #ipkg install wget-ssl
    
    Aktuální verze je 1.10.2-3. To je myslím dost nové ;-)
    13.4.2007 10:07 Tomáš | skóre: 31 | blog: Tomik
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare

    Mam BusyBox v1.1.3 (2006.06.29-17:07+0000), to je trosku starsi. Myslim, ze verze firmwaru ma na konci 7f, v dobe, kdy jsem to instaloval, byla posledni stable.

    Tu anabazi s wget tam mam proto, ze to bude fungovat i bez ipkg (staci jedna binarka). Je pravda, ze potom nemas ani screen a nemohl by ses jenom pripojit, pustit stahovani a zase se odpojit. Samozrejme, ze ipkg je mocny nastroj a uz se chystam zprovoznit nahravani z internetovych radii pomoci streamripper (skript mam, jenom vyzkousim, jestli funguje).

    31.10.2008 20:44 Eddie
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    A nainstalovat plnohodnotný wget taky není žádný problém:

    No pro me to problem docela je. Provedu instalaci ,ale i pres to se mi wget stale odkazuje na ten v busyboxu . Nevite,jak spustit ten WGET-SSL ?
    Marián Kyral avatar 1.11.2008 07:24 Marián Kyral | skóre: 29 | blog: Sem_Tam | Frýdek-Místek
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    Nic jsem nastavovat nemusel. Při instalaci byly odkazy na busybox automaticky odstraněny. Když tak zkus spustit /opt/bin/wget
    [maros@wl-500gp root]$ type wget
    wget is a tracked alias for /opt/bin/wget
    [maros@wl-500gp root]$ ipkg files wget-ssl
    Package wget-ssl (1.11.4-1) is installed on /opt/ and has the following files:
    /opt/bin/wget
    /opt/man/man1/wget.1
    /opt/etc/wgetrc
    
    Successfully terminated.
    [maros@wl-500gp root]$ wget --version
    GNU Wget 1.11.4
    
    Copyright (C) 2008 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later
    <http://www.gnu.org/licenses/gpl.html>.
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    Originally written by Hrvoje Niksic .
    Currently maintained by Micah Cowan .
    [maros@wl-500gp root]$ 
    
    23.11.2007 12:38 Raiden
    Rozbalit Rozbalit vše Re: Užitečné skripty 6: stahujeme z rapidshare
    http://www.linuxexpres.cz/blog/rapidshare-download-zadny-problem

    Založit nové vláknoNahoru

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