我正在开发一个需要密码保护下载的项目,但我并不确定如何实现该功能。如果目标文件具有特定的扩展名(.exe,.mp3,.mp4等),我想提示用户输入用户名和密码。对此有何想法?阻止用户从Python下载文件?
我在Windows XP上使用Python 26。
我正在开发一个需要密码保护下载的项目,但我并不确定如何实现该功能。如果目标文件具有特定的扩展名(.exe,.mp3,.mp4等),我想提示用户输入用户名和密码。对此有何想法?阻止用户从Python下载文件?
我在Windows XP上使用Python 26。
使用HTTP的basic authentication(在我从客户端引用URL中):
WWW-Authenticate: Basic realm=XXXX
返回401个状态码代替, (XXXX为URL的哈希, 例如使用MD5或SHA-1,以使每个文件时,它基本上是唯一的)用户将需要在他的浏览器中输入用户名和密码,这将是 送他们回你与那个URL,即显示 简单的算法实现服务器:
进口的base64 base64string = base64.encodestring( '%S:%s' 的%(用户名,密码)) [:-1] req.add_header(“授权”,“基本%的”%base64string)
当授权报头存在于该请求,'Basic '
后解码的base64串 它提出,并检查它有你想要的username:password
当然,您可以使用更复杂的身份验证,但这可能会让您开始,除非用户的连接可以(或者您怀疑)被邪恶的第三方“嗅探”(在这种情况下,您仍然希望使用HTTPS,这样基本身份验证会再次变为OK ;-)。
“解码它呈现的base53字符串”你的意思是base64字符串? – Parthan 2010-08-03 03:24:21
@Techno,哎呀,是的,从快速打字错误视差,现在正在修复,tx! - – 2010-08-03 04:04:50
只是试图证明你不是一个机器人,嗯:) – 2010-08-03 05:18:21
这最好在Web服务器级别实现。
如果您使用的是Apache,可以通过将需要保护的文件放置在需要用户身份验证的htaccess
文件的目录中来完成。
然后,在Python脚本中执行HTTP Basic Auth以下载文件。确保使用SSL连接;基本身份验证通过电缆以明文方式发送用户密码。
根据我下面的回答,如果没有不断变化的领域的技巧,用户将只需输入一次凭据,然后他们的浏览器会记住并自动重新发送它们 - 这看起来与OP的规格不匹配。 (我不知道足够的Apache黑魔法是否能够轻松实现不断变化的领域 - 如果是这样,无论如何,对于serverfault.com来说似乎都是一个问题;-)。 – 2010-08-03 03:08:34
“密码保护下载”从什么?一个FTP服务器?完成 - FTP已经做到了。你在说什么类型的“下载”? – 2010-08-03 03:01:38
我在说一般的下载!当用户打开浏览器时,在链接上下载文件,我想提示输入密码。从何而来?一切! – 2010-08-03 03:09:30
没有“一般下载”。如果你正在谈论一个“浏览器”,那么你可能真的在从一个网站下载**,这意味着来自基于网络的应用**。请更新您的问题,说“从网络服务器**下载**”。 – 2010-08-03 03:10:49