Created
August 16, 2011 22:16
-
-
Save sney2002/1150336 to your computer and use it in GitHub Desktop.
script python para descarga automática de megaupload
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#-*- coding: utf-8 -*- | |
""" | |
Copyright (c) 2011, Jhonathan Sneider Salguero Villa (http://www.novatoz.com/) | |
script para descarga automática de archivos alojados en megaupload. | |
Intenta burlar proxies que bloquean por nombre de dominio y extensión de archivos | |
""" | |
from base64 import urlsafe_b64encode | |
from contextlib import closing | |
import socket | |
import os | |
import sys | |
import subprocess | |
import urllib2 | |
import re | |
import time | |
IPS = socket.gethostbyname_ex("www.megaupload.com")[2] | |
re_download_link = re.compile(r'href="([^"]*)".*class="download_regular_usual"') | |
# El nuevo tiempo de espera es de 60s pero al parecer hay que esperar un poco mas | |
WAIT_TIME = 65 | |
def get_download_link(url): | |
"""Obtener link de descarga de megaupload""" | |
link = None | |
with closing(urllib2.urlopen(url)) as page: | |
match = re_download_link.search(page.read()) | |
if match: | |
link = match.group(1) | |
return link | |
def random_string(length): | |
"retorna texto aleatorio usable en una url" | |
return urlsafe_b64encode(os.urandom(length)) | |
def getip(hostname): | |
return socket.gethostbyname(hostname) | |
def download(link): | |
"""Descargar archivo alojado en megaupload | |
Intenta saltar restricciones conectándose por ip y cambiando nombre archivo | |
""" | |
link = urllib2.urlparse.urlparse(link) | |
for ip in IPS: | |
# sustituir nombre de dominio con ip | |
new_link = "http://{0}/?{1}".format(ip, link.query) | |
download_link = get_download_link(new_link) | |
if download_link: | |
a = urllib2.urlparse.urlparse(download_link) | |
server_ip = getip(a.netloc) | |
# Usar string aleatoria en lugar de nombre de archivo | |
path, filename = os.path.split(a.path) | |
fake_name = random_string(20) | |
# guardar archivo con nombre original usando opción -O de wget | |
original_name = urllib2.unquote(filename) | |
# sustituir nombre de dominio con ip y usar nombre de archivo falso | |
new_url = "http://{0}{1}/{2}".format(server_ip, path, fake_name) | |
# please wait.... XD | |
for i in reversed(range(WAIT_TIME)): | |
print >>sys.stderr, "\rpor favor espere: %-2d" % i, | |
time.sleep(1) | |
print >>sys.stderr | |
args = ['wget', '-c', '-O', original_name, new_url] | |
# empezamos a descargar ^_^ | |
proc = subprocess.Popen(args) | |
return proc.wait() | |
if __name__ == '__main__': | |
import sys | |
download(sys.argv[1]) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment