TCP-Post (Login) "Your Browser sent a Request that the

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Bobo2040

Betreff: TCP-Post (Login) "Your Browser sent a Request that the

BeitragSa, Aug 23, 2014 3:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Smile
Ich wollte mal mit Blitzbasic und TCP mich auf meiner kleinen Website einloggen Smile

Den Code habe ich aus einem Thread hier im Forum ( link verloren Very Happy )
So die Testdaten: Username: Test1234, Passwort test1234
der Link: www.bazar.bobo2040.bplaced.net...page=login
Der Login mit dem Browser funktioniert Smile
Im PHP Script wird überprüft ob der Submit Button geklickt wurde (isset)
deshalb schicke ich den mit ...
BlitzBasic: [AUSKLAPPEN]

tcp = OpenTCPStream("www.bazar.bobo2040.bplaced.net", 80)

daten$ = "username=Test1234&password=test1234&loginsub=Einloggen" ;Parameter bsp. id=8&name=Name&test=Test

WriteLine tcp, "POST inc/php/check_login.php HTTP/1.1"
WriteLine tcp, "Host: www.gsm.de"
WriteLine tcp, "Referer: www.bazar.bobo2040.bplaced.net"
WriteLine tcp, "Content-type: application/x-www-form-urlencoded"
WriteLine tcp, "Content-length: " + Len(daten$)
WriteLine tcp, "Connection: close"
WriteLine tcp, Chr$(10)
WriteLine tcp, daten$

While Not Eof(tcp)
Print ReadLine(tcp)
Wend

CloseTCPStream(tcp)


WaitKey
End


So aber wenn ich das Script starte kommt als Request:
Your Browser send a Request that this Server couldn't understand.

Cache und Cookies habe ich schon geleert Smile

Hoffe jemand kann mir helfen ! Smile

Mfg
bitro.de

DAK

BeitragSa, Aug 23, 2014 10:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hol dir Wireshark und schau mal da an, was die Website denn an den Server schickt. Das tipp dann mal 1:1 ab und probier das aus. Wenn das dann geht, dann nimm eins nach dem anderen die unnötigen Felder raus, die der Browser mit schickt, bis es nicht mehr geht. So weist du, was der Server denn genau an Daten will.

Kleiner Tipp: Gib bei Wireshark als Filter das hier ein:
Code: [AUSKLAPPEN]
http.request.method=="POST"


Dann zeigt er dir nur alle HTTP-POSTs an, und keinen sonstiges unnötiges Zeug.
Hast du das richtige Paket gefunden, dann schau dir dort alles ab der HTTP-Schicht an. Die oberen Schichten (Ethernet, IP, TCP) kannst du getrost ignorieren.

Wenn du irgendwas mit Netzwerkprogrammierung machst, dann sind zumindest Basiskenntnisse in Wireshark Pflicht.
Gewinner der 6. und der 68. BlitzCodeCompo

BtbN

BeitragSa, Aug 23, 2014 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
HTTP erwartet \r\n als linebreak, nicht nur \n
 

Bobo2040

BeitragSa, Aug 23, 2014 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke DAK für die Antwort erstmal !Smile

@BtbN ehm Very Happy wie macht man ein "\r\n" in BB ?



@DAK

Ich hab jetzt mal das Paket mitgesnifft und die Post Daten also der String den in mitsende ist genauso wie in Wireshark...
Ich hab Connection zu Keep-alive geändert.

Hier mal das Paket:
http://www.file-upload.net/dow...capng.html
Vielleicht weißt du da mehr Very Happy

Mfg
bitro.de

Eingeproggt

BeitragSa, Aug 23, 2014 18:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich bin mir ziemlich sicher, dass "Host: gsm.de" falsch ist wenn du auf bplaced.net zugreifen willst.
Änder es mal in "Host: www.bazar.bobo2040.bplaced.net" - sofern es diese Domain wirklich gibt? Ist es nicht eher bazar.bobo2040.bplaced.net?

mfG, Christoph
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Jolinah

BeitragSa, Aug 23, 2014 22:27
Antworten mit Zitat
Benutzer-Profile anzeigen
WriteLine schreibt doch schon einen Zeilenumbruch (\r\n). Um eine leere Zeile, bzw. nur den Zeilenumbruch zu senden reicht daher ein:

BlitzBasic: [AUSKLAPPEN]
WriteLine tcp, ""

Und der Host müsste tatsächlich www.bazar.bobo2040.bplaced.net sein, zumindest ist dort ja auch das Login-Formular und das action-Attribut des Formulars verweist auf einen relativen Pfad.

Direkt nach dem POST würde ich die URL auch mit einem / beginnen:

Zitat:
POST /inc/php/check_login.php HTTP/1.1

Pummelie

BeitragSo, Aug 24, 2014 4:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Server handelt Protokollkonform, da der Host falsch angeben ist (wie bereits erwähnt). WWW ist nicht Teil des Hosts, ein Referer musst du nicht angeben, macht auch wenig Sinn.

Ich rate dir aber davon ab, die Sache über Post zu lösen, da es mit Get viel einfach geht.
Code: [AUSKLAPPEN]
GET /inc/php/check_login.php?username=Test1234&password=test1234&loginsub=Einloggen HTTP/1.1


Da du die Verbindung direkt wieder schließt ziehst du aus dem HTTP 1.1 Protokoll keinen Nutzen, verwende also eine sehr einfach HTTP/1.0 Anfrage diese haben weniger Vorraussetzungen.

Code: [AUSKLAPPEN]
GET /inc/php/check_login.php?username=Test1234&password=test1234&loginsub=Einloggen HTTP/1.0 ;Anfragetext
Connection: close ;Ist nicht notwenig, aber viele Server zicken sonst rum
It's done when it's done.
 

Bobo2040

BeitragSo, Aug 24, 2014 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Tipps und Vorschläge aber leider gibt mir der Server IMMER den gleichen Fehler also auch wenn ich
Keine POST Daten mitsende sondern einfach nur auf die Website zugreifen möchte :/

Mfg
bitro.de

Jolinah

BeitragMo, Aug 25, 2014 9:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Evtl. noch einen User-Agent mitgeben. Am besten einen echten Browser simulieren, also den User-Agent von einem Browser kopieren und bei deinem Request hinzufügen.
 

Bobo2040

BeitragDi, Aug 26, 2014 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay danke an alle Smile
Aber troz User-Agent funktioniert es nicht zumindest nicht bei bplaed.net Servern weiß auch nicht warum :/
Auf meiner eigenen Website also Server hats geklappt ^-^

Mfg
bitro.de

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group