It_blog’s

Май 24, 2009

Скачиваем с Rapidshare в консоли и автоматически сбрасываем PPP сессию

Рубрика: Gentoo, Program, linux, script — Метки: , , , , — itbg @ 5:32 пп

Всем привет!

Сегодня я решил выложить свои скрипты для скачивания файлов с Рапиды с помощью wget и с сбросом PPP сессии.

Применение:
Для примера возьмём моего провайдера.
Для выхода в интернет я использую ADSL модем с безлимитным тарифным планом.
При сбросе сессии мне даётся случайный внешний IP адрес.

Идея:
Сделать скачивание с Рапиды через консоль и после каждого скачивания сбрасывать PPP сессию для получения нового IP адреса и не ждать 15 минут.

Оборудование:
Модем у меня StarNet который я успешно перешил в Acorp Lan 120.
Для работы нам потребуется открытый доступ к модему через telnet.
Программа expect, для автоматизации сброса сессии.


Скрипты:

При обрыве соединения ppp0 происходит автоматическое переподключение.
Все скрипты сложить в одну папку.

p1 – Узнаёт PID демона PPPD

Листинг:

Copy Source | Copy HTML

  1. #!/usr/bin/expect -f
  2. log_user 0
  3. spawn telnet 192.168.1.1
  4. expect «BusyBox on router login:» {send «root\r»}
  5. expect «Password:» {send «Admin\r»}
  6. expect «#» {send «ps ax |grep pppd\r»}
  7. log_user 1
  8. send «exit\r»
  9. expect eof

p2 - Убивает PPPD по PID
И модем СРАЗУ автоматически поднимает заново.

Листинг:

Copy Source | Copy HTML

  1. #!/usr/bin/expect -f
  2. set pid [lindex $argv 0]
  3. log_user 0
  4. spawn telnet 192.168.1.1
  5. expect «BusyBox on router login:» {send «root\r»}
  6. expect «Password:» {send «Admin\r»}
  7. expect «#» {send «kill $pid»}
  8. send «exit\r»
  9. expect eof

Поправьте IP модема на свой.

Ещё нам потребуется скрипт DownloadFromRS
Он как раз предназначен для скачивания файлов с Рапиды через консоль, использую wget.

Теперь нам нужно отредактировать скрипт DownloadFromRS
таким образом, что-бы после окончания скачивания он выполнял скрип для сброса PPP сессии.

Листинг модифицированного скрипта:

Copy SourceCopy HTML

  1. #!/bin/bash
  2. ################################################
  3. #Purpose: Automate the downloading of files from rapidshare using the free account
  4. #using simple unix tools.
  5. #Date: 14-7-2008
  6. #Authors: Slith, Tune
  7. #Improvements: Please email them to jwhatson@gmail.com
  8. #Post Feedback and comments to http://emkay.unpointless.com/Blog/?p=63
  9. #Notes: To use curl instead of wget use ’curl -s’ and ’curl -s -d’
  10. #Version: 1.2 - Rapidshare has added a wait time in between file downloads. On top of your download
  11. #to start. This has been fixed.
  12. #Added a ’kill time’ feature. Specify killTime as an hour of the day and if the time is greater than this.
  13. #the script will end. Useful for using cron to start script at offpeak time and killing it when off speak ends.
  14. ################################################
  15. mirror=dt.rapidshare.com;
  16. ## possible mirrors
  17. # cg.rapidshare.com
  18. # l34.rapidshare.com
  19. # tg.rapidshare.com
  20. # gc2.rapidshare.com
  21. # dt.rapidshare.com
  22. # tl2.rapidshare.com
  23. # l32.rapidshare.com
  24. # l3.rapidshare.com
  25. # gc.rapidshare.com
  26. # l33.rapidshare.com
  27. # tl.rapidshare.com
  28. # cg2.rapidshare.com
  29. killTimeEnable=0
  30. killTime=9
  31. function getOutputFromFreeUserSubmit(){
  32. URL=$(wget -q -O – $line | grep «<form id=\»ff\» action=\»" | grep -o ‘http://[^"]*’);
  33. output=$(wget -q -O – –post-data «dl.start=Free» «$URL»);
  34. }
  35. while read line
  36. do
  37. if [[ $killTimeEnable -eq 1 && $(date +%H) -gt $killTime ]]; then exit; fi;
  38. getOutputFromFreeUserSubmit output; #call getOutputFromFreeUserSubmit, result is stored in $output
  39. posibleWaitTime=$(echo «$output» | grep «try again in about» | grep -o «[0-9]\{1,3\}»);
  40. if [ -z "$posibleWaitTime" ]; then #check for zero lenght string
  41. echo «No wait time, likely to be the first file you have downloaded in a while»;
  42. else
  43. echo «Waiting $[ $posibleWaitTime+1] minutes (in between file download wait)»;
  44. sleep $[ $posibleWaitTime+1]m;
  45. getOutputFromFreeUserSubmit output; #Now we have waited we will try again…
  46. fi
  47. time=$(echo «$output» | grep «var c=[0-9]*;» | grep -o «[0-9]\{1,3\}»);
  48. ourfile=$(echo «$output» | grep «document.dlf.action=» | grep -o «http://[^\"]*$mirror[^\\]*»);
  49. echo «Waiting $time secs for download of $ourfile»;
  50. sleep $time;
  51. wget $ourfile;
  52. ./p1 | grep pppd | grep -v grep | awk ‘{print $1;}’ | xargs ./p2;
  53. sleep 5;
  54. done < input.txt

Осталось сделать файл исполняемым, закинуть нужные ссылки в файл input.txt и запустить скачивание.
Все скрипты должны лежать в одной папке.
Всё очень просто и эффективно.

PS.  Так-же можно сделать обрыв VPN соединения и т.д
Динамический IP – это круто!

Источник:
Статья про скачивание с Рапиды.

Комментарии (3) »

  1. Офигеть просто! Все, блин, всё знают, кроме меня

    Комментарий от Ferinannnd — Май 24, 2009 @ 9:14 пп

  2. в консолИ *fxd

    Комментарий от Fd — Май 24, 2009 @ 9:32 пп

  3. хочется добавить, что рапидшары ненужны
    для этого есть торренты

    Комментарий от ffsdmad — Июнь 29, 2009 @ 3:28 пп


RSS-лента комментариев к этой записи. URI для обратной ссылки

Оставить комментарий

Блог на WordPress.com.