根据签名规则,加密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)#打印它的变量

posted on 2018-05-20 14:48  公子兔  阅读(199)  评论(0编辑  收藏  举报

导航