Internet IP-Adresse ermitteln

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Internet IP-Adresse ermitteln

Beitrag von Scarabol »

Hallo Leute,

ich habe im Rahmen meines Chat Programms eine Procedure geschrieben mit der man seine Internet IP-Adresse ermitteln kann. Falls es sowas schon gibt ignoriert dieses Beitrag einfach, ansonsten hoffe ich auf positive Resonanz.

PB-3.94 Code:

Code: Alles auswählen

;*********************************************************************************************************************
; ©2006 by Scarabol
; nach einer Vorlage aus dem Purebasic Codearchiv www.purearea.net
; Beschreibung: Diese Procedure ermittelt die Internet IP-Adresse mithilfe der Webseite http://www.wieistmeineip.de/
;*********************************************************************************************************************

Procedure.s GetInternetIP()
  isLoop.b = 1
  Buffer.s = Space(2048)
  
  hInet.l = InternetOpen_("PB@INET", OpenType, #Null, #Null, 0)
  hURL.l = InternetOpenUrl_(hInet, "http://www.wieistmeineip.de/", #Null, 0, $80000000, 0)
  
  Repeat
    Delay(1)
    InternetReadFile_(hURL, @Buffer, Len(Buffer), @Bytes)
    If Bytes.l = 0
      isLoop=0
    Else
      Html$ = Html$ + Left(Buffer, Bytes)
    EndIf
  Until isLoop=0
  InternetCloseHandle_(hURL)
  InternetCloseHandle_(hInet)
  
  If FindString(Html$, "<h1 class="+Chr(34)+"ip"+Chr(34)+">", 0)
    ProcedureReturn Left(Mid(Html$, FindString(Html$, "<h1 class="+Chr(34)+"ip"+Chr(34)+">", 0)+Len("<h1 class="+Chr(34)+"ip"+Chr(34)+">"), 15), FindString(Mid(Html$, FindString(Html$, "<h1 class="+Chr(34)+"ip"+Chr(34)+">", 0)+Len("<h1 class="+Chr(34)+"ip"+Chr(34)+">"), 15), "<", 0)-1)
  Else
    ProcedureReturn ""
  EndIf
EndProcedure

Debug GetInternetIP()
Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
HeX0R
Beiträge: 3054
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Das gibts sogar Api-Free.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Wer ein Server mit PHP-Unterstützung sein Eigen nennt, der kann sich mit diesem PHP-Scipt unabhängig die IP ausgeben lassen :lol:

MyIP.php

Code: Alles auswählen

<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>IP4You</title>
</head>

<body text="#0000F0" bgcolor="#C0C0C0"<p><u><font size="4" color="#000000">Ihre IP ist:</font></u><b>
<?php
echo $_SERVER['REMOTE_ADDR'];
?> 
</b></p>
</body>

</html>
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Das tuts auch:

Code: Alles auswählen

<?php
echo $_SERVER['REMOTE_ADDR'];
?>
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

Muss man nicht trotzdem noch en Content vorher angeben?Oder macht PHP das automatisch?

Code: Alles auswählen

<?php
echo "Content-Type: text/plain\n\n";
echo $_SERVER['REMOTE_ADDR'];
?>
Zumindest so muss es bei Pythonscripten gemacht werden...

Gr33tz
Tafkadasom2k5
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
NNSoft
Beiträge: 50
Registriert: 29.11.2006 00:39
Kontaktdaten:

Beitrag von NNSoft »

Tafkadasom2k5 hat geschrieben:Muss man nicht trotzdem noch en Content vorher angeben?Oder macht PHP das automatisch?

Code: Alles auswählen

<?php
echo "Content-Type: text/plain\n\n";
echo $_SERVER['REMOTE_ADDR'];
?>
Zumindest so muss es bei Pythonscripten gemacht werden...

Gr33tz
Tafkadasom2k5
Hallo,

nein, ist ja keine Text-Datei sondern ne php-Datei. So als echo wird das wie Text ausgegeben. Ergebnis deines "Scriptes" wäre so:

Content-Type: text/plain
(Leerzeile)
(Leerzeile)
255.255.255.255

:|
Benutzeravatar
onny
Beiträge: 400
Registriert: 27.04.2005 17:50
Kontaktdaten:

Beitrag von onny »

ich find den code echt hübsch!
du solltest vllt eine andere seite nehmen, bei der nur die ip angezeigt wird. das macht vllt. einiges einfacher!
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Hallo,

nein, ist ja keine Text-Datei sondern ne php-Datei. So als echo wird das wie Text ausgegeben. Ergebnis deines "Scriptes" wäre so:

Content-Type: text/plain
(Leerzeile)
(Leerzeile)
255.255.255.255
AYAYAY.

Also: Übertragen wird nicht eine PHP-Datei, sondern plain-text. (übrigens ist ne "php-datei" auch nix anderes). Der Interpreter macht das allerdings automatisch. Wenn man es manuell machen will, so muss man das über header(""); erledigen. Ist aber hier wirklich nicht nötig (aber wenn man bspw. jpg-daten ausgeben will eben schon)

Also: Wenn man keine Ahnung hat, ...

Stimmt: Bei vielen anderen Sprachen muss das extra gemacht werden, weil PHP aber für diesen Einsatzort geschustert ist, macht es das liebenswürdigerweise automatisch und kann notfalls geändert werden...
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
NNSoft
Beiträge: 50
Registriert: 29.11.2006 00:39
Kontaktdaten:

Beitrag von NNSoft »

bluejoke hat geschrieben:Also: Wenn man keine Ahnung hat, ...
EyEyEy, echt cool deine Sonnenbrille, scheint nur die Durchsicht zu verschleiern. :lol:

Das zum Thema "keine Ahnung". Es zeigt das Ergebnis des obigen Scriptes. Und wenn wir schon "schlaumeiern", er (der Browser) wandelt es zum Type text/html um nicht text/plain. (Mal in die Eigenschaften der Ergbnisseite schauen!)
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Ich schrieb doch, dass der Content-Type über header übergeben werden muss, weil er sonst in der Ausgabe landet.

du hast recht, gesendet wird vom Webserver scheinbar bei Standardkonfi immer text/html, aber was spielt das für eine Rolle? Wenn du selber genau weist, dass da die IP-Adresse so drin steht, kann die die MIME-Angabe ja am Arsch vorbeigehen.

ayayay ist übrigens Kichwa und bedeutet soviel wie autsch.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Antworten