ip über proxy



  • hallo leute, hab mal eine frage.

    wie kann ich meine aktuelle ip mit der ich im internet surfe ermitteln, auch wenn die connection über einen proxy läuft? also nicht die normale ip adresse.

    vielen dank im vorraus!

    bilal



  • Geht das überhaupt über proxi?
    Das muss man doch dann am Proxi forwarden.
    Bitte korrigiert mich, wenn ich scheisse laber, aber so hab ich das in erinnerung...

    J0



  • hab nen beitrag dazu im winapi forum einen beitrag gefunden:
    externe IP-Adresse

    so ganz hat mir das aber nicht geholfen, den dort steht das man per http auf dem router zugreifen soll und dort die ip auslesen soll. jetzt frag ich mich aber wie man sich beim router anmeldet (user,pass)?

    na ich werd mal nen bißchen rumprobieren. 😉



  • bin gerade dabei das problem mit nem bsp. aus der borlandhilfe zu lösen, was aber nicht so ganz klappt. evtl. legts daran das das pass+user nicht in base64 kodiert sind?

    //---------------------------------------------------------------------------

    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent
    Owner)
    : TForm(Owner)
    {

    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    NMHTTP1->Get(Edit1->Text);
    //Wenn die Schaltfläche Button1 angeklickt wird, wird die Methode Get (Empfangen) verwendet, um das Dokument an der von Edit1 angegebenen Adresse zu empfangen. Sowohl der Hauptteil (Body) als auch die Kopfzeile (Header) des Dokuments werden empfangen.
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    NMHTTP1->Head(Edit1->Text);
    //Wenn die Schaltfläche Button2 angeklickt wird, wird die Methode Head (Kopf) verwendet, um die Kopfzeile des Dokuments an der von Edit1 angegebenen Adresse zu empfangen.
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    NMHTTP1->Options(Edit1->Text);
    //Wenn die Schaltfläche Button3 angeklickt wird, werden die HTTP Optionen für das Dokument an der von Edit1 angegebenen Adresse unter Verwendung der Methode Options (Optionen) empfangen. Anmerkung: Nicht alle Server unterstützen die Methode Options.

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    AnsiString S;

    if (InputQuery("Trace-Daten erforderlich", "Eingabe von Daten zum Versenden als Trace", S))
    NMHTTP1->Trace(Edit1->Text, S);
    //Wenn die Schaltfläche Button4 angeklickt wird, wird die Funktion InputQuery verwendet, um Daten vom Anwender zu erhalten, die als Trace-Daten verwendet werden sollen. Wenn der Anwender Daten eingibt und OK anklickt, sendet die Methode Trace (Verfolgen) die Daten als Trace-Daten an den Server.

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    if (OpenDialog1->Execute())
    {
    NMHTTP1->OutputFileMode = TRUE;
    NMHTTP1->Put(Edit1->Text, OpenDialog1->FileName);
    NMHTTP1->OutputFileMode = FALSE;
    }
    //Wenn die Schaltfläche Button5angeklickt wird, fragt das Dialogfeld OpenDialog1 nach einer Datei. Wenn eine Datei ausgewählt wird, wird die Eigenschaft OutputFileMode auf TRUE gesetzt, so daß die Daten, die geschrieben werden sollen, aus der angegebenen Datei gelesen werden. Die Methode Put (Schreiben) wird verwendet, um die Datei an der von Edit1 angegebenen Adresse zu speichern. Wenn die Datei geschrieben ist, wird die Eigenschaft OutputFileMode wieder auf FALSE gesetzt.

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button6Click(TObject *Sender)
    {
    AnsiString S;
    if (InputQuery("Daten zum Senden erforderlich", "Eingabe von Daten zum Senden", S))
    NMHTTP1->Post(Edit1->Text, S);
    //Wenn die Schaltfläche Button6 angeklickt wird, wird die Funktion InputQuery verwendet, um die zu sendenden Daten zu erhalten. Wenn die Schaltfläche OK angeklickt wird, werden die Daten, die eingegeben worden sind, unter Verwendung der Methode Post (Senden) an das von der Adresse in Edit1 angegebene Dokument gesendet.
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Button7Click(TObject *Sender)
    {
    NMHTTP1->Delete(Edit1->Text);
    //Wenn die Schaltfläche Button7 angeklickt wird, versucht die Methode Delete ein HTTP Löschen des von der Adresse in Edit1 angegebenen Dokuments.

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::NMHTTP1AuthenticationNeeded(TObject *Sender)
    {
    AnsiString AnID, APass;
    InputQuery("Authentifizierung erforderlich", "Geben Sie eine Benutzerkennung ein", AnID);
    InputQuery("Authentifizierung erforderlich", "Geben Sie ein Paßwort ein", APass);
    NMHTTP1->HeaderInfo->UserId = AnID;
    NMHTTP1->HeaderInfo->Password = APass;
    ShowMessage("Authentifizierungsinformation abgegeben, bitte vorhergehenden Befehl erneut versuchen");

    //Wenn grundlegende Authentifizierung verwendet wird, um auf das von der Adresse in Edit1 angegebene Dokument zuzugreifen, wird das Ereignis OnAuthenticationNeeded (bei erforderlicher Authentifizierung) ausgelöst. In diesem Beispiel wird die Funktion InputQuery verwendet, um eine Benutzerkennung und ein Paßwort zu erhalten. Diese Werte werden dann in den Eigenschaften UserId (Benutzerkennung) und Password (Paßwort) der Eigenschaft HeaderInfo gespeichert (Siehe die Referenz auf THeaderInfo).Dem Anwender wird eine Meldung gezeigt, in der er aufgefordert wird, die HTTP-Transaktion erneut zu versuchen, wenn Paßwort und Benutzerkennung abgegeben worden sind.

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::NMHTTP1Failure(CmdType Cmd)
    {
    Memo1->Text = NMHTTP1->Header;
    Memo2->Text = NMHTTP1->Body;
    switch(Cmd)
    {
    case CmdGET: Memo3->Lines->Add("HTTP GET konnte nicht durchgeführt werden");
    case CmdPOST: Memo3->Lines->Add("HTTP Post konnte nicht durchgeführt werden");
    case CmdHEAD: Memo3->Lines->Add("HTTP HEAD konnte nicht durchgeführt werden");

    case CmdOPTIONS: Memo3->Lines->Add("HTTP OPTIONS konnte nicht durchgeführt werden");
    case CmdTRACE: Memo3->Lines->Add("HTTP TRACE konnte nicht durchgeführt werden");
    case CmdPUT: Memo3->Lines->Add("HTTP PUT konnte nicht durchgeführt werden");
    case CmdDELETE: Memo3->Lines->Add("HTTP Delete konnte nicht durchgeführt werden");
    }
    //Wenn ein HTTP-Befehl nicht erfolgreich ist, wird das Ereignis OnFailure (bei Fehlschlag) ausgelöst. In diesem Fall wird die Kopfzeile des zurückgegebenen Fehlers in Memo1 angezeigt und der Hauptteil wird in Memo2 angezeigt. Memo3 wird aktualisiert, indem unter Verwendung des Parameters Cmd überprüft wird, welcher Befehl nicht erfolgreich war, und eine spezifische Fehlermeldung für jeden der unterstützten Befehle hinzugefügt wird.
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::NMHTTP1Redirect(bool &Handled)
    {
    if (MessageDlg("Diese Site leitet Sie zu einer anderen Site weiter. Weiterleitung zulassen?", mtConfirmation, TMsgDlgButtons() << mbYes << mbNo, 0) == mrNo)
    Handled = TRUE;
    //Wenn das von der Adresse in Edit1 angegebene Dokument den Client zu einer anderen Site aufgrund seines Inhalts umleitet, wird das Ereignis OnRedirect (bei Weiterleiten)ausgelöst. Unter Verwendung der Funktion MessageDlg wird der Anwender gefragt, ob die Weiterleitung zulässig ist. Wenn der Anwender “Nein“ auswählt, wird der Parameter Handled
    // auf TRUE gesetzt, wodurch verhindert wird, daß die Umleitung (Standard-Aktion) erfolgt. Wenn der Anwender “Ja“ auswählt, wird die Standard-Aktion von der Komponente übernommen und das weitergeleitete Dokument wird geladen.

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::NMHTTP1Success(CmdType Cmd)
    {
    if (NMHTTP1->CookieIn != "")
    Memo4->Text = NMHTTP1->CookieIn;
    Memo1->Text = NMHTTP1->Header;
    Memo2->Text = NMHTTP1->Body;
    switch(Cmd)
    {
    case CmdGET: Memo3->Lines->Add("HTTP GET erfolgreich");
    case CmdPOST: Memo3->Lines->Add("HTTP POST erfolgreich");
    case CmdHEAD: Memo3->Lines->Add("HTTP HEAD erfolgreich");

    case CmdOPTIONS: Memo3->Lines->Add("HTTP OPTIONS erfolgreich");
    case CmdTRACE: Memo3->Lines->Add("HTTP TRACE erfolgreich");
    case CmdPUT: Memo3->Lines->Add("HTTP PUT erfolgreich");
    case CmdDELETE: Memo3->Lines->Add("HTTP DELETE erfolgreich");
    }
    //Wenn ein HTTP Befehl erfolgreich ist, wird das Ereignis OnSuccess (bei Erfolg) ausgelöst, das die erfolgreiche Durchführung angibt. In diesem Beispiel wird, wenn ein Cookie von dem Remote-Host in der Eigenschaft CookieIn zurückgegeben wird, dieser in Memo4 angezeigt. Die Kopfzeile (Header) und der Hauptteil (Body) werden von dem Server in den Eigenschaften Header beziehungsweise Body zurückgegeben. Die Kopfzeile wird in Memo1 angezeigt und der Hauptteil wird in Memo2 angezeigt. Memo3 wirkt als Statusanzeige, welche anzeigt, daß der von dem Cmd-Parameter angegebene Befehl erfolgreich war.
    }
    //---------------------------------------------------------------------------



  • also, ich hab es jetzt geschafft, mich am proxy anzumelden. jetzt muß ich nur noch wissen wie man mit der HTTP-Komp. zu einer Seite Surft und den Text (die IP kopiert).

    NMHTTP1->Host=Edit1->Text;
    NMHTTP1->HeaderInfo->Password=Edit3->Text;
    NMHTTP1->HeaderInfo->UserId=Edit2->Text;
    NMHTTP1->Connect();



  • Was hat das eigentlich mit dem ursprünglich erwähnten Proxy zu tun?

    Proxy != Router



  • stimmt, da hab ich mich verschrieben. sorry ich meinte natürlich router jansen.


Anmelden zum Antworten