第一步

  先用脚本实现基本的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验证的更多相关文章

  1. Python之修改文件MD5值

    import os def fileAppend(filename): myfile = open(filename,'a') myfile.write("####&&&am ...

  2. python网络编程-socket上传下载文件(包括md5验证,大数据发送,粘包处理)

    ftp server 1) 读取文件名 2)检查文件是否存在 3)打开文件 4)检查文件大小 5)发送文件大小给客户端 6)等客户端确认 7)开始边读边(md5计算)发数据 8)给客户端发md5 ft ...

  3. windows平台 python生成 pyd文件

    Python的文件类型介绍: .py       python的源代码文件 .pyc     Python源代码import后,编译生成的字节码 .pyo     Python源代码编译优化生成的字节 ...

  4. python 计算文件md5值

    md5是一种常见不可逆加密算法,使用简单,计算速度快,在很多场景下都会用到,比如:给用户上传的文件命名,数据库中保存的用户密码,下载文件后检验文件是否正确等.下面讲解在python中如何使用md5算法 ...

  5. md5验证文件上传,确保信息传输完整一致

    注:因为是公司项目,仅记录方法和思路以及可公开的代码. 最近在公司的项目中,需要实现一个上传升级包到服务器的功能: 在往服务器发送文件的时候,需要确保 文件从开始发送,到存入服务器磁盘的整个传输的过程 ...

  6. [python]上传文件验证

    上传文件验证 上传文件验证分为:1.文件头验证 2.文件类型验证 3.文件后缀验证 获取文件上传的二进制数据 # 获取上传文件 file = request.files.get('file') if ...

  7. 【转】Python处理wave文件

    #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在繁忙的生活 ...

  8. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  9. 终端应用变身文件 MD5/SHA1 校验工具

    担心下载的文件被恶意篡改?没有找到 Mac 平台文件校验工具?其实 Mac OS X 系统中已经内置了“文件 MD5/SHA1 校验工具”,它就藏身于终端(Terminal)应用中! 打开终端应用,输 ...

随机推荐

  1. EF5 通用数据层 增删改查操作,泛型类

    using System; using System.Collections.Generic; using System.Data.Entity.Infrastructure; using Syste ...

  2. SQL基本语法总结

    #创建数据库 DROP DATABASE IF EXISTS 数据库名; CREATE DATABASE 数据库名; #展示所有的数据库: SHOW DATABASES; #查看某个数据库的定义信息: ...

  3. Android里的网格空隙

    在很多移动端或者web端开发中我们会遇到很多网格布局,如果我们使用线性布局来实现一些简单的网格布局就需要使用padding/margin等属性来使其对齐,代码如下: <LinearLayout ...

  4. Python中的绝对路径和相对路径

    大牛们应该对路径都很了解了,这篇文章主要给像我这样的入门小白普及常识用的,啊哈 下面的路径介绍针对windows,其他平台的暂时不是很了解. 在编写的py文件中打开文件的时候经常见到下面其中路径的表达 ...

  5. javaSe-SimpleDateFormat

    SimpleDateFormat呢是一种可以将字符串转为日期或者日期转换成字符串的功能强大的不得了的类: import java.text.ParseException;import java.tex ...

  6. IM云通信行业步入快车道,谁将成为代表中国的全球IM“独角兽”?

    2016年,Twilio的成功上市,以及抢眼的股价表现,拓宽了全球云通信行业的想象空间,行业内公司估值水平也集体上调. 在中国,IM云通信行业也从2016年开始进入了一个“黄金发展时期”,一批如融云. ...

  7. VB SMTP用户验证发送mail

    转自 http://www.jishuzh.com/program/vb-smtp%E7%94%A8%E6%88%B7%E9%AA%8C%E8%AF%81%E5%8F%91%E9%80%81mail. ...

  8. UVA 10954 Add All 全部相加 (Huffman编码)

    题意:给你n个数的集合,每次选两个删除,把它们的和放回集合,直到集合的数只剩下一个,每次操作的开销是那两个数的和,求最小开销. Huffman编码.Huffman编码对于着一颗二叉树,这里的数对应着单 ...

  9. HDU 5094 Maze (状压)

    加一个维度,钥匙的状态,状压一下.n很小,钥匙也只有10个,bfs就好了. 忘了数组初始化.以后坚决不犯这种低级错误. #include<cstdio> #include<queue ...

  10. php有哪些优化技巧

    1. echo 比 print 快.2. 使用echo的多重参数代替字符串连接.3. 在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替.4. 对global变 ...