快手sig签名,python版,可用于快手关键字搜索结果采集

很多大佬分享了快手sig参数逆向破解的过程,我只是在大佬的基础上把sig加密部分代码转成python。
sig生成原理:把url问号后面的参数转成dict,同时把form_data参数放在同一个dict,然后对dict进行排序,排序后转成字符串并且加salt,最后进行md5加密就可以了。

  1. 把url参数转为dict
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
  1. 把url参数dict和form_data合并为一个dict并排序,转为字符串,然后加盐
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 md5加密

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也会失效,有效期不超过两天。

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆向三十六计

赏个馒头,吃饱了才有力气搬砖哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值