日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

幾乎所有的微薄都提供了縮短網址的服務,其原理就是將一個url地址按照一定的算法生成一段字符串,然后加在一個短域名后面邊成了一個新的url地址,數據庫中會存放這個短地址和原始的地址,當用戶點擊這個新的短地址后,短地址服務會根據短域名后面的幾個字符串從數據庫中讀出原來的地址然后頁面進行跳轉 。

比如新浪微薄中的url 是 http://t.cn/xxxxxxx t.cn是其域名 ,其后面跟著的是7位算出來的字符串。

方法一:使用哈希庫自定義算法

因為文本中顯示太長的url會比較亂,或者采用省略顯示的方式,或者采用短url的方式.

為了同時方便統計點擊數以及進行內容過濾.實現了一個生成短url值的方法.

為了防止你的hash值被破解,可以在生成md5值的時候加入你自己的salt.

這樣即便直到你的code_map也不能破解到原始url了.

為了讓結果更加隨機,把每次循環沒有使用的第二個bit保存到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 iin xrange(0,4):

n= int(hex[i*8:(i+1)*8],16)

v= []

e= 0

for jin 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')

方法二:使用libsurl庫

libsurl 是一個用來生成短URL的C和Python庫,支持 bit.ly 和 tinyurl 等短url 服務網站。

分享到:
標簽:python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定