> 백엔드 개발 > 파이썬 튜토리얼 > Python은 두 가지 방법을 사용하여 URL 짧은 연결을 구현합니다.

Python은 두 가지 방법을 사용하여 URL 짧은 연결을 구현합니다.

高洛峰
풀어 주다: 2016-10-18 14:03:41
원래의
1358명이 탐색했습니다.

거의 모든 WeChat 웹사이트는 특정 알고리즘에 따라 URL 주소에서 문자열을 생성한 다음 이를 짧은 도메인 이름에 추가하여 새 URL 주소를 형성하는 것이 원칙입니다. 이 짧은 주소와 원래 주소를 저장합니다. 사용자가 이 새로운 짧은 주소를 클릭하면 짧은 주소 서비스는 짧은 도메인 이름 뒤의 여러 문자열을 기반으로 데이터베이스에서 원래 주소를 읽은 다음 페이지로 이동합니다. .

예를 들어 Sina Weibo의 URL은 http://t.cn/xxxxxxx입니다. t.cn은 도메인 이름이고 그 뒤에 7자리 문자열이 옵니다.

방법 1: 해시 라이브러리를 활용해 알고리즘 맞춤화

텍스트에 너무 긴 URL을 표시하거나, 생략하는 방법을 사용하면 지저분해지기 때문입니다. 표시하거나 단축 URL 방식을 사용합니다.

클릭수 계산과 콘텐츠 필터링을 동시에 용이하게 하기 위해 단축 URL 값을 생성하는 방식을 구현했습니다.

해시 값이 크랙되는 것을 방지하기 위해 Add your own salt 시 md5 값을 생성할 수 있습니다.

이렇게 하면 code_map에 도달하더라도 원본 URL을 크랙할 수 없습니다.

결과를 더 무작위로 만들기 위해 각 루프에서 사용되지 않는 두 번째 비트를 e에 저장합니다. 이렇게 하면 결과 충돌 비율을 줄일 수 있습니다.

#引入哈希库
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;)
로그인 후 복사

방법 2: libsurl을 사용합니다. library

libsurl은 짧은 URL을 생성하는 데 사용되는 C 및 Python 라이브러리로, .ly 및tinyurl과 같은 비트 짧은 URL 서비스 웹사이트를 지원합니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