仅供学习,禁止商用
- 具体的流程如下:
- 获取 需要 b64 编码的时间戳
- 获取 必须传输的参数 signature policy 同时将生成的 图片 key 返回
- 上传图片
- 拼接查询的结果
- 获取b64编码时间戳
def get_dateset(self):
'''
获取加密时间
:return:
'''
url = "https://open-s.1688.com/openservice/.htm?" # 获取加密时间
params = {
"serviceIds": "cbu.searchweb.config.system.currenttime",
"outfmt": "json",
}
status, data = request_get(url, params, self.headers)
return status, data
3. 获取 signature policy 相关参数
def get_sign(self, data_set):
'''
用于获取 sign 用于加密
:return:
'''
url = 'https://open-s.1688.com/openservice/ossDataService'
key = str(base64.b64decode("cGNfdHVzb3U=".encode("utf-8")), encoding="utf-8")
appkey = "{};{}".format(key, str(data_set))
params = {
"appName": key,
"appKey": base64.b64encode(appkey.encode("utf-8")),
}
status, data = request_get(url, params, self.headers)
data = data.get('data', {})
signature = data.get('signature', '')
policy = data.get('policy', '')
accessid = data.get('accessid', '')
return status, signature, policy, accessid
4. upload image
def upload_img(self, filename, signature, policy, accessid):
"""
用于上传图片
:return:
"""
url = 'https://cbusearch.oss-cn-shanghai.aliyuncs.com/'
key = "cbuimgsearch/" + get_random_str(10) + str(int(time.time()) * 1000) + ".jepg"
name = get_random_str(5) + ".jepg"
files = {
"name": (None, name),
"key": (None, key),
"policy": (None, policy),
"OSSAccessKeyId": (None, accessid),
"success_action_status": (None, 200),
"callback": (None, ""),
"signature": (None, signature),
"file": (name, open(filename, "rb").read())
}
status, res = request_post(url, data=None, files=files, headers=self.headers)
return status, key