api接口對接
json模塊
Json 模塊提供了四個方法: dumps、dump、loads、load
pickle 模塊也提供了四個功能:dumps、dump、loads、load
dumps和dump 序列化方法
dumps只完成了序列化為str,
dump必須傳文件描述符,將序列化的str保存到文件中
總結:
1. json序列化方法:
dumps:無文件操作 dump:序列化+寫入文件
2. json反序列化方法:
loads:無文件操作 load: 讀文件+反序列化
3. json模塊序列化的數據 更通用
picle模塊序列化的數據 僅python可用,但功能強大,可以序列號函數
4. json模塊可以序列化和反序列化的 數據類型 見 python對象(obj) 與json對象的對應關系表
5. 格式化寫入文件利用 indent = 4
md5加密:
import hashlib
# 待加密信息
str = '123456'
# 創建md5對象
hl = hashlib.md5()
hl.update(str.encode("utf-8"))
print('MD5加密前為 :' + str)
print('MD5加密后為 :' + hl.hexdigest())
雙重加密:
md5_obj=hashlib.md5("123456".encode("utf-8"))
str1=md5_obj.hexdigest() #加密1次
obj2=hashlib.md5(str1.encode("utf-8"))
str2=obj2.hexdigest()#加密2次
print(str2) #雙重加密后,同樣解密開
加鹽:
from random import Random
import hashlib
# 獲取由4位隨機大小寫字母、數字組成的salt值
def create_salt(length = 4):
salt = ''
chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
len_chars = len(chars) - 1
random = Random()
for i in range(length):
# 每次從chars中隨機取一位
salt += chars[random.randint(0, len_chars)]
return salt
# 獲取原始密碼+salt的md5值
def create_md5(pwd,salt):
md5_obj = hashlib.md5()
md5_obj.update((pwd + salt).encode("utf-8"))
return md5_obj.hexdigest()
# 原始密碼
pwd = '123456'
# 隨機生成4位salt
salt = create_salt()
# 加密后的密碼
md5 = create_md5(pwd, salt)
print('[pwd]\n',pwd )
print('[salt]\n', salt)
print('[md5]\n', md5)
post 請求:
url = 'http://m.ctrip.com'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload))
headers = {'content-type': 'application/json'}
url = 'http://47.95.71.224/v1/clue/saler'
r = requests.post(url,data=post_data,headers=headers)
測試實列:
import hashlib
import requests
import json
import time
time = time.time()
time = str(time).split('.')[0]
token = 'JD8NF6SLIAF9JDS7NDSY'
data = {
'name': '先生',
'mobile': '18079575676',
'city': '南昌',
'brand': '未知',
'series': '未知',
'model': '未知',
'kilometer':'10',
'licensed_date_year':'2010 3',
'is_operation':'',
'is_accidented':''
}
data = json.dumps(data)
print(data)
sign = hashlib.md5((data + token + time).encode("utf-8")).hexdigest()
post_data = {
'token': token,
'sign': sign,
'time': time,
'data': data,
}
url = 'http://47.95.71.224/v1/clue/saler'
r = requests.post(url, data=post_data)
print(r.text)
