Heim >Backend-Entwicklung >Python-Tutorial >Python verwendet zwei Methoden, um eine URL-Kurzverbindung zu implementieren

Python verwendet zwei Methoden, um eine URL-Kurzverbindung zu implementieren

高洛峰
高洛峰Original
2016-10-18 14:03:411344Durchsuche

Fast alle WeChat-Websites bieten URL-Kürzungsdienste an. Das Prinzip besteht darin, gemäß einem bestimmten Algorithmus eine Zeichenfolge aus einer URL-Adresse zu generieren und diese dann einem kurzen Domänennamen hinzuzufügen, um eine neue URL-Adresse zu bilden, in der gespeichert wird Speichern Sie diese Kurzadresse und die Originaladresse. Wenn der Benutzer auf diese neue Kurzadresse klickt, liest der Kurzadressendienst die Originaladresse anhand der verschiedenen Zeichenfolgen nach dem Kurzdomänennamen und springt dann zur Seite .

Zum Beispiel lautet die URL in Sina Weibo http://t.cn/xxxxxxx. t.cn ist der Domänenname, gefolgt von einer 7-stelligen Zeichenfolge.

Methode 1: Verwenden Sie die Hash-Bibliothek, um den Algorithmus anzupassen

Weil es chaotisch wäre, eine URL anzuzeigen, die zu lang im Text ist, oder die Methode zum Weglassen zu verwenden anzeigen oder die Methode der Kurz-URL verwenden.

Um das Zählen von Klicks und die Inhaltsfilterung gleichzeitig zu erleichtern, wurde eine Methode zum Generieren von Kurz-URL-Werten implementiert.

Um zu verhindern, dass Ihr Hash-Wert geknackt wird, können Sie beim Hinzufügen Ihres eigenen Salts den MD5-Wert generieren.

Auf diese Weise können Sie die ursprüngliche URL nicht knacken, selbst wenn Sie Ihre Code_Map erreichen.

Um das Ergebnis zufälliger zu machen, speichern Sie das nicht verwendete zweite Bit in jeder Schleife in e. Dies kann die Ergebniskonfliktrate verringern.

#引入哈希库
import hashlib 
       
def get_md5(s): 
    s = s.encode('utf8') if isinstance(s, unicode) else s 
    m = hashlib.md5() 
    m.update(s) 
    return m.hexdigest() 
       
code_map = ( 
           'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 
           'i' , 'j' , 'k' , 'l' , 'm' , 'n' , 'o' , 'p' , 
           'q' , 'r' , 's' , 't' , 'u' , 'v' , 'w' , 'x' , 
           'y' , 'z' , '0' , '1' , '2' , '3' , '4' , '5' , 
           '6' , '7' , '8' , '9' , 'A' , 'B' , 'C' , 'D' , 
           'E' , 'F' , 'G' , 'H' , 'I' , 'J' , 'K' , 'L' , 
           'M' , 'N' , 'O' , 'P' , 'Q' , 'R' , 'S' , 'T' , 
           'U' , 'V' , 'W' , 'X' , 'Y' , 'Z'
            ) 
       
       
def get_hash_key(long_url): 
    hkeys = [] 
    hex = get_md5(long_url) 
    for i in xrange(0, 4): 
        n = int(hex[i*8:(i+1)*8], 16) 
        v = [] 
        e = 0
        for j in xrange(0, 5): 
            x = 0x0000003D & n 
            e |= ((0x00000002 & n ) >> 1) << j 
            v.insert(0, code_map[x]) 
            n = n >> 6
        e |= n << 5
        v.insert(0, code_map[e & 0x0000003D]) 
        hkeys.append(&#39;&#39;.join(v)) 
    return hkeys 
       
if __name__ == &#39;__main__&#39;: 
    print get_hash_key(&#39;http://www.pythontab.com&#39;)

Methode 2: Verwenden Sie die libsurl-Bibliothek

libsurl ist eine C- und Python-Bibliothek, die zum Generieren von Kurz-URLs verwendet wird und Bit-Short-URL-Service-Websites wie .ly und tinyurl unterstützt.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn