[Python-es] validar accesibilidad a una URL sin hacer "download"

necudeco necudeco en gmail.com
Lun Abr 5 02:36:44 CEST 2010


no, me referia a url del tipo

http://sitioweb.com/index.php/04/08/nuevo-post

Saludos

2010/4/4 Jose Caballero <jcaballero.hep en gmail.com>

>
>
>> 2010/4/2 Jose Caballero <jcaballero.hep en gmail.com>
>>
>>>
>>>
>>> El 2 de abril de 2010 11:45, Boris Perez Canedo <inf200523 en ucf.edu.cu>escribió:
>>>
>>> Hola,
>>>>
>>>> quisiera poder comprobar que una determinada URL existe y es accesible,
>>>> pero sin 'descargar' su contenido, simplemente comprobar que el server está
>>>> activo, que el usuario no ha escrito mal la URL (sin 'typos'), etc., pero
>>>> sin tener que descargar su contenido. Podría hacer un simple wget the la URL
>>>> y ver si funciona, pero no me interesa.
>>>>
>>>> Intuyo que puedo usar el método HEAD de HTTP que simplemente devuelve la
>>>> metainformación contenida en el HEAD. En principio eso seria suficiente.
>>>> Ejemplo:
>>>>
>>>> $ curl --head http://www.google.com
>>>> HTTP/1.0 200 OK
>>>> Date: Fri, 02 Apr 2010 15:00:37 GMT
>>>> Expires: -1
>>>> Cache-Control: private, max-age=0
>>>> Content-Type: text/html; charset=ISO-8859-1
>>>> Set-Cookie:
>>>> PREF=ID=09c3639ccf643ace:TM=1270220437:LM=1270220437:S=lY6HpKCqZ3lZEW9_;
>>>> expires=Sun, 01-Apr-2012 15:00:37 GMT; path=/; domain=.google.com
>>>> Set-Cookie:
>>>> NID=33=i_y0e-Tq2pAw8HxXMzD3KeH_H4Lqve81UH1WT_kQAwdJnRd0paMJz4KMZcp2cr1JqY35AkjVwYfK2UbPtlu_-9k4R0nFAuGe93JmxxebhGSdDtAxngWmq-FgfWELdfp0;
>>>> expires=Sat, 02-Oct-2010 15:00:37 GMT; path=/; domain=.google.com;
>>>> HttpOnly
>>>> Server: gws
>>>> X-XSS-Protection: 0
>>>> X-Cache: MISS from httpproxy4.bnl.vip
>>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128
>>>> Proxy-Connection: close
>>>>
>>>> $ curl --head http://www.google.comm
>>>> HTTP/1.0 503 Service Unavailable
>>>> Server: squid/3.0.STABLE8
>>>> Mime-Version: 1.0
>>>> Date: Fri, 02 Apr 2010 15:08:02 GMT
>>>> Content-Type: text/html
>>>> Content-Length: 1823
>>>> Expires: Fri, 02 Apr 2010 15:08:02 GMT
>>>> X-Squid-Error: ERR_DNS_FAIL 0
>>>> X-Cache: MISS from httpproxy4.bnl.vip
>>>> X-Cache-Lookup: MISS from httpproxy4.bnl.vip:3128
>>>> Proxy-Connection: close
>>>>
>>>> Pero de esta forma es necesario hacer demasiado 'parsing', y no siempre
>>>> la primera línea contiene "OK" aunque la URL sea válida. No tengo demasiado
>>>> claro cómo puedo validar la URL a partir de este tipo de resultados.
>>>>
>>>> He estado mirando un poco las clases urllib y urllib2, pero no acabo de
>>>> ver cómo puedo hacer la validación sin que el contenido de la URL se
>>>> descargue cuando existe. Si alguien tiene algún 'link' a un ejemplo de cómo
>>>> validar una URL sin necesidad de descargar su contenido, válido para
>>>> python2.3, estaré eternamente agradecido.
>>>>
>>>>
>>>> Muchas gracias. Saludos cordiales,
>>>>
>>>> Jose
>>>>
>>>> Hola Jose,
>>>>
>>>> la primera linea no siempre contiene OK, pero no puedes obtener el
>>>> código de respuesta e interpretarlo?
>>>>
>>>> En el primer caso el código es 200
>>>> y en el segundo 503, utiliza las expresiones regulares.
>>>>
>>>> Ejemplo:
>>>> (HTTP/\d\.\d)\s(\d{3})
>>>> en el grupo 1 tienes la versión del protocolo y en el grupo 2 el código.
>>>>
>>>> import re
>>>> reobj = re.compile(r"(HTTP/\d\.\d)\s(\d{3})")
>>>>
>>>> match = reobj.search(primera_linea)
>>>>
>>>> if match:
>>>>        version = match.group(1)
>>>>        codigo = match.group(2)
>>>>
>>>>
>>>>
>>>> Saludos,
>>>> Boris.
>>>>
>>>>
>>> Hola Boris,
>>>
>>> eso podría valer. ¿Es siempre 200 cuando todo va bien? Si es siempre el
>>> mismo número, o al menos un conjunto conocido de números, eso me vale.
>>>
>>>
>>>
>
>
> El 4 de abril de 2010 11:36, necudeco <necudeco en gmail.com> escribió:
>
> NO Siempre.
>
> Por ejemplo con las url amigables, cuando envias una url inexistente el
> sistema te devuelve una pagina que visualmente es 404, pero el codigo http
> que te envia es 200
>
> Saludos
>
>
>
> Hola,
> ¿Te  refieres a cosas como tinyurl.com? Hmmm, algo a tener en cuenta, sin
> duda. Gracias por el comentario.
>
>
> Jose
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
Mario R. Uriarte Amaya
044 949369377
NeCuDeCo
Asociacion Peruana de Software Libre
http://necudeco.com
http://apesol.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100404/d774dd02/attachment.html>


Más información sobre la lista de distribución Python-es