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(''.join(v)) return hkeys if __name__ == '__main__': print get_hash_key('http://www.pythontab.com')
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.