Python 實現Google身份驗證

2021-10-05 15:50:24 字數 1216 閱讀 3404

import hmac, base64, struct, hashlib, time

defcalgooglecode

(secret_key)

:"""

基於時間的演算法

:param secret_key:

:return:

"""# 金鑰長度非8倍數,用'='補足

lens =

len(secret_key)

lenx =8-

(lens %

4if lens %

4else4)

secret_key += lenx *

'='# print(secret_key)

decode_secret = base64.b32decode(secret_key,

true

)# 解碼 base32 編碼過的 bytes-like object 或 ascii 字串 s 並返回解碼過的 bytes。

interval_number =

int(time.time()//

30)message = struct.pack(

">q"

, interval_number)

digest = hmac.new(decode_secret, message, hashlib.sha1)

.digest(

) index =

ord(

chr(digest[19]

))%16

# 注:網上材料有的沒加chr,會報錯

google_code =

(struct.unpack(

">i"

, digest[index:index +4]

)[0]

&0x7fffffff)%

1000000

return

"%06d"

% google_code

if __name__ ==

'__main__'

:print

(calgooglecode('')

)

驗證碼錯誤可能原因:

1、本地時間與實際時間偏差過大,結果可能不正確。

解決方案:同步網路時間,或手動校正

2、以上**只能處理16位驗證碼,若其他位數驗證碼需調整index計算位數

3、秘鑰不是8的倍數,需要用「=」補足

google翻譯python呼叫js實現

encoding utf 8 import urllib import urllib.request import urllib.parse import requests import execjs class google def init self self.lan dict self.hea...

google 翻譯python版本

進來,想搞個python 版本的google翻譯。看了下網頁,是乙個get請求,不禁大喜,深入研究後,發現這裡攜帶的引數其中包含乙個 tk 應該為token的縮寫吧,其用到搜尋的字元通過js函式的計算的到。可是未曾入坑js,看上去頗為燒腦。而我又是乙個求甚解的人,想要等了解js後再去突破。還有什麼其...

Unity中實現貪吃蛇蛇身移動

每當貪吃蛇碰到乙個食物之後就生成乙個蛇身,將蛇身新增到蛇身列表中,首先記錄下蛇頭移動前的位置 vector3 headpos transform.localposition 這種方式只限於蛇身是唯一的 思路 只移動最後乙個蛇身,將其移動到第乙個位置 將蛇身列表中的最後乙個值賦給蛇頭移動前的位置 if...