我如何解密签名并添加到目标c中的YouTube提取的URL?

我正在尝试在我的应用程序中播放YouTubevideo。 一切正常。 但是当我试图观看包含来自YouTube的内容的video。 它失败。

我研究发现一个人认为你应该encryption和解密签名,并将其添加到URL?

我不知道如何decrypt signature在IOS decrypt signature

http://www.youtube.com/get_video_info?video_id=uuZE_IRwLNI&el=vevo&ps=default&eurl=&gl=US&hl=en

 stream { "fallback_host" = "tc.v12.cache7.googlevideo.com"; itag = 22; quality = hd720; s = "8E6E5D13EB65FB653B173B94CB0BCC3A20853F5EDE8.5E2E87DF33EEDE165FEA90109D3C7D5DADA06B6BB60"; type = "video/mp4; codecs=\"avc1.64001F, mp4a.40.2\""; url = "http://r7---sn-cvh7zn7r.googlevideo.com/videoplayback?pcm2fr=yes&sver=3&expire=1393773646&itag=22&id=bae644fc84702cd2&upn=SjZd81MudQs&sparams=gcr%2Cid%2Cip%2Cipbits%2Citag%2Cpcm2fr%2Cratebypass%2Csource%2Cupn%2Cexpire&ms=au&gcr=in&mt=1393747698&source=youtube&ratebypass=yes&ipbits=0&fexp=935620%2C919120%2C912523%2C932288%2C914084%2C916626%2C937417%2C937416%2C913434%2C932289%2C936910%2C936913%2C902907&mv=m&key=yt5&ip=103.250.162.79"; } 

当我使用的url不播放。 有没有解决办法?

您不能单单使用get_video_info数据,您还需要下载主video页面以查看加载了哪个html5player-XXXXX.js JavaScript文件。 这将决定需要哪些排列。 以http://www.jwz.org/hacks/youtubedown (以Perl编写)为例 – 跳到“这不是encryption或散列,只是一个字符重新排列密码”的部分。总迪克的举动“,这是我衷心赞同的一种观点。

XCDYouTubeKit库用一个非常简单的API来完成这个工作。

 NSString *videoIdentifier = @"uuZE_IRwLNI"; [[XCDYouTubeClient defaultClient] getVideoWithIdentifier:videoIdentifier completionHandler:^(XCDYouTubeVideo *video, NSError *error) { if (video) { // All URLs, with decrypted signature, are available in the `video.streamURLs` dictionary } else { // Handle error } }]; 

免责声明:我是XCDYouTubeKit的作者。

有点无耻的自我推销,我花了最后几个星期搞清楚如何使用JavaScript和perl版本的软件,最初使用JavaScriptCore来完成它,但决定我想要一个纯粹的obj-C样本,所以我自己做了一个。 有关如何在主文件中工作的详尽评论。

https://github.com/lechium/yourTube/blob/master/yourTube/KBYourTube.m

 KBYourTube *tube = [[KBYourTube alloc] init]; NSArray *streamArray = [tube getVideoStreamsForID:@"_7nYuyfkjCk"]; 

将返回

  { "fallback_host" = "tc.v20.cache6.googlevideo.com"; format = "720p MP4"; itag = 22; quality = hd720; s = "771171A2777DE13D6CE5320C210DCCA29F018FC6DBA.A7630D3C26F2F70EEFEB25889E1A1B8805EC0616616"; title = "Lil+Wayne+-+She+Will+ft.+Drake"; type = "video%2Fmp4%3B+codecs%3D%22avc1.64001F%2C+mp4a.40.2%22"; url = "https://r15---sn-bvvbax-2iml.googlevideo.com/videoplayback?nh=EAI&fexp=9416126%2C9420452%2C9422596%2C9423662%2C9424859&ipbits=0&mime=video%2Fmp4&ratebypass=yes&itag=22&upn=8XDeh70fkMI&expire=1450776595&mt=1450754946&sparams=dur%2Cid%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cnh%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&key=yt6&id=o-AF5K6y8liVQ1S9iLjUHOcIBdnb4a8g-rgcFwGc0wuidq&mn=sn-bvvbax-2iml&mm=31&ms=au&mv=m&source=youtube&pl=16&dur=323.895&lmt=1417236324599143&ip=xx&requiressl=yes&sver=3&signature=671A2777DE73D6CE5320C210DCCA29F018FC1DBA.A7630D3C26F2F70EEFEB25889E1A1B8805EC0616&title=Lil+Wayne+-+She+Will+ft.+Drake"; }, 

这应该能够完全取代您目前正在获取有关用于下载/回放目的的video的详细信息的任何方式,并负责为您解密签名。 你也可以很容易地修改代码,只是用它来签名解密(但是,当使用get_video_info时,你需要注意使用正确的时间戳值)。