根据签名规则,加密URL
Posted 公子兔
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据签名规则,加密URL相关的知识,希望对你有一定的参考价值。
from urllib import parse
url=‘http://www.baidu.com?query=python基础教程‘
url_str=parse.quote_plus(url)#URL编码
baidu_url=‘http%3A%2F%2Fwww.baidu.com%3Fquery%3Dpython%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B‘
# print(parse.unquote_plus(baidu_url))#URL解码
import hashlib
def my_md5(s):
md=hashlib.md5()#实例化md5
md.update(s.encode())#
return md.hexdigest()
#vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20-29;7C-67-A2-9A-06-05;7C-67-A2-9A-06-06;7C-67-A2-9A-06-09;00-00-00-00-00-0000E0
def get_vendorId(req_data):
data_dic={}
sub_list=req_data.split(‘&‘)
for i in sub_list:
k,v=i.split(‘=‘)
# data_dic.setdefault(k,v)
data_dic[k]=v
return data_dic.get(‘vendorId‘)
def sign(req_date):
verid=get_vendorId(req_date)#d调用获取vendorId函数
first=my_md5(verid)
astr=my_md5(first)
url_str=parse.quote_plus(req_date)#url编码
res=my_md5(astr+url_str)
return res
class Sign(object):
def __init__(self,req_data):
self.req_data=req_data#这写了self的话,在其他的函数里面也可以用self.xxx
self.get_verid()
self.get_sign()
def md5(self,s):
md = hashlib.md5() # 实例化md5
md.update(s.encode())
return md.hexdigest()
def get_verid(self):
data_dic = {}
sub_list = self.req_data.split(‘&‘)
for i in sub_list:
k, v = i.split(‘=‘)
# data_dic.setdefault(k,v)
data_dic[k] = v
self.verid=data_dic.get(‘vendorId‘)
def get_sign(self):
# self.get_verid()
frist=self.md5(self.verid)
astr=self.md5(frist)
url_str=parse.quote_plus(self.req_data)
self.sign=self.md5(astr+url_str)
return self.sign
print(__name__)
if __name__ == ‘__main__‘:
s = ‘vendorId=1697&posCode=pos006&ip=127.0.0.1&posVersion=2.1.1.1.1&mac=;D4-81-D7-CA-20-29;7C-67-A2-9A-06-05;7C-67-A2-9A-06-06;7C-67-A2-9A-06-09;00-00-00-00-00-0000E0‘
abc=Sign(s)
# abc.get_sign()#方法
print(abc.sign)#打印它的变量
以上是关于根据签名规则,加密URL的主要内容,如果未能解决你的问题,请参考以下文章
python接口自动化23-签名(signature)鉴权(authentication)之加密(HEXMD5HMAC-SHA256)