|
|
|
@ -5,7 +5,6 @@ import hashlib |
|
|
|
|
import hmac |
|
|
|
|
import os |
|
|
|
|
import random |
|
|
|
|
import time |
|
|
|
|
from urllib import parse |
|
|
|
|
|
|
|
|
|
import requests |
|
|
|
@ -26,54 +25,39 @@ def get_md5_01(file_path): |
|
|
|
|
def createTransaction(HTTPMethod, filePath): |
|
|
|
|
fileName = filePath.split('/')[-1] |
|
|
|
|
|
|
|
|
|
for Version in getBetweenDay('2017-01-01'): |
|
|
|
|
print("Version={Version}".format(Version=Version)) |
|
|
|
|
param = { |
|
|
|
|
"Format": "JSON", |
|
|
|
|
"Version": Version, |
|
|
|
|
"AccessKeyId": "LTAIeS8aBuPBZxV2", |
|
|
|
|
"SignatureMethod": "HMAC-SHA1", |
|
|
|
|
"Timestamp": int(time.time()), |
|
|
|
|
"SignatureVersion": "1.0", |
|
|
|
|
"SignatureNonce": random.randint(0, 9), |
|
|
|
|
"Action": "CreateTransaction", |
|
|
|
|
"Ext": fileName[-fileName[::-1].index('.'):], |
|
|
|
|
"Md5": get_md5_01(filePath), |
|
|
|
|
"Size": os.path.getsize(filePath) |
|
|
|
|
} |
|
|
|
|
AccessKeySecret = b'hyPeTaDQBQs6jetYcqY0BUdpacXTH3' |
|
|
|
|
canonicalQueryString = '' |
|
|
|
|
for i in sorted(param.items(), key=lambda d: d[0]): |
|
|
|
|
canonicalQueryString += '&' + i[0] + parse.quote('=' + str(i[1])) |
|
|
|
|
# print(canonicalQueryString[1:]) |
|
|
|
|
|
|
|
|
|
strUrlEncoding = HTTPMethod + '&%2F&' + canonicalQueryString[1:] |
|
|
|
|
print(strUrlEncoding) |
|
|
|
|
stringToSign = base64.b64encode(hmac.new(AccessKeySecret, strUrlEncoding.encode('UTF-8'), 'sha1').digest()) |
|
|
|
|
|
|
|
|
|
server = 'https://cloudphoto.cn-shanghai.aliyuncs.com' |
|
|
|
|
url = server + "?" + canonicalQueryString[1:] + '&Signature=' + stringToSign.decode('utf-8').replace('+','%20').replace('/','%2F').replace('=','%3D') |
|
|
|
|
print(url) |
|
|
|
|
result = requests.get(url) |
|
|
|
|
|
|
|
|
|
if result.status_code == 200: |
|
|
|
|
break |
|
|
|
|
else: |
|
|
|
|
print(result.content) |
|
|
|
|
time.sleep(1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def getBetweenDay(begin_date): |
|
|
|
|
date_list = [] |
|
|
|
|
begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d") |
|
|
|
|
end_date = datetime.datetime.strptime(time.strftime('%Y-%m-%d', time.localtime(time.time())), "%Y-%m-%d") |
|
|
|
|
while begin_date <= end_date: |
|
|
|
|
date_str = begin_date.strftime("%Y-%m-%d") |
|
|
|
|
date_list.append(date_str) |
|
|
|
|
begin_date += datetime.timedelta(days=1) |
|
|
|
|
return date_list |
|
|
|
|
param = { |
|
|
|
|
# "Format": "JSON", |
|
|
|
|
"Version": '2017-07-11', |
|
|
|
|
"AccessKeyId": "LTAIeS8aBuPBZxV2", |
|
|
|
|
"SignatureMethod": "HMAC-SHA1", |
|
|
|
|
"Timestamp": datetime.datetime.utcnow().isoformat()[:19] + 'Z', |
|
|
|
|
"SignatureVersion": "1.0", |
|
|
|
|
"SignatureNonce": '9166ab59-f445-' + str(random.randint(1000, 9999)) + '-911d-664c1570df0f', |
|
|
|
|
"Action": "CreateTransaction" |
|
|
|
|
# "Ext": fileName[-fileName[::-1].index('.'):], |
|
|
|
|
# "Md5": get_md5_01(filePath), |
|
|
|
|
# "Size": os.path.getsize(filePath) |
|
|
|
|
} |
|
|
|
|
AccessKeySecret = b'hyPeTaDQBQs6jetYcqY0BUdpacXTH3&' |
|
|
|
|
canonicalQueryString = '' |
|
|
|
|
|
|
|
|
|
for i in sorted(param.items(), key=lambda d: d[0]): |
|
|
|
|
canonicalQueryString += '&' + i[0] + '=' + str(i[1]) |
|
|
|
|
print(canonicalQueryString[1:]) |
|
|
|
|
|
|
|
|
|
strUrlEncoding = HTTPMethod + '&%2F&' + parse.quote(canonicalQueryString[1:]) |
|
|
|
|
print(strUrlEncoding) |
|
|
|
|
stringToSign = base64.b64encode(hmac.new(AccessKeySecret, strUrlEncoding.encode('UTF-8'), 'sha1').digest()) |
|
|
|
|
print(stringToSign) |
|
|
|
|
server = 'https://cloudphoto.cn-shanghai.aliyuncs.com' |
|
|
|
|
url = server + "?" + canonicalQueryString[1:] + '&Signature=' + parse.quote(stringToSign.decode('utf-8')).replace( |
|
|
|
|
'/', '%2F') |
|
|
|
|
print(url) |
|
|
|
|
result = requests.get(url) |
|
|
|
|
|
|
|
|
|
print(result.content) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
|
createTransaction("GET", "C:/Users/10295/Desktop/灵梦.png") |
|
|
|
|
# print(getBetweenDay('2017-01-01')) |
|
|
|
|
# print(datetime.datetime.utcnow()) |
|
|
|
|