Hacking Ético
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Cómo hacer una copia de seguridad de la base de datos de enlaces de seriesyonkis.com

2 participantes

Ir abajo

Cómo hacer una copia de seguridad de la base de datos de enlaces de seriesyonkis.com Empty Cómo hacer una copia de seguridad de la base de datos de enlaces de seriesyonkis.com

Mensaje  kmx0 Vie Ene 28 2011, 00:34

En mi post sobre “cómo hacer una copia de seguridad de tu sitio favorito de enlaces” explicaba cómo hacer una copia completa de un sitio web, pero también advertía que:

La copia de un sitio web “a lo bestia” no es completamente funcional y suele ocupar mucho más de lo que ocupa el sitio original.

Así que me comprometí a ofrecer una forma elegante de proteger toda esa información que contienen los sitios de enlaces amenazados por el Sinderetazo.

La idea no es tan simple como en el post anterior. Esta vez lo que propongo requiere saber un poquín de programación pero el resultado nos permitirá obtener un fichero de unos pocos megas con todos los enlaces de tu sitio de enlaces favorito (en este caso, tomaremos como ejemplo seriesyonkis.com).

Aunque no lo conocía de antes (así que el script probablemente diste mucho de ser el mejor script posible) he escogido Ruby como lenguaje. La razón es que permite muy fácilmente hacer conexiones vía http y obtener, para entendernos, el html de una página en formato cadena de texto:

"#Get generically, HTTP content
# Receives a URL and returns its content
def gethttpcontent(url)
begin
url = URI.parse(url)

#Perform the HTTP query and get the content
req = Net::HTTP::Get.new(url.path);
res = Net::HTTP.start(url.host, url.port)
{ |http| http.request(req); }

#Return the body
return res.body;
rescue
return ""
end
end"
Por cierto, aprovecho para pedir perdón por el uso patatero que hago de mi inglés a lo largo del código fuente. Cuando programo me flipo muchísimo.

Además de estas facilidades (cortesía de la librería net/http de Ruby) utilizo también las facilidades de Ruby para tratar cadenas. En concreto, utilizo lo que llaman pattern matching para recorrer elementos de una página.


"content =
gethttpcontent("http://www.seriesyonkis.com/")
content.scan(/<li class="page_item">(.*?)<\/li>/)"


Usando esta técnica he escrito funciones que permiten descargar cada serie, cada temporada de cada serie, cada episodio de cada temporada y cada enlace de cada episodio.

En particular, para descargar los enlaces he tenido que hacer un pequeño apaño porque los enlaces no están escritos explícitamente en el código fuente de la página (están protegidos -por decirlo de alguna manera- por funciones JavaScript).

La manera de salvar este pequeñín obstáculo ha sido descargar los ficheros JavaScript y ejecutarlos localmente (haciéndoles creer que están siendo ejecutados desde un navegador):

"function locclass() {
this.search = '" + locationsearch + "'; }
location = new locclass();

function docclass() {
this.write = docwrite; }
function docwrite(str) {
print(str); }
document = new docclass();"

Donde locationsearch es una variable que no viene a cuento ahora.

Usando estas técnicas, he escrito el script sy-getseries.rb, que permite obtener un fichero (con todos los datos necesarios para generar algo del estilo de sy-links20110124.ods, de sólo 2.83Mb) con los más de 163.000 enlaces que a día de hoy hay en seriesyonkis.

PD: Para abrir el .ods necesitarás LibreOffice o una aplicación compatible.

FUENTE: http://www.carloscapote.com

ORIGINAL:http://www.carloscapote.com/informatica-y-otras-fricadas/como-hacer-una-copia-de-seguridad-de-la-base-de-datos-de-enlaces-de-seriesyonkis-com-for-casidummies/
kmx0
kmx0

Mensajes : 522
Fecha de inscripción : 23/06/2010
Localización : AL-ANDALUS

http://www.hacking-etico.com

Volver arriba Ir abajo

Cómo hacer una copia de seguridad de la base de datos de enlaces de seriesyonkis.com Empty Re: Cómo hacer una copia de seguridad de la base de datos de enlaces de seriesyonkis.com

Mensaje  KurioCT Lun Feb 07 2011, 22:57

Madre mía cómo lo flipa la gente, muy currado, pero bien es cierto que con un Web Scraper cualquiera y con el comando grep de Linux se puede hacer de forma sencilla. grep + sed + cut = PROGRESS. Very Happy
KurioCT
KurioCT

Mensajes : 384
Fecha de inscripción : 23/06/2010

Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.