#1 11. August 2011 Grooveshark Api Token Hallo, ich versuche gerade die unoffiziele Grooveshark Api zu nutzen und diese in einem PHP Script mit Hilfe von Curl umzusetzen. Das Problem das ich nun nicht gelöst bekomme ist, dass ich immer den Fault Code 256 Invalid Token bekomme. Code: {"header":{"session":"bd999e82f31ebe91025011bbb54fd87e"},"fault":{"code":256,"message":"invalid token"}} Und ich nicht verstehen woran es liegt. Ich habe schon mehrere ähnliche Scripte durchgeschaut und deren ihre Token Funktion übernommen, aber der Fehler besteht weiterhin. Auch habe ich die eigene Funktion von Grooveshark in der JSQueue.swf angeschaut welche es genau gleich macht. Ich hoffe ihr könnt mir helfen. Funktion GenerateToken: PHP: $lastRandomizer = '' ; for( $x = 0 ; $x < 6 ; $x ++){ $val = rand ( 0 , 15 ); if( $val < 10 ){ $lastRandomizer .= $val ; } else { $lastRandomizer .= chr ( 97 + ( $val - 10 )); } } $method = "getStreamKeyFromSongIDEx" ; $shaKey = $method . ":" . $CommToken . ":neverGonnaLetYouDown:" . $lastRandomizer ; $token = $lastRandomizer . sha1 ( shaKey ); Community Token: PHP: $page = curl_post ( $CommUrl , $CommID , $cookie , 0 , 1 , 1 ); $obj = json_decode ( $page ); $CommToken = $obj ->{ 'result' }; JSON POST für getStreamKeyFromSongIDEX: PHP: $SongJson = array( "header" => array( "country" => array( "CC3" => "0" , "ID" => "55" , "CC4" => "0" , "CC2" => "0" , "IPR" => "10167" , "CC1" => "18014398509481984" ), "uuid" => $uuid , "client" => "gslite" , "clientRevision" => "20110722.09" , "token" => $token , "privacy" => 0 , "session" => $sessionID ), "parameters" => array( "country" => array( "CC3" => "0" , "ID" => "55" , "CC4" => "0" , "CC2" => "0" , "IPR" => "10167" , "CC1" => "18014398509481984" ), "mobile" => false , "songID" => 24378309 , "prefetch" => false ), "method" => "getStreamKeyFromSongIDEx" ); $SongJson = json_encode ( $SongJson ); Ich hoffe ihr könnt mir helfen. + Multi-Zitat Zitieren
#2 11. August 2011 AW: Grooveshark Api Token kann es an der syntax liegen? PHP: $token = $lastRandomizer . sha1 ( shaKey ); in PHP: $token = $lastRandomizer . sha1 ( $shaKey ); das $ fehlt bei shaKey; + Multi-Zitat Zitieren
#3 12. August 2011 AW: Grooveshark Api Token Ohh Danke! Ist mir gar nicht aufgefallen, aber leider bringt es keine Änderung. Ich glaub es liegt gar nicht an der Generierung des Tokens selber, weil ich die Tokens die Firefox verwendet so nachgestellt habe und diese übereinstimmen. Beispiel: Code: PHPSESSION: bd999e82f31ebe91025011bbb54fd87e SECRETKEY: 0dfc457300a60c4dbb83ea28f2e976c8 COMMTOKEN: 4e4462fad09c4 TOKEN: a8c27f73e736a16f906a872026ebf3ce071d224d457fb4 a8c27f73e736a16f906a872026ebf3ce071d224d457fb4 a8c27f + sha1(getStreamKeysFromSongIDs:4e4462fad09c4:neverGonnaLetYouDown:a8c27f); Nur ich habe keine Ahnung wo sonst der Fehler liegen könnte. Ich hoffe irgendjemand weiß Rat + Multi-Zitat Zitieren
#4 12. August 2011 AW: Grooveshark Api Token Setze einfach auch mal die Header die Firefox beim senden einer Anfrage mitsendet. Das ist ein Schutz der oftmals eingesetzt wird. Also "User-Agent", "Accept", "Accept-Language", "Accept-Encoding", "Accept-Charset"... + Multi-Zitat Zitieren
#5 12. August 2011 AW: Grooveshark Api Token Hatte ich ganz am Anfang schonmal gesetzt. Habe es jetzt nocheinmal probiert aber bringt leider keine Änderung. Trotzdem Danke Meine Curl Funktion: PHP: function curl_post ( $link , $postfields , $cookie , $refer , $ssl , $json ){ $ch = curl_init (); curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 ); curl_setopt ( $ch , CURLOPT_HEADER , 1 ); if( $json ){ //curl_setopt($ch, CURLOPT_HTTPHEADER,array('Accept: application/json', 'Content-Type: application/json')); curl_setopt ( $ch , CURLOPT_HTTPHEADER ,array( "Host: grooveshark.com" , "Content-type: application/json" , "Content-length: " . strlen ( $postfields ))); } curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , 1 ); curl_setopt ( $ch , CURLOPT_USERAGENT , 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1' ); curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT , '600' ); if( $refer ){ curl_setopt ( $ch , CURLOPT_REFERER , $refer ); } if( $ssl ){ curl_setopt ( $ch , CURLOPT_SSL_VERIFYPEER , 0 ); //curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); } curl_setopt ( $ch , CURLOPT_URL , $link ); if( $postfields ){ curl_setopt ( $ch , CURLOPT_POST , 1 ); curl_setopt ( $ch , CURLOPT_POSTFIELDS , $postfields ); } if( $cookie ){ curl_setopt ( $ch , CURLOPT_COOKIEJAR , $cookie ); curl_setopt ( $ch , CURLOPT_COOKIEFILE , $cookie ); } $page = curl_exec ( $ch ); if(empty( $page )){ return "Could not connect to host: " . $link . ' Errorcode: ' . curl_errno ( $ch ). '<br>' ; die(); }else{ return $page ; } curl_close ( $ch );} Vielleicht hat sich dort auch ein Fehler eingeschlichen. + Multi-Zitat Zitieren
#6 13. August 2011 AW: Grooveshark Api Token Der Host: Header sollte eigentlich automatisch mitgeschickt werden. Hast du auch die Accept Header gesetzt? Die spielen auch eine Rolle! Ich weiß nicht mehr bei welchem Dienst das war, aber ich hatte mal einen der tatsächlich die Accept Header überprüft hatte um automatisierte Scripts zu enttarnen. Wenn sonst alles stimmt kann es auch nicht mehr an soviel anderem liegen denke ich. Meine Empfehlung: Lad dir die Firefox Extension HTTP Live Headers runter, falls du die nicht sowieso schon hast, und schau dir alle Header einer Anfrage an. Diese implementierst du genau so auch in PHP und lässt ihn dir via CURLINFO_HEADER_OUT ausgeben. Trotzdem soll das die anderen nicht aufhalten auch ihre Ideen zu posten. + Multi-Zitat Zitieren
#7 13. August 2011 AW: Grooveshark Api Token Hmm ich nutze eig Tamper Data für Firefox. Aber ich hab nun auch noch mit Live Header die Header ausgelesen und diese in Curl hinzugefügt. Einmal für Curl: PHP: curl_setopt ( $ch , CURLOPT_HTTPHEADER ,array( "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: deflate" , "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" , "Connection: keep-alive" , "Referer: http://grooveshark.com/JSQueue.swf?20110808.01" , "Content-type: application/json" , "Content-length: " . strlen ( $postfields ))); Und dann habe ich es auch noch mit stream_context_create und file_get_contents probiert: PHP: $header = array( 'http' => array( 'method' => 'POST' , 'header' => "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0\r\n" . "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" . "Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3\r\n" . "Accept-Encoding: gzip, deflate\r\n" . "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" . "Connection: keep-alive\r\n" . "Content-type: application/json\r\n" . "X-Requested-With: XMLHttpRequest\r\n" . "Referer: http://grooveshark.com/JSQueue.swf?20110808.01\r\n" . "Content-length: " . strlen ( $SongJson ) . "\r\n" . "Cookie: PHPSESSID=" . $session . "\r\n" . "Host: grooveshark.com\r\n" . "Pragma: no-cache\r\n" . "Cache-Control: no-cache\r\n\r\n" , 'content' => $SongJson ) ); $context = stream_context_create ( $header ); $result = file_get_contents ( 'http://grooveshark.com/more.php?getStreamKeyFromSongIDEx' , false , $context ); Beides brachte keine Änderung. Ich hab nun auch angefangen mein Script mit denen aus dem Internet zu vergleiechen. Wie es scheint legt Grooveshark nicht so großen Wert auf die Header. Aber ich konnte auch sonst keine Fehler beim Vergleich feststellen. Es ist und bleibt mir ein Rätsel. Ein paar Ideen hatte ich dennoch. Welche ich aber gleich wieder verwerfen konnte. Die UUID: Wobei ich feststellte das diese zufällig generiert wird. Und der Intervall bei der Token generierung welcher bei 16 Minuten liegen soll. Da er solang Aktiv ist und man dann einen neuen braucht. Ich habe das Script aber bei einem Freund getestet der den Tag noch nicht auf Grooveshark war, also noch keinen Token hatte, und es ging wieder nicht. Ich werd mal den Flash Code in der JSQueue durchgehen und schauen ob ich noch was anderes finde. Viele Dank nochmal, vielleicht fällt jemand ja noch was ein! + Multi-Zitat Zitieren
#8 14. August 2011 AW: Grooveshark Api Token So nachdem ich alles neugeschrieben hab, funktioniert es aufeinmal. Ich weiß nicht woran es lag, aber das soll mich jetzt nichtmehr stören. Vielen Dank für die Hilfe. Mit fehlt nurnoch der 2te Secret Api Key für die Suche. Kennt jemand einen guten SWF Decompiler? Oder kann mir genau sagen wo ich den Key find? + Multi-Zitat Zitieren
#9 24. Dezember 2011 AW: Grooveshark Api Token Hast du das Script zum Laufen bekommen? + Multi-Zitat Zitieren
#10 24. Dezember 2011 AW: Grooveshark Api Token Jau hab ich, wenn du es brauchst oder interesse hast schreib mir einfach ne PM dann lass ich es dir zukommen! + Multi-Zitat Zitieren