Youtube Downloader c++



  • Hallo zusammen,
    ich bin zwar noch recht Newbie in C++, aber ich habe mich jetzt mal daran gewagt, einen Youtube-Downloader zu schreiben.

    Funktionieren tut:
    Die Abfrage mit Get_video?. Ich extrahiere auch erfolgreich die URL.
    Soweit gut. Das Video liegt (nach der Url) auf einem Server wie:
    http://o-o.preferred.fra02s03.v6.lscache5.c.youtube.com
    Wenn ich mich nun auf diesesn verbinde, klappt das auch. Wenn ich jetzt aber die GET-Anfrage schreibe, dann kommt nur eine 302 Found mit einer URL zurück, die wirklich nicht geht.

    Die URL lasse ich mir in eine Datei schreiben. Wenn ich diese nun mit Opera oder Mozilla Firefox (letzterer mit HttpFox) öffne, kann ich das Video herunterladen. Was mach ich falsch?

    Das ist die GET:

    sprintf(buf3,"GET %s HTTP/1.1\r\nHost: %s\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0 ( .NET CLR 3.5.30729; .NET4.0E)\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\nAccept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\nAccept-Encoding: gzip,deflate\r\nAccept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\nKeep-Alive: 300\r\nConnection: keep-alive\r\nCookie: %s; PREF=f1=50000000&fv=10.3.183\r\n\r\n",Video_ID,Host,cookie);
    

    Antwort dann:

    HTTP/1.1 302 Found
    
    Location: http://o-o.preferred.fra02s03.v6.lscache5.o-o.preferred.fra02s03.v6.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=904516%2C901700&itag=43&ip=87.0.0.0&signature=9AA12B28AFF81A77F66D1684FC245E7D7E35E873.C1F52D230D9341B31E5297E7604A3C60E669ACB6&sver=3&ratebypass=yes&expire=1317330000&key=yt1&ipbits=8&cp=U0hQTFNOTl9FSkNOMF9LSFJBOk1FRnBjNmE5ME5j&id=11635bee3e09b834&cms_redirect=yes
    
    Date: Thu, 29 Sep 2011 14:56:45 GMT
    
    Content-Type: text/html; charset=UTF-8
    
    Server: ClientMapServer
    
    Content-Length: 679
    
    X-XSS-Protection: 1; mode=block
    
    X-Frame-Options: SAMEORIGIN
    
    <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
    <TITLE>302 Moved</TITLE></HEAD><BODY>
    <H1>302 Moved</H1>
    The document has moved
    <A HREF="http://o-o.preferred.fra02s03.v6.lscache5.o-o.preferred.fra02s03.v6.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&amp;fexp=904516%2C901700&amp;itag=43&amp;ip=87.0.0.0&amp;signature=9AA12B28AFF81A77F66D1684FC245E7D7E35E873.C1F52D230D9341B31E5297E7604A3C60E669ACB6&amp;sver=3&amp;ratebypass=yes&amp;expire=1317330000&amp;key=yt1&amp;ipbits=8&amp;cp=U0hQTFNOTl9FSkNOMF9LSFJBOk1FRnBjNmE5ME5j&amp;id=11635bee3e09b834&amp;cms_redirect=yes">here</A>.
    
    </BODY></HTML>
    

    Die URL, die in Opera/Mozilla Firefox funktioniert:
    [url]
    http://o-o.preferred.fra02s03.v6.lscache5.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=910703%2C900505%2C902314&itag=43&ip=87.0.0.0&signature=CBABC2CAE884069A96144BEAA72712E1A6234AE9.6BA37F2D2C1365642D686D1ABECF1E11563DABE7&sver=3&ratebypass=yes&expire=1317333600&key=yt1&ipbits=8&cp=U0hQTFNOUV9FSkNOMF9LSFVHOmNBendDT0dJVElV&id=11635bee3e09b834
    [/url]

    Hat irgendjemand, irgendeine Idee, was da so falsch ist. Ich arbeite da jetzt seit zwei Stunden nur an diesem blöden GET. Meine anderen funktionieren alle super. (mit Youtube und so)

    Vielen Dank schon mal.

    Ich hoffe, dass das hier das richtige Forum ist, aber es erschien mir am passendsten.

    freddyv.95



  • Du musst doch nur dem Link in dem 302 Dokument folgen um dein Ziel zu erreichen. Das machen die Browser wahrscheinlich ebenso.

    Edit: Tippfelher



  • Das hab ich auch schon versucht. Als htm gespeichert und mit Opera geöffnet. Dann kam der DNS error auf der Telekomseite.



  • kann es sein, dass die aufgerufene URL zwei mal

    o-o.preferred.fra02s03.v6.lscache5
    

    enthält?!

    Wos hin soll:

    http://o-o.preferred.fra02s03.v6.lscache5.c.youtube.com
    

    Wos hinkommt (Laut 302 Error):

    http://o-o.preferred.fra02s03.v6.lscache5.[b]o-o.preferred.fra02s03.v6.lscache5.[/b]c.youtube.com
    

    Warum das so ist kann ich nicht sagen. Es könnte evtl. sein, dass in sprintf was zu viel drangehangen wird.



  • Danke erstmal. Werde ich morgen überprüfen. Aber wieso funktioniert dann die Ip-Auflösung??

    Also in der Datei, wo die gesamte URL drinsteht, stimmts noch. Aber ich werde das überprüfen.



  • Habe ,mir jetzt alle Ausgaben in eine Datei schreiben lassen.
    Host:
    o-o.preferred.fra02s03.v6.lscache5.c.youtube.com

    Get-Request:
    GET /videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Ccp&fexp=904532%2C905244%2C903115%2C911614&itag=43&ip=87.0.0.0&signature=245064EF81397F9E2D329888C469850E4A3BD5B0.153DE0EAE346F0D90AFA8577A87828BF8B2A8956&sver=3&ratebypass=yes&expire=1317402000&key=yt1&ipbits=8&cp=U0hQTFRLUF9FSkNOMF9MRVRBOjJlRlY1Rks1bk5N&id=11635bee3e09b834 HTTP/1.1
    Host: o-o.preferred.fra02s03.v6.lscache5.c.youtube.com
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9) Gecko/2008052906 Firefox/3.0 ( .NET CLR 3.5.30729; .NET4.0E)
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
    Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Cookie: VISITOR_INFO1_LIVE=4hGY0FO5rRQ; PREF=f1=50000000&fv=10.3.183

    Die Antwort ist aber immer noch die Alte.


Anmelden zum Antworten