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...