android youtube下载url 403禁止

you*_*ang 10 youtube android download

有些视频无法下载.

我用这个下载了网址

http://www.youtube.com/get_video_info?video_id=itGNQbJwRSk
Run Code Online (Sandbox Code Playgroud)

有没有人为什么下面的网址无法下载?

总网址:

http://r1---sn-a5m7lnek.googlevideo.com/videoplayback?expire=1391267516&ms=au&source=youtube&sver=3&upn=OzZzFV_-2o4&id=8ad18d41b2704529&itag=22&mt=1391243224&ipbits=0&ratebypass=yes&fexp=935622%2C914924%2C926515%2C916623%2C936910%2C936913&sparams=gcr%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&mv=m&ip=183.101.166.55&key=yt5&gcr=kr&signature=F303D0C863C27A6A46124A09E40F308BB67181E013.3FA3E17460DDF6ECA004D9E48B1356849534EBFFFF
Run Code Online (Sandbox Code Playgroud)

每个params分隔的url:

http://r1---sn-a5m7lnek.googlevideo.com/videoplayback?

expire=1391267516&

ms=au&

source=youtube&

sver=3&

upn=OzZzFV_-2o4&

id=8ad18d41b2704529&

itag=22&

mt=1391243224&

ipbits=0&

ratebypass=yes&

fexp=935622%2C914924%2C926515%2C916623%2C936910%2C936913&

sparams=gcr%2Cid%2Cip%2Cipbits%2Citag%2Cratebypass%2Csource%2Cupn%2Cexpire&

mv=m&

ip=183.101.166.55&

key=yt5&

gcr=kr&

signature=F303D0C863C27A6A46124A09E40F308BB67181E013.3FA3E17460DDF6ECA004D9E48B1356849534EBFFFF
Run Code Online (Sandbox Code Playgroud)

我在开放流中使用了以下代码

    u = new URL(url);
    HttpURLConnection huc = (HttpURLConnection)u.openConnection();//to know the size of video
    huc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36");
    huc.setRequestProperty("Accept","*/*");
    huc.setRequestMethod("GET");
    huc.setDoOutput(false);
    int size = huc.getContentLength();      
    int status = huc.getResponseCode();
    Log.e("download", status+ huc.getResponseMessage());
    is = new BufferedInputStream(huc.getInputStream());
Run Code Online (Sandbox Code Playgroud)

但它返回status = 403,size = -1.我找不到任何帮助了.

有没有人有想法?

Akh*_*esh 12

此视频是使用密码signatrue,你可以在返回的信息看http://www.youtube.com/get_video_info?video_id=itGNQbJwRSk

'use_cipher_signature=True'
Run Code Online (Sandbox Code Playgroud)

要下载此类视频,首先必须解码它的签名.播放器文件中存在解码算法(HTML5player或Flash播放器)

解码后,您必须使用相同的IP地址从您获取所有信息的位置下载视频.(您可以使用代理绕过相同的IP限制)

最好使用刮掉特定视频的网页并搜索;ytplayer.config = {(.*?)};.这包含所有必需的信息.

如果你不想刮,那么你可以使用下面的方法来获取JSON对象

https://www.youtube.com/watch?v=<Video-ID>&spf=prefetch
Run Code Online (Sandbox Code Playgroud)

请检查此API以获得简单的解决方案:CipherAPI

另一个很酷的API:YTstream API