"400 Bad Request" trotz korrekter Anfrage

Hallo liebe Community,
ich spiele hier einwenig mit Wireshark, Firefox und Grooveshark herum und bin auf einen Sachverhalt gestoßen, den ich mir bisher nicht erklären kann.

Lässt man über Grooveshark ein Lied abspielen (Ländersperre vorher durch Firefox Plugin deaktiviert) und extrahiert den entsprechenden Netzwerkverkehr, so erhält man folgende HTTP-Request:

Code:
POST /stream.php HTTP/1.1
Host: stream57-he.grooveshark.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
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
Connection: keep-alive
Cookie: __utma=111479378.983549518.1341639351.1345568919.1345572206.9; __utmz=111479378.1341639351.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __qca=P0-1808481611-1341639371207; PHPSESSID=48e4a16b2762a5087b9c629d3664f251; __utmb=111479378.391.4.1345580986572; __utmc=111479378
Referer: http://grooveshark.com/JSQueue.swf?20120521.02
Content-type: application/x-www-form-urlencoded
Content-length: 100

streamKey=754f8917a50475849130f9b1e40e9ecbd94d511c%5F5033f6c1%5F174f06d%5F2036fa7%5F8a2e585c%5F1%5F0

Der Webserver reagiert wie erwartet und wirft ein 200 OK zurück und im Anschluss daran das Lied:

Code:
HTTP/1.1 200 OK
Server: nginx/1.0.2
Date: Tue, 21 Aug 2012 20:29:46 GMT
Content-Type: audio/mpeg
Content-Length: 4725896
Last-Modified: Thu, 07 Jun 2012 02:56:40 GMT
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Expires: Sat, 26 Jul 1997 05:00:00 GMT
Accept-Ranges: bytes

ID3...

Versucht man die Request nach dem Lied zu emulieren (durch diverse Firefox-Plugins), so erhält man folgende Request, die meiner Meinung nach identisch mit der ersten ist:

Code:
POST /stream.php HTTP/1.1
Host: stream57-he.grooveshark.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
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
Connection: keep-alive
Cookie: __utma=111479378.983549518.1341639351.1345568919.1345572206.9; __utmz=111479378.1341639351.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __qca=P0-1808481611-1341639371207; PHPSESSID=48e4a16b2762a5087b9c629d3664f251; __utmb=111479378.391.4.1345580986572; __utmc=111479378
Referer: http://grooveshark.com/JSQueue.swf?20120521.02
Content-Type: application/x-www-form-urlencoded
Content-Length: 100

streamKey=754f8917a50475849130f9b1e40e9ecbd94d511c%5F5033f6c1%5F174f06d%5F2036fa7%5F8a2e585c%5F1%5F0

Allerdings erhalte ich hier eine "400 - Bad Request" Response.

Code:
HTTP/1.1 400 Bad Request
Server: nginx/1.0.2
Date: Tue, 21 Aug 2012 20:35:02 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
0

Durch welche andere Faktoren muss das Verhalten des Webservers beinflusst worden sein? - Ist die Session (mit zugehöriger ID ausgeloffen? - So schnell?) Oder gibt es gar noch andere Werte, die nicht im Header stehen und übermittelt werden? (Wäre mir neu, da sowohl Cookies, als auch Parameter mitübertragen worden sind...)

Ich bedanke mich für eure Antworten,
mit freundlichen Grüßen,
JoRoe.
 
Einfach mehrmals die gleiche Aktion durchführen und den Mitschnitt vergleichen - ich tippe hier auf unterschiedliche Streamkeys (z.B + Zeitstempel, Checksumme oder sonstige Dinge - nicht zuletzt um das Nachbauen der "Alternativclients" zu erschweren ;) ).
Bezüglich Sessions - bei LastFMs waren die Titel gar nur einmalig abspielbar.
 
Vielleicht ist es ähnlich wie neuerdings bei YT.

Erst einen normalen Request auf die Seite ausführen, danach werden erst die Streamdaten über einen anderen Request verschickt.
 
@Chakky
Ja, das ist bei Grooveshark auch so. Der eigentliche Stream wird per AJAX nachgeladen, aber ich habe diesen entsprechenden Teil bereits extrahiert.

@CDW
Super! Genau das war es!

Code:
streamKey=953422b0a912317fbd0e856217b4e8957dddce34%5F503516cd%5F180df7c%5F1f9f756%5F8a69d392%5F1%5F0
Code:
streamKey=0ebc393342be87eaa80bfb1e956ce21c58263cdd%5F50351712%5F180df7c%5F1f9f756%5F8a69d392%5F1%5F0

Die StreamKeys zweier exakt gleicher Anfragen. (mit Außnahme der Zeit)
Es ist deutlich zu erkennen, dass das Ende der beiden Keys identisch ist, lediglich der Anfang ist different.

Ich melde mich, sobald es weitere Fragen gibt.
mit freundlichen Grüßen,
JoRoe.
 
Zurück
Oben