AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Whois from IP-Adresse?

Ein Thema von PeterPanino · begonnen am 9. Aug 2018 · letzter Beitrag vom 30. Okt 2019
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 08:01
Wahrscheinlich Ja.

Also bei Dir mit dem Winapi Namespace bei mir ohne.
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Aug 2018 um 08:18 Uhr)
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.472 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 08:15
Funktioniert ausgezeichnet. Danke!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 08:21
Gern geschehen, in der Repeat Schleife könntest Du das ganze auch in eine StringList ausgeben lassen um auf #1-#14 einzeln zugreifen zu können, aber mach wie Du magst, jetzt weißt Du ja wie es funktioniert
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 11:24
So habe ich es nun bei mir, um noch mehr Informationen zu erhalten.
Delphi-Quellcode:
type
  ApiResults = record
    Status: UTF8String;
    Country: UTF8String;
    CountryCode: UTF8String;
    RegionState: UTF8String;
    RegionName: UTF8String;
    City: UTF8String;
    Zip: UTF8String;
    Latitude: UTF8String;
    Longitude: UTF8String;
    CityTimeZone: UTF8String;
    ISP: UTF8String;
    Organization: UTF8String;
    NumberName: UTF8String;
    DNS: UTF8String;
    MobileConnection: UTF8String;
    ProxyConnection: UTF8String;
    QueryIP: UTF8String;
    ErrorMessage: UTF8String;
  end;

function GetUrlContentData(const Url: string): UTF8String;
var
  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array[0..1023] of byte;
  BytesRead: dWord;
  StrBuffer: UTF8String;
begin
  Result := '';
  NetHandle := InternetOpen('Delphi 2009', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
  if Assigned(NetHandle) then
    try
      UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil, 0, INTERNET_FLAG_RELOAD, 0);
      if Assigned(UrlHandle) then
        try
          repeat
            InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
            SetString(StrBuffer, PAnsiChar(@Buffer[0]), BytesRead);
            Result := Result + StrBuffer;
          until BytesRead = 0;
        finally
          InternetCloseHandle(UrlHandle);
        end
      else
        raise Exception.CreateFmt('Cannot open URL %s', [Url]);
    finally
      InternetCloseHandle(NetHandle);
    end
  else
    raise Exception.Create('Unable to initialize Wininet');
end;

function GetUrlContent(const Url: string): ApiResults;
begin
  Result.Status := GetUrlContentData(Url+'?fields=status');
  if Pos('fail', LowerCase(Result.Status)) > 0 then
  begin
    Result.ErrorMessage := GetUrlContentData(Url+'?fields=message');
    Result.QueryIP := GetUrlContentData(Url+'?fields=query');
  end
  else
  begin
    Result.Country := GetUrlContentData(Url+'?fields=country');
    Result.CountryCode := GetUrlContentData(Url+'?fields=countryCode');
    Result.RegionState := GetUrlContentData(Url+'?fields=region');
    Result.RegionName := GetUrlContentData(Url+'?fields=regionName');
    Result.City := GetUrlContentData(Url+'?fields=city');
    Result.Zip := GetUrlContentData(Url+'?fields=zip');
    Result.Latitude := GetUrlContentData(Url+'?fields=lat');
    Result.Longitude := GetUrlContentData(Url+'?fields=lon');
    Result.CityTimeZone := GetUrlContentData(Url+'?fields=timezone');
    Result.ISP := GetUrlContentData(Url+'?fields=isp');
    Result.Organization := GetUrlContentData(Url+'?fields=org');
    Result.NumberName := GetUrlContentData(Url+'?fields=as');
    Result.DNS := GetUrlContentData(Url+'?fields=reverse');
    Result.MobileConnection := GetUrlContentData(Url+'?fields=mobile');
    Result.ProxyConnection := GetUrlContentData(Url+'?fields=proxy');
    Result.QueryIP := GetUrlContentData(Url+'?fields=query');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  ThisLines: ApiResults;
begin
  ThisLines := GetUrlContent('http://ip-api.com/line/' + 'ip-api.com');
  Memo1.Lines.Add('Status: '+ThisLines.Status);
  if Pos('fail', LowerCase(ThisLines.Status)) > 0 then
   begin
     Memo1.Lines.Add('ErrorMessage: '+ThisLines.ErrorMessage);
     Memo1.Lines.Add('QueryIP: '+ThisLines.QueryIP);
   end
   else
   begin
     Memo1.Lines.Add('Country: '+ThisLines.Country);
     Memo1.Lines.Add('CountryCode: '+ThisLines.CountryCode);
     Memo1.Lines.Add('RegionState: '+ThisLines.RegionState);
     Memo1.Lines.Add('RegionName: '+ThisLines.RegionName);
     Memo1.Lines.Add('City: '+ThisLines.City);
     Memo1.Lines.Add('Zip: '+ThisLines.Zip);
     Memo1.Lines.Add('Latitude: '+ThisLines.Latitude);
     Memo1.Lines.Add('Longitude: '+ThisLines.Longitude);
     Memo1.Lines.Add('CityTimeZone: '+ThisLines.CityTimeZone);
     Memo1.Lines.Add('ISP: '+ThisLines.ISP);
     Memo1.Lines.Add('Organization: '+ThisLines.Organization);
     Memo1.Lines.Add('NumberName: '+ThisLines.NumberName);
     Memo1.Lines.Add('DNS: '+ThisLines.DNS);
     Memo1.Lines.Add('MobileConnection: '+ThisLines.MobileConnection);
     Memo1.Lines.Add('ProxyConnection: '+ThisLines.ProxyConnection);
     Memo1.Lines.Add('QueryIP: '+ThisLines.QueryIP);
   end;
end;
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Aug 2018 um 11:29 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Whois from IP-Adresse?

  Alt 10. Aug 2018, 22:05
Wenn Du die Funktion GetUrlContent() hiermit ersetzt ist/zählt es als nur 1 Internet-Abruf.
Delphi-Quellcode:
function GetUrlContent(const Url: string): ApiResults;
var
  tmp: UTF8String;
  sl: TStrings;
begin
  tmp := GetUrlContentData(Url+'?fields=status,country,countryCode,region,regionName,city,zip,lat,lon,timezone,isp,org,as,reverse,mobile,proxy,query,message');
  try
    sl := TStringList.Create;
    sl.Text := tmp;
    Result.Status := sl[0];
    if Pos('fail', LowerCase(Result.Status)) > 0 then
      begin
        Result.ErrorMessage := sl[1];
        Result.QueryIP := sl[2];
      end
      else
      begin
        Result.Country := sl[1];
        Result.CountryCode := sl[2];
        Result.RegionState := sl[3];
        Result.RegionName := sl[4];
        Result.City := sl[5];
        Result.Zip := sl[6];
        Result.Latitude := sl[7];
        Result.Longitude := sl[8];
        Result.CityTimeZone := sl[9];
        Result.ISP := sl[10];
        Result.Organization := sl[11];
        Result.NumberName := sl[12];
        Result.DNS := sl[13];
        Result.MobileConnection := sl[14];
        Result.ProxyConnection := sl[15];
        Result.QueryIP := sl[16];
      end;
  finally
    sl.Free;
    tmp := '';
  end;
end;
Viel Spaß damit.
Gruß vom KodeZwerg

Geändert von KodeZwerg (10. Aug 2018 um 22:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz