美文网首页程序员让前端飞
使用python脚本清理阿里云cdn缓存

使用python脚本清理阿里云cdn缓存

作者: 古朋 | 来源:发表于2017-06-17 12:33 被阅读0次

步骤如下:

  1. 将下面的脚本中的三处xxxx的位置替换相应的数据

    注意:第三处ObjectPath的xxx处的替换为你想要刷新缓存的域名,比如我这里是:http://design.yonyoucloud.com/

  2. 然后再该python文件目录下运行python xx.py

#!/usr/bin/python
# -*- coding:utf-8 -*-

import sys,os
import urllib, urllib2
import base64
import hmac
import hashlib
from hashlib import sha1
import time
import uuid

class pushAliCdn:
    def __init__(self):
        self.cdn_server_address = 'http://cdn.aliyuncs.com'
        self.access_key_id = 'xxxxxxxxx'
        self.access_key_secret = 'xxxxxxxxxxxxxxxx'

    def percent_encode(self, str):
        res = urllib.quote(str.decode(sys.stdin.encoding).encode('utf8'), '')
        res = res.replace('+', '%20')
        res = res.replace('*', '%2A')
        res = res.replace('%7E', '~')
        return res

    def compute_signature(self, parameters, access_key_secret):
        sortedParameters = sorted(parameters.items(), key=lambda parameters: parameters[0])
        canonicalizedQueryString = ''
        for (k,v) in sortedParameters:
            canonicalizedQueryString += '&' + self.percent_encode(k) + '=' + self.percent_encode(v)
        stringToSign = 'GET&%2F&' + self.percent_encode(canonicalizedQueryString[1:])
        h = hmac.new(access_key_secret + "&", stringToSign, sha1)
        signature = base64.encodestring(h.digest()).strip()
        return signature

    def compose_url(self, user_params):
        timestamp = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
        parameters = { \
                'Format'        : 'JSON', \
                'Version'       : '2014-11-11', \
                'AccessKeyId'   : self.access_key_id, \
                'SignatureVersion'  : '1.0', \
                'SignatureMethod'   : 'HMAC-SHA1', \
                'SignatureNonce'    : str(uuid.uuid1()), \
                'TimeStamp'         : timestamp, \
        }
        for key in user_params.keys():
            parameters[key] = user_params[key]
        signature = self.compute_signature(parameters, self.access_key_secret)
        parameters['Signature'] = signature
        url = self.cdn_server_address + "/?" + urllib.urlencode(parameters)
        return url

    def make_request(self, user_params, quiet=False):
        url = self.compose_url(user_params)
        #print url
        #刷新url
        try:
            req = urllib2.Request(url)
            res_data = urllib2.urlopen(req)
            res = res_data.read()
            return res
        except:
            return user_params['ObjectPath'] + ' refresh failed!'

if __name__ == '__main__':
    f = pushAliCdn()
    params = {'Action': 'RefreshObjectCaches', 'ObjectPath': 'http://xxxxxxxxxx/', 'ObjectType': 'Directory'}
    res = f.make_request(params)
    print res

参考地址:http://www.xiaomastack.com/2015/10/21/alipushcdn/

相关文章

  • 使用python脚本清理阿里云cdn缓存

    步骤如下: 将下面的脚本中的三处xxxx的位置替换相应的数据注意:第三处ObjectPath的xxx处的替换为你想...

  • CDN | CDN缓存规则及优先级

    阿里云CDN 参考文档:阿里云CDN - 配置缓存过期时间[https://help.aliyun.com/doc...

  • 阿里云CDN自动刷新工具

    利用阿里云官方python版SDK和刷新预热自动化脚本来打造一个不需要python环境的阿里云CDN刷新工具。 安...

  • 阿里云CDN使用教程

    关于阿里云CDN的详细内容: 阿里云CDN使用教程 (CDN可以将源站内容分发至最接近用户的节点,使用户可就近取得...

  • Linux云计算学习笔记day48

    nginx负载均衡准备 web01 web02 CDN: 蓝汛 网宿 阿里云CDN: 网站加速 缓存网站静态...

  • 随记-项目部署相关

    python web 基础环境脚本 阿里云Ubuntu 环境: Ubuntu 16.04 + python3 1....

  • HTTP转HTTPS

    功能 在阿里云Ubuntu16.04系统上, 实现域名由HTTP改成HTTPS, 并使用阿里云的CDN加速. 准备...

  • CDN

    一分钟学会使用CDN - Lunaqi的博客 - CSDN博客 CDN为什么这么快-博客-云栖社区-阿里云 CDN...

  • mongodb清理大量历史缓存数据.md

    清理缓存 清理大量数据时 remove 和 deleteMany 删除对比 清理脚本

  • Ubuntu 安装 docker-ce

    [TOC] 官方脚本安装 这里直接使用批量脚本,通过阿里云镜像安装,如果想掌握安装过程,需要继续往下看 使用阿里云...

网友评论

    本文标题:使用python脚本清理阿里云cdn缓存

    本文链接:https://www.haomeiwen.com/subject/lngvqxtx.html