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

down-iskladka, down-suborysk a down-uloziskosk

11.2.2009 02:45 | Přečteno: 2477× | Stahovaci skripty

Tak jsem splodil další stahovací skripty, tentokrát to jsou iskladka.cz, ulozisko.sk a subory.sk.

Protože je to převážně výsledek copy&paste z předchozích skriptů a protože už se mi chce spát, tak se k tomu nebudu rozepisovat. Jenom poznámka, ulozisko.sk funguje jenom z ČR nebo SR.

down-iskladka

down-suborysk

down-uloziskosk

down-iskladka

#!/bin/bash

if [ $# -eq 0 ];then
  cat <<EndHelp
Usage: $0 URL ...
EndHelp
else
  tmpdir="$( mktemp -d )"
  while [ $# -gt 0 ];do
    url1="$1"
    shift
    output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )"
    url2="$( dirname "$url1" )/$( echo "$output1" | perl -e '
        undef $/;
        $a=<STDIN>;
        if ((($url)=($a=~m,<iframe[^>]+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);
        };
      '
    )"
    output2="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" --load-cookies="$tmpdir/cookies" --referer "$url1" "$url2" )"
    data3="$( echo "$output2" | perl -e '
        undef $/;
        $a=<STDIN>;
        ($link)=($a=~m,var\s+downloadCounterLink\s*=\s*[\x27"]([^\x27"]+)[\x27"]\s*;,is);
        ($counter)=($a=~m,var\s+downloadCounter\s*=\s*(\d+)\s*;,is);
        if (($url)=($a=~m,^\s+document\.getelementbyid\("downloadstatus"\)\.innerhtml\s*=\s*"\s*<iframe[^>]+src=\x27(http.*/icopy/downloadbalancer[^\x27]+)\x27,im)) {
          $url=~s,"\+downloadCounterLink\+",$link,is;
        }
        $link=~tr/+/ /;
        $link=~s/%(..)/chr(hex($1))/ge;
        print sprintf("%s\\%s\\%s",$counter,$link,$url);
      '
    )"
    url3="${data3##*\\}"
    delay="${data3%%\\*}"
    file="${data3%\\*}"
    file="${file#*\\}"
    echo "URL: $url3"
    echo "FILE: $file"
    if [ -e "$file" ];then
      echo "SKIP: the file $file exists"
    else
      if [ -n "$delay" ];then for i in `seq $delay -1 1`;do echo -en "waiting $delay seconds [ $i ]     \r";sleep 1;done;echo;fi
      if [ -n "$url3" ];then
        wget -O "$file" -c --load-cookies="$tmpdir/cookies" --referer="$url2" "$url3"
      else
        echo "ERROR: no url to download"
        exit 1
      fi
    fi
  done
  rm -rf "$tmpdir"
fi

down-suborysk

#!/bin/bash

console=0

if [ $# -eq 0 ];then
  cat <<EndHelp
Usage: $0 URL ...
EndHelp
else
  tmpdir="$( mktemp -d )"
  while [ $# -gt 0 ];do
    case "$1" in
      "-c")
        console=1
      ;;
      "-x")
        console=0
      ;;
      * )
        url1="$1"
        shift
        output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )"
        data="$( echo "$output1" | perl -e '
            undef $/;
            $a=<STDIN>;
            ($delay)=($a=~m,^\bcislo\s*=\s*(\d+)\s*;,im);
            ($form)=($a=~m,(<form[^>]+name=captchaform[^>]*>.*?</form>),is);
            ($img)=($form=~m,<img[^>]+src="(/captcha3/captcha\.php\?id=[^"]+)"[^>]*>,is);
            ($url)=($form=~m,<form[^>]+action="([^"]+)",is);
            print sprintf("%s\\%s\\%s",$delay,$img,$url);
          '
        )"
        echo "$data"
        baseurl="${url1%/download/*}"
        url2="$baseurl${data##*\\}"
        captchaimg="${data#*\\}"
        captchaimg="$baseurl${captchaimg%\\*}"
        wait="${data%%\\*}"
        echo "URL: $url2"
        echo "captcha: $captchaimg"
        echo "wait: $wait"
        waitstart="$( date +"%s" )"
        if [ -n "$url2" ] && [ -n "$captchaimg" ];then
          wget $rate -U "$agent" -nv -O "$tmpdir"/cap.jpg --load-cookies="$tmpdir"/cookies --save-cookies="$tmpdir"/cookies --keep-session-cookies "$captchaimg"
          if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.jpg >/dev/null 2>&1 & pid="$!" ; fi
          code=""
          if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
            while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Megaupload downloader' --screen-center --stdout --inputbox 'Enter the CAPTCHA code' 10 40 )" ; if [ $? -eq 1 ];then code="-";fi;done
          else
            while [ -z "$code" ];do read -p 'Code ["-" for stop]: ' code;done
          fi
          if [ -n "$DISPLAY" ];then kill "$pid" ; fi
          if [ "$code" != "-" ];then
            if [ -n "$wait" ]; then
              realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))"
              if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ]     \r";sleep 1; done ; echo ; fi
            fi
            postdata="submitted=1&str=$code"
            wget --load-cookies="$tmpdir/cookies" --post-data="$postdata" --referer="$url1" "$url2"
          fi
        fi
      ;;
    esac
  done
  rm -rf "$tmpdir"
