IP-Adressen werden auf einer niedrigeren Ebene als HTTP behandelt - speziell durch das TCP/IP-Protokoll. Can I trust the source IP of an HTTP request? bietet einen guten Überblick darüber, warum die IP, die Sie von einem HTTP-Client erhalten, vertrauenswürdig (und schwer zu parodieren) ist.
Das gesagt, die HTTP-Header unterstützen die Idee "vorschlagen" die IP-Adresse von TCP erhalten ist nicht korrekt - am häufigsten ist dies die X-Forwarded-For Header. Angenommen, Ihr Server stützt sich auf diesen Wert (was es sollte wohl nicht!), Können Sie Ihre IP ganz leicht fälschen kann:
req, err := http.NewRequest("GET", "http://example.com", nil)
// ...
req.Header.Add("X-Forwarded-For", "1.2.3.4")
resp, err := client.Do(req)
Natürlich, die meisten Server nicht auf diesem Gebiet verlassen, da das Potenzial für Missbrauch ist groß.
Wenn Sie ein Testwerkzeug für Ihren eigenen Server schreiben, ist der beste Weg, Ihrem Server eine Logik hinzuzufügen, die nach der Existenz des Headers X-Forwarded-For
(oder etwas Ähnlichem) sucht und die IP-Adresse überschreibt, falls diese gesetzt ist . Stellen Sie jedoch sicher, dass Sie diese Funktion in der Produktion deaktivieren.
Es ist wahrscheinlich zu viel Mühe, IP-Adressen zu fälschen. Können Sie sich direkt in den Server einklinken und Request-Objekte erstellen (mit welcher Adresse auch immer)? –