首页 > wget下载指定url资源失败

wget下载指定url资源失败

如果知道一首歌的地址,比如说这个地址,在浏览器输入这个地址,然后ctrl-s就可以保存这首歌曲。如果用wget下载这首歌,如下:

wget http://ftp.luoo.net/radio/radio447/01.mp3 -O demo.mp3

下载下来的是网站首页的html文件,这个是为什么呢?怎样才能用wget或者是其他程序下载这首歌?


当你使用 wget,发送请求时有一行显示
HTTP request sent, awaiting response... 302 Object moved
然后直接重定向到网站的首页,下下来的就是网站首页的页面了。

所以在服务器端确实有限制,所以我们需要在 http 请求头上做点手脚,来模仿浏览器。

我们来使用 python urllib2 这个库来帮助我们实现

#!/usr/bin/env python
#coding: utf8
import urllib2

url = 'http://ftp.luoo.net/radio/radio448/01.mp3'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22'
headers = {
	'User-Agent': user_agent,
	'Referer': url
}

req = urllib2.Request(url, None, headers)
response = urllib2.urlopen(req)
data = response.read()

f = open('010.mp3','wb') # 二进制文件写入需要加入b
f.write(data)
#f.writelines(data)
f.close()

网站有加入cookie之类的验证。如果你用chrome隐身模式打开这个链接也不能直接下载。

想要离开浏览器直接下载,你就得写个程序模拟浏览器的行为,具体的你得自己去分析。


捉急,服务器代码你又没看到,他们可能:
1.验证cookies
2.验证refer
3.验证UA
4.他们自己页面的请求参数里携带校验码,
5.其它各种方式的验证

所幸这些都是可以模拟的,你如果确实想下载这个mp3,就用chrome在正常能下载的情况下把请求抓下来,一丝不苟的写一个一模一样的配置.wgetrc文件放在你的~目录下面,然后就能正常下载了。

这种事我就干过难道我会随便说???


不会啊我这边的wget正常下载啊,难道你的版本太古老了?

【热门文章】
【热门文章】