利用 API 清除 CloudFlare 上托管站点的文件缓存
本文介绍如何利用Curl或者Python,通过CloudFlare的API刷新托管站点的文件缓存。非原创,但实践可行
本文最后更新于 2022-07-20【773 天前】,文中所描述的信息可能已发生改变,请谨慎使用。如有问题或建议,欢迎在文章底部留言参与讨论!
本文介绍如何利用Curl或者Python,通过CloudFlare的API刷新托管站点的文件缓存。
非原创,但实践可行
准备
需要从CloudFlare
获取托管站点的zoneid
和账户的API KEY
。zoneid
从站点管理页面的右侧边栏复制,API KEY
从Profile
页面复制。下面是zoneid
和api key
的格式:
# 32位
zoneid: 023e105f4ecef8ad9ca31a8372d0c353
# 45位或37位
api key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41
使用
curl版本
files 列表支持指定刷新 url 时使用的 headers,不过通常用不到,直接传文件列表即可。curl 命令的格式如下:
curl -X POST "https://api.cloudflare.com/client/v4/zones/023e105f4ecef8ad9ca31a8372d0c353/purge_cache" \
-H "X-Auth-Email: user@example.com" \
-H "X-Auth-Key: c2547eb745079dac9320b638f5e225cf483cc5cfdda41" \
-H "Content-Type: application/json" \
--data '{"files":["http://www.example.com/css/styles.css",{"url":"http://www.example.com/cat_picture.jpg","headers":{"Origin":"cloudflare.com","CF-IPCountry":"US","CF-Device-Type":"desktop"}}]}'
Python 版本
#coding: utf-8
import requests
import argparse
import json
# your account email
EMAIL = 'user@example.com'
# your account api, get from the profile page
APIKEY = 'c2547eb745079dac9320b638f5e225cf483cc5cfdda41'
# zoneids of your sites
SITES = {
'sitea': '31a8372d0c353023e105f4ecef8ad9ca',
'siteb': '023e105f4ecef8ad9ca31a8372d0c353',
}
def main(siteid, files):
zone = SITES[siteid]
url = "https://api.cloudflare.com/client/v4/zones/%s/purge_cache" % (zone)
headers = {
'X-Auth-Email': EMAIL,
'X-Auth-Key': APIKEY,
'Content-Type': 'application/json'
}
res = requests.post(url, headers=headers, data='%s' % json.dumps({"files": files}), timeout=10)
if res.status_code != 200:
print(res.status_code)
print(res.text)
if __name__ == '__main__':
argParser = argparse.ArgumentParser()
argParser.add_argument('-s', '--site', dest='site', type=str, help='site', required=True, choices=SITES.keys())
argParser.add_argument('-f', '--files', dest='files', type=str, help='files', required=True)
args = argParser.parse_args()
# pass the urls with | separator
main(args.site, args.files.split("|"))
如果成功,返回的内容是以下格式:
{"result":{"id":"efab1b41b12d5408927ab5b5ac2fd02b"},"success":true,"errors":[],"messages":[]}
参考资料
- https://api.cloudflare.com/#getting-started-requests
- https://api.cloudflare.com/#zone-purge-files-by-url
本文作者:Quanyin Tang
本文链接:利用 API 清除 CloudFlare 上托管站点的文件缓存 - https://www.imtqy.com/cloudflare-api-clean-cache.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 Quanyin 所有,未经允许禁止转载,经授权转载请注明出处!
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。