Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: The Swash en 24 Octubre 2011, 06:37 am



Título: [Python] Goo - Acorta tu URL
Publicado por: The Swash en 24 Octubre 2011, 06:37 am
Código
  1. #----------------------------------------------------------
  2. # Obtener URL acortada mediante http://goo.gl
  3. # Programador: The Swash
  4. # Agradecimientos: Psymera, 11Sep, [Zero] y todo h-sec
  5. # Website: http://h-sec.org
  6. #----------------------------------------------------------
  7.  
  8. import socket, urllib, re
  9. def GetGooURL(url):
  10.    header = ['POST /api/shorten HTTP/1.1\r\n',
  11.              'Host: goo.gl\r\n',
  12.              'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n',
  13.              'Content-Length: 41\r\n',
  14.              'Connection: close\r\n\r\n',
  15.              'URLENCODE']
  16.    if re.match('^http://', url):
  17.        url2 = url
  18.    else:
  19.        url2 = 'http://' + url
  20.    address = socket.gethostbyname('goo.gl')
  21.    link = urllib.urlencode({'url':url2})
  22.    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  23.    header[5] = link + '&security_token\r\n'
  24.    length = len(header)
  25.    try:
  26.        sock.connect((address,80))
  27.        for i in range(length):
  28.            sock.send(header[i])
  29.        buff = sock.recv(1024)
  30.    except:
  31.        return 'Error de conexion'
  32.  
  33.    sock.close()
  34.    data = re.findall('Location: (.+)\r\n', buff)
  35.    return data[0]
  36.  
  37. url = GetGooURL('h-sec.org')
  38. print url
  39. raw_input()

Hola amigos, les traigo este pequeño código que me llevó largo rato por los encabezados HTTP. Como dijo 11Sep puede acortarse mucho usando urllib, pero en definitiva no era mi intención.

Cualquier critica constructiva es bien recibida.

Un saludo.