fi

down-uloziskosk

#!/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' ' ' )"

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="$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

  tmpdir="$( mktemp -d )"
  echo "TMPDIR: $tmpdir"

  while [ $# -gt 0 ];do
    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"
      url1="$1"

      output1="$( wget -O - -q --keep-session-cookies --save-cookies="$tmpdir/cookies" "$url1" )"
      data="$( echo "$output1" | perl -e '
          undef $/;
          $a=<STDIN>;
          ($form)=($a=~m,(<form[^>]+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[^>]+src="(/obrazky/obrazky\.php\?[^"]+)"[^>]*>,is);
          ($url)=($form=~m,<form[^>]+action\s*=\s*"([^"]+)",is);
          while (($hidden)=($form=~m,(<input[^>]+type\s*=\s*"hidden"[^>]*>),is)) {
            $form=~s,(<input[^>]+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);
        '
      )"
      baseurl="http://www.ulozisko.sk"
      wait="$( echo "$data" | sed -n -e '1p;' )"
      captchaimg="$( echo "$data" | sed -n -e '2p;' )"
      url2="$( echo "$data" | sed -n -e '3p;' )"
      postdata="$( echo "$data" | sed -n -e '4p;' )"
      filename="$( echo "$data" | sed -n -e '5p;' )"
      echo "URL: $baseurl$url2"
      echo "captcha: $baseurl$captchaimg"
      echo "wait: $wait"
      waitstart="$( date +"%s" )"
      if [ -n "$url2" ] && [ -n "$captchaimg" ];then
        url2="$baseurl$url2"
        captchaimg="$baseurl$captchaimg"
        wget $rate -U "$agent" -nv -O "$tmpdir"/cap.png --load-cookies="$tmpdir"/cookies --save-cookies="$tmpdir"/cookies --keep-session-cookies "$captchaimg"
        if [ -n "$DISPLAY" ];then gqview "$tmpdir"/cap.png >/dev/null 2>&1 & pid="$!" ; fi
        code=""
        if [ -n "$DISPLAY" ] && [ $console -eq 0 ];then
          while [ -z "$code" ];do code="$( Xdialog --no-cancel --title 'Ulozisko.Sk downloader' --screen-center --stdout --inputbox 'Enter the CAPTCHA code' 10 40 )" ; if [ $? -eq 1 ];then code="-";fi;done
        else
          while [ -z "$code" ];do read -p 'Code ["-" for stop]: ' code;done
        fi
        if [ -n "$DISPLAY" ];then kill "$pid" ; fi
        if [ "$code" != "-" ];then
          if [ -n "$wait" ]; then
            realwait="$(( $( date +"%s" ) - ( $waitstart + $wait ) ))"
            if [ $( date +"%s" ) -le $(( $waitstart + $wait )) ] ; then while [ $( date +"%s" ) -le $(( $waitstart + $wait )) ];do echo -en "waiting $wait seconds [ $(( $waitstart + $wait - $( date +"%s" ) )) ]     \r";sleep 1; done ; echo ; fi
          fi
          postdata="$postdata&antispam=$code"
          wget -c --load-cookies="$tmpdir/cookies" --post-data="$postdata" --referer="$url1" "$url2"
        fi
      fi
    done
    shift
  done
  rm -rf "$tmpdir"
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ář

11.2.2009 10:17 kolcon
Rozbalit Rozbalit vše Re: down-iskladka, down-suborysk a down-uloziskosk
Odpovědět | Sbalit | Link | Blokovat | Admin

dobra prace, jen bych z toho udelal jeden skript, kterej by to detekoval podle URL

11.2.2009 10:23 RoboShim | skóre: 13 | blog: RoboShim
Rozbalit Rozbalit vše Re: down-iskladka, down-suborysk a down-uloziskosk

jojo, uz jsme o tom u jednoho blogu premyslel, ze bych to trosku sjednotil do jednoho skriptu, udelal funkce a detekoval URL. Ale nevim, jestli by to nebylo zbytecne prace. Uz i takhle by se to dalo hodne optimalizovat. Ale nechci u toho travit vsechen cas, uz takhle to sezere nejakej ten cas zjistovani, ze ktery stranky na kterou stranku, ktery udaje vytahnout a pak pripadny upravy, kdyz neco zmeni. Takze nevim, mozna kdyz se budu nudit, ze z toho jeden skript udelam (je zase pravda, ze by se pak neopakoval kod na zobrazeni capcha a zadani hesla a pod). No, uvidime ...

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