Es ist eventuell eher ein Problem des HTTP Protokoll, aber fragen kostet ja nichts.
Ich bastle im Moment einen Video Downloader für verschiedene Hoster wie z.B. YouTube usw. Ich verwende dazu IdHTTP, also die Indys. Die Seite SEITE-XY (vorsicht, teils heftige Videos!) hat bei manchen Videos eine Abfrage wo der User gefragt wird ob er schon 18 ist. Wenn man es im Firefox bestätigt wird folgender Post request gesendet:
Code:
POST /age-verification.asp HTTP/1.1
Host: [
url]www.xy.com[/
url]
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2) Gecko/20100115 Firefox/3.6
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: 115
Connection: keep-alive
Referer: [
url]http://www.xy.com/age-verification.asp?goingtoURL=get.asp?i=V5088[/
url]
Cookie: ASPSESSIONIDCSRSASQQ=BBNKMMDAHPCKNOPANDLNAMBB; __utma=54023469.1060955171.1266258765.1266258765.1266261211.2; __utmc=54023469; __utmz=54023469.1266258765.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); _csoot=1266258765171; _csuid=4a29a19622d7e271
Content-Type: application/x-www-form-urlencoded
Content-Length: 76
Userchoice=I+am+above+18+years+of+age&goingtoURL=get.asp%3Fi%3DV5088&state=1
Mit Folgendem Delphi-Code versuche ich das ganze nach zu machen:
Delphi-Quellcode:
parameter:=TStringStream.Create('
Userchoice=I+am+above+18+years+of+age&goingtoURL=get.asp%3Fi%3D'+GetGetParam(
url, '
i')+'
&state=1');
IdHTTP1.Request.ContentType:='
application/x-www-form-urlencoded';
html:=IdHTTP1.Post('
http://www.xy.com/age-verification.asp', parameter);
parameter.Free;
Wireshark verrät mir das Folgender Request zu stande kommt:
Code:
POST /age-verification.asp HTTP/1.0
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 76
Host: [
url]www.xy.com[/
url]
Accept: text/
html, */*
Accept-Encoding: identity
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.2) Gecko/20100115 Firefox/3.6
Cookie: ASPSESSIONIDCSRSASQQ=LNKLMMDAOBCGLOJIAEHACNOC
Cookie2: $Version="1"
Userchoice=I+am+above+18+years+of+age&goingtoURL=get.asp%3Fi%3DV5088&state=1
Als antwort bekomme ich bei meinem Delphi-Code einen 500 Errorcode zurück. (Internal Server Error) Komischerweise wird aber der Quelltext den ich haben möchte trotzdem gesendet, jedoch gibt IdHTTP.Post() keinen zurück, wahrscheinlich weil davon ausgegangen wird das nichts Sinnvolles ankommt.
Der Errorcode kommt aber nur wenn ich als Content-Type auch "application/x-www-form-urlencoded" angebe, wenn nicht kommt zwar kein Error, jedoch wird die Abfrage auch nicht bestätigt.
Weiß jemand was hier los ist?
Vielen Dank schon mal für alle Antworten!