Ios 如何在objective c中解密签名并添加到YouTube提取的URL?

Ios 如何在objective c中解密签名并添加到YouTube提取的URL?,ios,iphone,objective-c,ios7,youtube-api,Ios,Iphone,Objective C,Ios7,Youtube Api,我正在尝试在我的应用程序中播放youtube视频。一切正常。但当我试图观看包含youtube内容的视频时。它失败了 我发现有人认为你应该加密和解密签名,并将其添加到URL 我不知道如何在IOS中解密签名 当我使用url时,它不会播放。有什么解决方案吗?你不能只使用获取视频信息数据,你还需要下载主视频页面,以查看加载了哪个html5player-XXXXX.jsjavascript文件。这将决定需要哪些排列。请参阅(用Perl编写)作为一个例子——跳到“这不是加密或哈希,只是一个字符重新排列密码

我正在尝试在我的应用程序中播放youtube视频。一切正常。但当我试图观看包含youtube内容的视频时。它失败了

我发现有人认为你应该加密和解密签名,并将其添加到URL

我不知道如何在IOS中
解密签名


当我使用
url
时,它不会播放。有什么解决方案吗?

你不能只使用
获取视频信息
数据,你还需要下载主视频页面,以查看加载了哪个
html5player-XXXXX.js
javascript文件。这将决定需要哪些排列。请参阅(用Perl编写)作为一个例子——跳到“这不是加密或哈希,只是一个字符重新排列密码。通过默默无闻实现完全安全。彻底的dick move”。这是我衷心赞同的观点。

一点无耻的自我推销,在过去的几周里,我一直在研究JavaScript和perl软件的替代版本是如何做到这一点的,最初我使用JavaScriptCore来实现它,但我决定要一个纯obj-C示例,所以我自己制作了一个。在主文件中,有详尽的注释说明了它是如何工作的

会回来的

 {
"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";
},
这应该能够完全取代您当前获取视频详细信息以供下载/播放的任何方式,并为您处理签名解密。您还可以非常轻松地修改代码,使其仅用于签名解密(但在使用get_video_info时,您需要注意使用正确的时间戳值)。

该库使用一个非常简单的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的作者。

为什么您使用YouTube API的未记录部分,并期望任何形式的一致性
s
可以是任何东西,甚至毫无价值。因为我想在我的应用程序中播放youtube上所有类型的视频。我找不到任何办法。所以我在做谷歌,我就说到点子上了。我知道苹果不会接受。但是我想向我的客户展示一下。你确定你不能用真正的YouTube API来做这件事吗?我不知道我得到的是这种类型的(使用第三方库,当我玩这个url时,它有时有效,有时无效(错误YouTube:这个视频包含来自vevo的内容?)@CodaFi不,你不能用官方的YouTube API获取视频的URL。Hii@0xced你能帮忙吗,我如何在php服务器端实现这一点
 {
"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";
},
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
    }
}];