Python Cdn平台文件md5验证
第一步
先用脚本实现基本的md5验证
1、python如何实现文件的下载
方法一:
使用 urllib 模块提供的 urlretrieve() 函数。urlretrieve() 方法直接将远程数据下载到本地。
urlretrieve(url, [filename
=
None
, [reporthook
=
None
, [data
=
None
]]])
说明:
参数 finename 指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。
参数 reporthook 是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。
参数 data 指 post 到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename 表示保存到本地的路径,header 表示服务器的响应头。
实例:
#!/usr/bin/python
#encoding:utf-8
import urllib
import os
def Schedule(a,b,c):
'''''
a:已经下载的数据块
b:数据块的大小
c:远程文件的大小
'''
per = 100.0 * a * b / c
if per > 100 :
per = 100
print '%.2f%%' % per
url = 'http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2'
#local = url.split('/')[-1]
local = os.path.join('/data/software','Python-2.7.5.tar.bz2')
urllib.urlretrieve(url,local,Schedule)
######output######
#0.00%
#0.07%
#0.13%
#0.20%
#....
#99.94%
#100.00%
方法二:
使用urllib的urlopen()函数
实例:
import urllib2
print "downloading with urllib2"
url = 'http://.pythontab.com/test/demo.zip'
f = urllib2.urlopen(url)
data = f.read()
with open("demo2.zip", "wb") as code:
code.write(data)
方法三:
使用requests模块
实例:
import requests
print "downloading with requests"
url = 'http://ww.pythontab.com/test/demo.zip'
r = requests.get(url)
with open("demo3.zip", "wb") as code:
code.write(r.content)
2、脚本的基本功能实现
#python3
import os
import sys
import hashlib
import requests #获取到文件然后md5验证
def GetFile(ip_or_list,url):
proxie = {}
if os.path.isfile(ip_or_list) and not os.path.isfile(url):
with open(ip_or_list) as f:
for ip in f:
if ip.strip() == '':
continue
proxie['http'] = 'http://%s:80'%ip.strip()
file = requests.get(url, proxies=proxie, timeout=20)
md5 = hashlib.md5()
md5.update(file.content)
print('IP:%s ===== MD5:%s'%(ip,md5.hexdigest()))
return 'done' elif os.path.isfile(ip_or_list) and os.path.isfile(url):
with open(url) as f:
for single_url in f:
print('验证URL:',single_url)
with open(ip_or_list) as t:
for ip in t:
if ip.strip() == '' or single_url.strip() == '':
continue
proxie['http'] = 'http://%s:80' % ip.strip()
file = requests.get(single_url, proxies=proxie, timeout=20)
md5 = hashlib.md5()
md5.update(file.content)
print('IP:%s ===== MD5:%s' % (ip, md5.hexdigest())) else:
proxie = {
'http': 'http://%s:80'%ip_or_list.strip()
}
file = requests.get(url,proxies = proxie,timeout = 20)
md5 = hashlib.md5()
md5.update(file.content)
return 'IP:%s ===== MD5:%s'%(ip_or_list,md5.hexdigest()) #验证大文件的MD5,没有用到
def GetFileMd5(filename):
if not os.path.isfile(filename):
return '传入的MD5验证文件有误'
md5 = hashlib.md5()
f = open(filename,'rb')
while True:
b = f.read(1024)
if not b:
break
md5.update(b)
f.close()
return md5.hexdigest() if __name__ == '__main__':
if len(sys.argv) == 3:
if os.path.isfile(sys.argv[1]) and os.path.isfile(sys.argv[2]): #python ip.list + url.list
print('[ip.list & url.list]开始验证边缘节点')
res = GetFile(sys.argv[1],sys.argv[2])
print(res) else:
origin_ip, url = sys.argv[1:3]
print('验证源站md5:')
res = GetFile(origin_ip,url)
print(res)
print('验证边缘节点MD5')
ip_list = 'ip.list' #需要遍历的边缘节点列表
res1 = GetFile(ip_list,url)
print(res1) else:
print('Format:script + origin_IP + URL')
文件MD5验证
第二步
页面话操作实现,后面跟进.....
Python Cdn平台文件md5验证的更多相关文章
- Python之修改文件MD5值
import os def fileAppend(filename): myfile = open(filename,'a') myfile.write("####&&&am ...
- python网络编程-socket上传下载文件(包括md5验证,大数据发送,粘包处理)
ftp server 1) 读取文件名 2)检查文件是否存在 3)打开文件 4)检查文件大小 5)发送文件大小给客户端 6)等客户端确认 7)开始边读边(md5计算)发数据 8)给客户端发md5 ft ...
- windows平台 python生成 pyd文件
Python的文件类型介绍: .py python的源代码文件 .pyc Python源代码import后,编译生成的字节码 .pyo Python源代码编译优化生成的字节 ...
- python 计算文件md5值
md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等.下面讲解在python中如何使用md5算法 ...
- md5验证文件上传,确保信息传输完整一致
注:因为是公司项目,仅记录方法和思路以及可公开的代码. 最近在公司的项目中,需要实现一个上传升级包到服务器的功能: 在往服务器发送文件的时候,需要确保 文件从开始发送,到存入服务器磁盘的整个传输的过程 ...
- [python]上传文件验证
上传文件验证 上传文件验证分为:1.文件头验证 2.文件类型验证 3.文件后缀验证 获取文件上传的二进制数据 # 获取上传文件 file = request.files.get('file') if ...
- 【转】Python处理wave文件
#本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在繁忙的生活 ...
- Python解析Wav文件并绘制波形的方法
资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...
- 终端应用变身文件 MD5/SHA1 校验工具
担心下载的文件被恶意篡改?没有找到 Mac 平台文件校验工具?其实 Mac OS X 系统中已经内置了“文件 MD5/SHA1 校验工具”,它就藏身于终端(Terminal)应用中! 打开终端应用,输 ...
随机推荐
- SQL2000,2005,2008安装在一台机子上
工欲善其事,必先利其器.本机的系统是在网上自己下载的,是32位windows7旗舰版.因为学习,需要在一台机子上同时安装SQL Server2000,2005,2008三个版本的数据库.先是在网上查了 ...
- Vue的computed和methods区别
1,computed里面定义的方法是以属性的方式(当然也可以以函数调用的方式)出现在html里面,而methods里面定义的方法是以函数的方式: 2,computed依赖于data里面的数据,只有相关 ...
- layout_weight属性
layout_weight 某个控件text多行,第一行对齐,baselineAligned = "false" 可使控件对齐 weight 计算规则 剩余尺寸=父布局尺寸-子布局 ...
- java控制远程ssh-expect4j(一)
github : https://github.com/wengyingjian/ssh-java-demo.git 程序写完后,ssh连接到远程服务器上需要做的步骤都是固定的,所以我们可以通过程序来 ...
- MySql自动默认时间及更新时间
注意:5.7 才能用类型为datetime的字段实现 `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `modifie ...
- String 对象详解
原文地址:http://zangweiren.javaeye.com/blog/209895 作者:臧圩人(zangweiren) 网址:http://zangweiren.javaeye.com & ...
- POJ 2411 Mondriaan's Dream (状压DP,骨牌覆盖,经典)
题意: 用一个2*1的骨牌来覆盖一个n*m的矩形,问有多少种方案?(1<=n,m<=11) 思路: 很经典的题目,如果n和m都是奇数,那么答案为0.同uva11270这道题. 只需要m个b ...
- windows 密钥
server 2016数据中心CB7KF-BWN84-R7R2Y-793K2-8XDDG
- UVA 11987 Almost Union-Find (单点修改的并查集)
此题最难处理的操作就是将一个单点改变集合,而普通的并查集是不支持这种操作的. 当结点p是叶子结点的时候,直接pa[p] = root(q)是可以的, p没有子结点,这个操作对其它结点不会造成任何影响, ...
- [神经网络]一步一步使用Mobile-Net完成视觉识别(三)
1.环境配置 2.数据集获取 3.训练集获取 4.训练 5.调用测试训练结果 6.代码讲解 本文是第三篇,获取tfboard训练集. 前面我们拿到了所有图片对应的标注信息的xml文件,现在我们需要先把 ...