2014-03-05 1 views
6

내 응용 프로그램에서 YouTube 비디오를 재생하려고합니다. 모든 것이 잘 작동합니다. 하지만 YouTube에서 콘텐츠가 포함 된 동영상을 보려고 할 때. 실패합니다.어떻게 서명을 해독하고 객관적인 목적으로 YouTube 추출 URL에 추가 할 수 있습니까?

발견 한 사람이 서명을 암호화하고 해독하여 URL에 추가해야한다고 생각합니다.

IOS에서 decrypt signature하는 방법을 모른다.

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를 사용

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

. 어떤 해결책이 있습니까?

+0

YouTube API의 문서화되지 않은 부분을 사용하고 있으며 어떤 종류의 일관성이 필요하다고 생각하십니까? 's'은 전혀 쓸모 없으며, 쓸모 없게 될 수도 있습니다. – CodaFi

+0

내 앱에서 YouTube의 모든 유형의 동영상을 재생하기 때문에. 나는 어떤 방법도 찾지 못하고있다. 그래서 나는 구글을하고 있고 나는 그 지점에왔다. 사과가 받아들이지 않을 거라는 걸 압니다. 하지만 제 고객을 보여주고 싶습니다. –

+0

진짜 YouTube API로이 작업을 수행 할 수 없습니까? – CodaFi

답변

5

get_video_info 데이터 만 사용할 수는 없으며 기본 비디오 페이지를 다운로드하여 html5player-XXXXX.js 자바 스크립트 파일이로드되었는지 확인해야합니다. 이것은 어떤 순열이 필요한지를 지시 할 것이다. 예를 들어 http://www.jwz.org/hacks/youtubedown (Perl로 작성)을 참조하십시오 - "이것은 암호화 또는 해시가 아니라 문자 재 배열 암호로, 전체 보안은 모호합니다. 거시기가 움직입니다."라는 말은 건너 뜁니다. 이것은 감정입니다. 진심으로 동의한다.

-1

약간의 부끄러움이없는 셀프 프로모션으로 지난 몇 주간 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"; 
}, 

을 반환이 완전히 당신이 현재 다운로드/재생을 위해 비디오에 대한 세부 정보를 얻고 해독 서명을 담당하는 모든 방법을 대체 할 수있을 것입니다 너를 위해서. 당신은 꽤 쉽게 서명 해독을 위해 코드를 사용하도록 코드를 수정할 수도 있습니다 (하지만 get_video_info를 사용할 때는 적절한 타임 스탬프 값을 사용해야합니다).

2

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의 저자입니다.

관련 문제