Обычно, когда я хочу, чтобы мой публичный IP внутри моей программы, скопировать и вставить этот код:Как получить свой общедоступный IPV6-адрес из моего Java-приложения?
URL whatismyip = new URL("http://checkip.amazonaws.com");
InputStreamReader in = new InputStreamReader(whatismyip.openStream());
BufferedReader in = new BufferedReader(in);
final String ip = in.readLine(); //you get the IP as a String
System.out.println("You IP is: " + ip);
Но этот код только дает мне мой публичный адрес IPv4, и если я типа «что это моя ip "в поиске Google, я получаю другой адрес IPV6 вместо IPV4. Из моего приложения я хочу получить IPv6-адрес, но я счел бы расточительным разобрать всю веб-страницу Google на «https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=what+is+my+ip+», чтобы найти в нем свой IPV6-адрес. У кого-нибудь есть лучшее решение, которое я планирую использовать?
Кроме того, когда я пытаюсь использовать «https://wtfismyip.com/text» вместо «http://checkip.amazonaws.com», я получаю исключение безопасности [вызванное ведущим «HTTPS»]
Изменения в протокол HTTPS для HTTP фиксирует исключение безопасности, но обновленный код все еще не работает правильно:
{
final URL whatismyip = new URL("http://checkip.amazonaws.com");
BufferedReader in = new BufferedReader(new InputStreamReader(
whatismyip.openStream()));
final String ip = in.readLine(); //you get the IP as a String
System.out.println("Your IPV4 IP is: " + ip);
}
{
final URL whatismyip2 = new URL("http://wtfismyip.com/text");
final BufferedReader in2 = new BufferedReader(new InputStreamReader(
whatismyip2.openStream()));
final String ip2 = in2.readLine(); //you get the IP as a String
Application.printerr("Your IPV6 IP is: " + ip2); // Your IPV6 IP is the same at your IPV4 (wrong because when I check in the web browser is different)
}
Кроме того, пытаясь вытащить адрес IPV6 из поиска Google «что мой IP» - «https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=what+is+my+ip+» - это даже не дать мне адрес IP-вообще , ни ipv4, ни ipv6. Все, что я получаю это:
<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content=
"Search the world's information, including webpages, images, videos and more. Google has many special features
to help you find exactly what you're looking for." name="description"><meta content="noodp" name="robots">
<meta content="/images/google_favicon_128.png" itemprop="image"><title>Google</title><script>(function(){window.google={kEI:'SAxgVa73L4_FgwSy34LgCw',kEXPI:'3700256,3700366,4017578,4026111,4029815,4031300,4032032,4032500,4032521,
4032631,4032643,4032645,4032677,4032926,4033142,4033184,4033191,4033307,4033344,4034425,4035816,4035881,4035980,
4036005,4036345,4036464,4036486,4036531,4036539,4036665,4036896,4037457,4037538,4037611,8300096,8500394,8500851,
8501248,8501279,8501295,8501351,8501406,8501489,8501497,10200083,10201180,10201191',authuser:0,kSID:'c9c918f0_10'};
google.kHL='en';})();(function(){google.lc=[];google.li=0;google.getEI=function(a){for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)
a=a.parentNode;return b||google.kEI};google.getLEI=function(a){for(var b=null;a&&(!a.getAttribute||!(b=a.getAttribute("leid")));)a=
a.parentNode;return b};google.https=function(){return"https:"==window.location.protocol};google.ml=function(){};google.time=
function(){return(new Date).getTime()};google.log=function(a,b,e,f,l){var d=new Image,h=google.lc,g=google.li,c="",m=
google.ls||"";d.onerror=d.onload=d.onabort=function(){delete h[g]};h[g]=d;if(!e&&-1==b.search("&ei=")){
var k=google.getEI(f),c="&ei="+k;-1==b.search("&lei=")&&((f=google.getLEI(f))?c+="&lei="+f:k!=google.kEI&&(
c+="&lei="+google.kEI))}a=e||"/"+(l||"gen_204")+"?atyp=i&ct="+a+"&cad="+b+c+m+"&zx="+google.time();/^
http:/i.test(a)&&google.https()?(google.ml(Error("a"),!1,{src:a,glmm:1}),delete h[g]):(window.google&&window.google.vel&&
кажется checkip.amazonaws.com имеет только ipv4 интерфейс, поэтому он принимает соединения только с ipv4 адресов. Вы также можете проверить https://wtfismyip.com/text. Он также должен распознавать v6 и v4. – skandigraun
Я попробовал «https://wtfismyip.com/text», и сначала получил это большое исключение безопасности, а затем получил адрес, который был таким же, как адрес IPV4, который дал мне «checkip.amazonaws.com». См. Обновленный код, который будет опубликован в нижней части вопроса. –
Не могли бы вы сделать код с https://wtfismyip.com/text? –