Ich frage mich, ob es eine einfache Möglichkeit gab, die öffentliche IP-Adresse eines Computers mit Ruby zu erhalten.Get public (remote) IP-Adresse
Antwort
Akamai bietet eine Seite "Was ist meine IP ist", dass Sie holen können:
require 'open-uri'
remote_ip = open('http://whatismyip.akamai.com').read
Es gibt ein paar Alternativen, die das gleiche tun, aber:
- http://whatismyip.akamai.com
- http://ipecho.net/plain
- http://icanhazip.com
- http://ident.me
- http://bot.whatismyipaddress.com
Sie können auch die ipv4
und ipv6
Subdomains mit icanhazip.com
verwenden.
Wenn Sie sich nicht von Dritten abhängig machen möchten, können Sie Ihre eigenen Apps in einer One-Line-Rack-App verwenden und diese kostenlos auf Heroku oder anderen Geräten bereitstellen. Es berücksichtigt, dass X-Forwarded-For
eine durch Kommas getrennte Liste von Proxy-IP-Adressen enthalten kann und nur die Client-IP zurückgibt.
# config.ru
run lambda { |env|
remote_ip = env['HTTP_X_FORWARDED_FOR'] || env['REMOTE_ADDR']
remote_ip = remote_ip.scan(/[\d.]+/).first
[200, {'Content-Type'=>'text/plain'}, [remote_ip]]
}
Ich verwende Curl:
my_ip = `curl http://ipecho.net/plain`
Diese nicht verwendet Ruby-stdlib und erfordert obwohl curl.
Kein Schaben notwendig!
Ich benutze ipify, eine offene API, die Ihre öffentliche IP-Adresse zurückgibt. Nützlich, wenn Sie eine JSON-Antwort wünschen (hier nicht gezeigt).
require 'net/http'
public_ip = Net::HTTP.get URI "https://api.ipify.org"
=> "12.3.45.678"
Oder mit Curl:
public_ip = `curl https://api.ipify.org`
=> "12.3.45.678"
nicht erregt Versteh, das ist nicht meine öffentliche IP-Adresse :)
ich einen Dienst wie http://www.whatsmyip.website/ programmatisch die IP erhalten verwenden würde zu . Mit etwas wie Linux curl würde automatisch nur die IP zurückgeben, aber wenn Sie eine andere Anwendung/Sprache verwenden, müssen Sie möglicherweise ihre API auschecken.
ip = `curl http://www.whatsmyip.website`
Ich bin auf der Suche nach dem gleichen Problem und fand großartige Lösung API basiert.
Um die öffentliche IP-Adresse zu erhalten, können wir den folgenden Code verwenden:
require "net/http"
ip = Net::HTTP.get(URI("https://api.ipify.org"))
puts "My public IP Address is: " + ip
API Site URL: https://www.ipify.org/
Es ist zu spät auf, dies zu asnwer aber ich dachte, dass es für andere halpful sein kann .
- 1. Get Public IP und Port
- 2. Swift: private get und public set
- 3. Libgit2sharp Get Remote-Niederlassungen
- 4. Get remote Registrierungswert
- 5. Instagram api Get Public Tag Foto im Live-Modus?
- 6. Get Simple Remote Akka-Anwendung ausgeführt
- 7. Akka Remote: get automatisch generierten Port
- 8. Get Remote-Bild mit cURL dann resample
- 9. Get Benutzer IP von Remote-Skript
- 10. Private zugänglich vs Public
- 11. public class imagehandler: IHttpHandler
- 12. public static class oder const
- 13. public class Mitglied sichtbar Abkömmlinge
- 14. Welche wird empfohlen: "statisch public" oder "public static"
- 15. Inkonsistente Zugänglichkeit obwohl Klasse public
- 16. Public Domain hochauflösende Vektordaten
- 17. Nicht Public Library SockPuppetGizmo
- 18. sharepoint public form
- 19. Facebook Public Feed API
- 20. F # - public literal
- 21. Java public static main()
- 22. Dynamisch generiere public static
- 23. NativeScript Public/Globale Funktionen
- 24. VBA Public Array: wie?
- 25. C# 2015 Public Class
- 26. private public in Typescript
- 27. Jenkins-get "Build Time Trend" Werte mit "Remote Access API"
- 28. locken Get Remote-Datei und erzwinge Download zur gleichen Zeit
- 29. Get MAC-Adresse für Remote-Computer unter NT4 in C
- 30. Get Public Link nach dem Hochladen von Datei auf Google Drive mit Nodejs
Holen Sie [whatismyip] (http://www.whatismyip.com/) und analysieren Sie es. :) –
Welche Informationen haben Sie in der Hand? der Domain Name?Wenn der Benutzer direkt eine Verbindung zu Ihrem Server herstellt, dann ist die Client-IP die öffentliche IP-Adresse – ShadyKiller
Wohin wird der Code auf dem Computer des Endbenutzers ausgeführt? Sprechen sie schon mit einem externen Server (IE Web-Anfrage) – Doon