Tool: Un acortador de URL (URL shortening)

Un acortador de URL es un servicio que se encarga de reducir el tamaño de una URL haciéndola más pequeña para que sea más manejable y fácil de compartir o recordar. Algunos ejemplos de acortadores de url son:

  • Bit.ly
  • goo.gl (Google)
  • Ow.ly
  • TinyURL.com
  • itun.es (Apples)

Tecnica:

En el acortamiento de URL, donde cada URL larga está asociada a una clave única, que es la parte que sigue a “http:://nombrededominio/”. Por ejemplo: “http:://bit.ly/Hs6dsgb” tiene una clave de “Hs6dsgb”. No toda las redirecciones se tratan por igual; la instrucción de redirección enviada a un navegador puede contener en su encabezado el estado HTTP 301 (redirección permanente) 302 o 307 (redirección temporal).

Problemas de seguridad:

  • Detrás de una url acortada puede esconderse cualquier cosa (web maliciosas, exploits, malware, etc.) .
  • Permite ocultar código “incrustado” en la propia URL en forma de parámetros o sentencias complejas, como el potencial destino malicioso de la URL verdadera.

Algunas formas de visualizar la url real detras de la url acortada:

Complementos de Mozillla Firefox

Long URL Please 0.5.1: Reemplaza urls cortas con las originales, para que pueda ver los enlaces en reales.

Servicios Online

Unshorten.it: Permite ingresar el enlace acortado y obtener el verdadero enlace mostrado, además, una captura del sitio y un pequeño reporte sobre la reputación del mismo.

Otros servicios Online:

Script de Python

Obtener información de una url acortada por medio de un script de Python:

import urllib2

def main(pstr):
try:

response = urllib2.urlopen(pstr)
print ‘———————————————————–‘
print ‘Original Url:’, pstr
print ‘Final url after redirects  :’, response.geturl()
print ‘HTTP response code         :’, response.getcode()
print ‘———————————————————–‘
print ‘HTTP response headers:’
headers = response.info()
for obj in headers:
print obj+ “:” ,headers[obj]
print ‘———————————————————–‘

except HTTPError, e:
print ‘Error ‘ + e.code
except URLError, e:
print ‘Error ‘ + e.reason

if __name__ == ‘__main__’:
var = raw_input(‘write an url:’)
if var != ”:
main(var)
else:
print “Error, you don’t write an url”

Resultados de la ejecución de codigo: shorturl1Saludos, Comenta y Comparte.  

Anuncios

System.Diagnostics.StopWatch (Temporizador)

Stopwatch es una clase en el .NET Framework que reside en el espacio de nombres System.Diagnostics y es un temporizador de alta resolución.

Metodos:

Esta clase tiene varios métodos: Start(), Stop() y Reset() que sirven para iniciar, detener y resetear el temporizador respectivamente.

El método compartido StartNew() devuelve una instancia del temporizador y lo inicia, este método lo usemos para crear objetos nuevos y al mismo tiempo iniciarlos.

Propiedades:

Esta clase tiene varias propiedades:

  1. Elapsed, devuelve un objeto de tipo TimeSpan.
  2. ElapsedMilliseconds, devuelve un valor Long con los milisegundos transcurridos.
  3. ElapsedTicks, devuelve un valor Long, pero con los “pasos” del temporizador.
  4. IsRunnig, nos puede servir para saber si aún se está ejecutando.
  5. Frequency de solo lectura, que nos da información de la frecuencia (en pasos) del temporizador.
  6. IsHighResolution de solo lectura, que devuelve un valor verdadero/falso según se use un temporizador de alta resolución/precisión.

Utilidad:

  • Es útil para los puntos de referencia en la optimización del código.
  • Medir el tiempo que tarda en ejecutar una parte de su código.

Acontinuación se presenta un ejemplo de medición de tiempo en dos ciclos “for” el primero con una concatenación a una variable “string” y el segundo con una concatenación a una variable “StringBuilder”:

stopwatch1

Se presenta los tiempos de la ejecución de ambos bloques de codigo “ciclos”,  la medición se presenta en Milisegundos:

stopwatch2Saludos, Comenta y Comparte.