如果知道一首歌的地址,比如说这个地址,在浏览器输入这个地址,然后ctrl-s就可以保存这首歌曲。如果用wget下载这首歌,如下:
wget http://ftp.luoo.net/radio/radio447/01.mp3 -O demo.mp3
下载下来的是网站首页的html文件,这个是为什么呢?怎样才能用wget或者是其他程序下载这首歌?
如果知道一首歌的地址,比如说这个地址,在浏览器输入这个地址,然后ctrl-s就可以保存这首歌曲。如果用wget下载这首歌,如下:
wget http://ftp.luoo.net/radio/radio447/01.mp3 -O demo.mp3
下载下来的是网站首页的html文件,这个是为什么呢?怎样才能用wget或者是其他程序下载这首歌?
网站有加入cookie之类的验证。如果你用chrome隐身模式打开这个链接也不能直接下载。
想要离开浏览器直接下载,你就得写个程序模拟浏览器的行为,具体的你得自己去分析。
捉急,服务器代码你又没看到,他们可能:
1.验证cookies
2.验证refer
3.验证UA
4.他们自己页面的请求参数里携带校验码,
5.其它各种方式的验证
所幸这些都是可以模拟的,你如果确实想下载这个mp3,就用chrome在正常能下载的情况下把请求抓下来,一丝不苟的写一个一模一样的配置.wgetrc文件放在你的~目录下面,然后就能正常下载了。
这种事我就干过难道我会随便说???
5 回答1.6k 阅读
5 回答1.9k 阅读✓ 已解决
4 回答1.7k 阅读
2 回答999 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
4 回答1.1k 阅读
2 回答1.1k 阅读✓ 已解决
当你使用 wget,发送请求时有一行显示
HTTP request sent, awaiting response... 302 Object moved
然后直接重定向到网站的首页,下下来的就是网站首页的页面了。
所以在服务器端确实有限制,所以我们需要在 http 请求头上做点手脚,来模仿浏览器。
我们来使用 python urllib2 这个库来帮助我们实现