速手sig署名、python版、速手キーワード検索結果収集に使用
8018 ワード
多くの大物は高速sigパラメータの逆解読の過程を共有しています.私はただ大物の基礎の上でsig暗号化の一部のコードをpythonに変換しただけです.sig生成原理:url疑問符の後ろのパラメータをdictに変換し、form_dataパラメータは同じdictに置いてdictをソートし、ソートして文字列に変換しsaltを加え、最後にmd 5暗号化すればよい. urlパラメータをdict に変換 urlパラメータdictとform_dataはdictに結合してソートし、文字列に変換し、塩 を加える.
3 md 5暗号化
urlの一部のパラメータは変わるのでsigも失効し、有効期間は2日を超えません.
def get_map_from_string(str):
"""
url dict
:param str:
:return:
"""
map = {
}
str_list = str.split('&')
for data in str_list:
item = data.split('=')
map[item[0]] = item[1]
return map
def get_url_str(map1,map2,salt = '382700b563f4'):
"""
url formdata , ,
:param map1:url dict
:param map2:formdata dict
:param salt: , 382700b563f4,
:return:
"""
map = dict(map1,**map2)
aps = sorted(map.items(), key = lambda d: d[0])
data = {
}
for i in aps:
if i[0] == 'sig' or i[0] == '__NS_sig3' or i[0] == '__NStokensig':
pass
else:
data.update(dict({
i[0]:i[1]}))
url_str = ""
for key,value in data.items():
str = key + '=' + unquote(value)
url_str += str
return url_str + salt
3 md 5暗号化
def data_md5(content):
m = hashlib.md5()
m.update(content.encode("utf-8"))
return m.hexdigest()
def create_sig(query_str,post_arr):
url_arr = get_map_from_string(query_str)
str = get_url_str(url_arr, post_arr)
return data_md5(str)
urlの一部のパラメータは変わるのでsigも失効し、有効期間は2日を超えません.