Socket und htaccess

DadyCool

Grünschnabel
Hallo,

ich überprüfe eine Webseite auf das vorhanden sein eines Links. Dazu baue ich mittels socket eine Verbindung zu dieser Seite auf und lese den Webseiteinhalt in einen String ein.

Das funktioniert soweit auch ganz gut.

Jedoch nutzen einige Webmaster htaccess, welches z.B. die URL von test?id=1 auf test_1 oder so umschreibt.

Meine Frage: Kann socket die htaccess auch berücksichtigen? Denn aktuell ist das Problem, dass ich test_1 nicht prüfen kann, da er die Seite nicht kennt, weil er wohl nicht auf die Seite test?id=1 umgeleitet wurde. Rufe ich test?id=1 auf geht es ohne Probleme

Hat jemand eine Idee?


Danke

Entilzah
 
Der Browser kanns doch auch...
du musst halt dem server mitteilen, was du genau willst
als Referenz dient die HTTP-RFC (naja, oder weniger umfangreiche Werke :) )
Gruß
 
der socket ist in dem fall nur die verbindung und berücksichtigt die daten die du auf einer höheren ebene austauschst NICHT..

wie gut da die windows inet helper libraries sind, weiß ich nicht... benutze sie nicht..
RFCs wurde schon gesagt, eins der älteren (und weniger umfangreichen) würde wohl ausreichen.. hat man sich erstmal eingelesen, sind sie wunderbar zu verstehen...

und wenn ich ehrlich bin hab ich deine frage nicht zu 100% verstanden.. ich wüsste nicht, was man nicht prüfen kann...
 
Danke erstmal

@rook
ist leider auch nicht so einfach zu erkären.

Ich versuche es nochmal: Auf dem Webserver gibt es eine Seite, die mittels PHP dynamisch generiert wird: http://www.dimension-seven.de/news.php?id=143 <- so sieht die Seite aus. Jedoch sieht das ?id=143 ja nicht sonderlich schön aus. Darum ist es möglich den Browser dazu zu bewegen, wenn man http://www.dimension-seven.de/News_143.php aufruft das wie http://www.dimension-seven.de/news.php?id=143 zu behandeln. Wie der Browser das machen soll, steht in der .htaccess datei auf dem Webserver

Also man kann beide Seiten aufrufen
http://www.dimension-seven.de/news.php?id=143 (orginal)
http://www.dimension-seven.de/News_143.php (Link auf orginal)

Das Problem ist nun, dass ich eine Webseite auslesen möchte. Ich bastle mir dazu erstmal einen Socket zur Domain also http://www.dimension-seven.de
anschließend erstelle ich einen request string und Frage die Seite ab:

PHP:
String^ HtmlRequest::SocketSendReceive()
{
  // Request zusammenbasteln
  counter++;
 
  String^ request = String::Concat( "GET /",sSeite," HTTP/1.1\r\nHost: ", server, "\r\nUser-Agent: Mozilla/4.0\r\nConnection: Close\r\n\r\n" );

  array<Byte>^bytesSent = Encoding::ASCII->GetBytes( request );
  array<Byte>^bytesReceived = gcnew array<Byte>(256);

  // Socket Verbindung zum Server auf den jeweiligen Port herstellen
  Socket^ s = ConnectSocket();
  if ( s == nullptr ) {
    return ("Verbindungsfehler!");
  }

  // Request an den Server senden
  s->Send( bytesSent, bytesSent->Length, static_cast<SocketFlags>(0) );

  // Daten empfangen
  int bytes = 0;
  String^ strRetPage;
  

  bytes = s->Receive( bytesReceived, 256, static_cast<SocketFlags>(0) );
  strRetPage = String::Concat( strRetPage, Encoding::ASCII->GetString( bytesReceived, 0, bytes ) );
  sError = strRetPage->Substring(0, strRetPage->IndexOf("\r\n"));
  

  do
  {
    bytes = s->Receive( bytesReceived, bytesReceived->Length, static_cast<SocketFlags>(0) );
    strRetPage = String::Concat( strRetPage, Encoding::ASCII->GetString( bytesReceived, 0, bytes ) );
  }
  while ( bytes > 0 );
 return strRetPage;
}

Das Problem is, dass der request wohl nicht auf http://www.dimension-seven.de/news.php?id=143 weitergeleitet wird, denn ich bekomme die Meldung HTML Fehler 404

Wenn ich die Seite http://www.dimension-seven.de/news.php?id=143 abfrage, also nicht http://www.dimension-seven.de/News_143.php dann geht es.

Ich denke der HTMl-Request String ist richtig zusammengebastelt. Evtl liegt es ja an dem s->Send()


DadyCool
 
dein code sieht in ordnung aus.. hab zwar mit C# nix am hut.. aber es is dem C/C++ doch sehr ähnlich... ich bekomme bei beiden links ein 200 OK... keine umleitung und nichts... ich denke du hast dich beim request einfach wohl nur verschrieben.... "News.php" mag der server nicht... aber "news.php" mag er..
 
dein code sieht in ordnung aus.. hab zwar mit C# nix am hut.. aber es is dem C/C++ doch sehr ähnlich... ich bekomme bei beiden links ein 200 OK... keine umleitung und nichts... ich denke du hast dich beim request einfach wohl nur verschrieben.... "News.php" mag der server nicht... aber "news.php" mag er..

Das ist ja c++ (managedCode)
oh... werde ich gleich nochmal testen! Danke für deine Mühe!

DadyCool

Edit:

leider geht das nicht. Kann es evtl am Proxy liegen?

Ich habe folgende Sachen versucht:

Browser: http://www.dimension-seven.de/News_143.php <-- Seite wird gefunden
Programm 404 Fehler

Browser: http://www.dimension-seven.de/news_143.php <-- 404 Fehler
Programm: 404 Fehler

Browser: http://www.dimension-seven.de/news.php?id=143 <-- Seite wird gefunden
Programm: Seite gefunden
Edit
 
Zuletzt bearbeitet:
uups... na dann sieht es eher nach C++/CLI aus als nach managed C++ :)

wenn die seite bei deinem browser angezeigt wird, und bei deinem programm nicht.. kann ja irgendwas mit dem request nicht stimmen?! lass es dir ausgeben, so wie du es sendest (komplett)...

@proxy, lass ihn weg... ?! :)
 
Zurück