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)应用中! 打开终端应用,输 ...
随机推荐
- Flask 学习系列(四)---Jinjia2 模板继承
1.基模板 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- IO流----转换流、缓冲流
打开一个文本文件,另存为: Ansi就是系统默认编码(就是gbk) 建一个编码是utf-8的txt文件, 例: import java.io.FileWriter; import java.io.IO ...
- dubbo注解
如果还不了解Dubbo是什么或者不知道怎么搭建的可以先看一下我的上一篇文章. 首先我先来讲下提供者(也就是服务端)的配置,先上配置文件代码: <?xml version="1.0&qu ...
- Android用RecyclerView实现的二维Excel效果组件
excelPanel 二维RecyclerView.不仅可以加载历史数据,而且可以加载未来的数据. 包括在您的项目中 excelPanel 二维RecyclerView.不仅可以加载历史数据,而且 ...
- Swing---WindowConstants
Java桌面开发过程中,很多人都写过类似下面的代码. import javax.swing.JFrame; public class SimpleFrame { public static void ...
- LINQ 组合查询 和分页查询的使用
前端代码 <%@ Page Language="C#" AutoEventWireup="true" Debug="true" Cod ...
- 51nod 1572 宝岛地图
题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 勇敢的水手们到达了一个小岛,在这个小岛上,曾经有海盗在这里埋下了一些宝藏.然而,我 ...
- iphone开发思维导图
- stixel-world跑在kitti数据集
kitti数据集中每一帧的Calibration不同,每一帧都存储了4个相机的Calibration http://ww.cvlibs.net/publications/Geiger2013IJRR. ...
- 前端应该如何去认识http
大家应该都知道http是什么吧,肯定会回答不就是浏览器地址那东西吗,有啥好说的,接下来咱们来深入刨析下http这东西. 什么叫http:超文本传输协议(HTTP)是用于传输诸如HTML的超媒体文档的应 ...