Discussion:
Auslesen von Quellcode mit Klasse URL macht Schwierigkeiten
(zu alt für eine Antwort)
R. Schneider
2018-04-26 15:55:52 UTC
Permalink
Hallo Allerseits,

ich öffne eine URL und lese den Quellcode aus. Ich war bisher immer der
Auffassung, dass es sich dabei um normalen Text handelt. Ich bin mir
nicht mehr sicher, was ich da bekomme.

Ich verwende folgenden Code:

URL seite = new URL("http://www.meineipv6.de/");
InputStream is = seite.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String zeile = "";
String adresse = "";
while((zeile = br.readLine()) != null)
{
if(zeile.contains("ip_big"))
{
adresse = zeile;
System.out.println("adresse: " + adresse);
}
}
br.close();
is.close();

Auf der Seite erscheint zweimal lesbar meine ipV6-Adresse, die auch im
Quellcode zu lesen ist. Gewinne ich diese mit der o.g. Konstruktion,
kommt immer etwas wie "37.201.200.10" heraus. Das ist ipV4 und nicht
gewünscht und steht da auch nicht im Quellcode.

Kann mir das jemand erklären ? Kann mir jemand verraten, wie ich meine
ipV6-Adresse hier aus lese ?

Danke im Voraus.
R.S.
Patrick Roemer
2018-04-26 17:20:12 UTC
Permalink
Post by R. Schneider
URL seite = new URL("http://www.meineipv6.de/");
InputStream is = seite.openStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String zeile = "";
String adresse = "";
while((zeile = br.readLine()) != null)
{
if(zeile.contains("ip_big"))
{
adresse = zeile;
System.out.println("adresse: " + adresse);
}
}
br.close();
is.close();
Auf der Seite erscheint zweimal lesbar meine ipV6-Adresse, die auch im
Quellcode zu lesen ist. Gewinne ich diese mit der o.g. Konstruktion,
kommt immer etwas wie "37.201.200.10" heraus. Das ist ipV4 und nicht
gewünscht und steht da auch nicht im Quellcode.
Der wird ja automatisch generiert. Lass Dir mal den kompletten Text der
Seite ausgeben, nicht nur diese Zeile, und Du wirst sehen, dass da
steht: "Du erreichst diese Seite über IPv4. Das ist deine IPv4-Adresse: ..."
Post by R. Schneider
Kann mir das jemand erklären ? Kann mir jemand verraten, wie ich meine
ipV6-Adresse hier aus lese ?
Indem Du IPv6 erzwingst, vermute ich.

https://docs.oracle.com/javase/8/docs/technotes/guides/net/ipv6_guide/#ipv6-networking

Viele Grüße,
Patrick
R. Schneider
2018-04-26 18:01:36 UTC
Permalink
Post by Patrick Roemer
Post by R. Schneider
URL seite = new URL("http://www.meineipv6.de/");
InputStream is = seite.openStream();
BufferedReader br = new BufferedReader(new
InputStreamReader(is));
String zeile = "";
String adresse = "";
while((zeile = br.readLine()) != null)
{
if(zeile.contains("ip_big"))
{
adresse = zeile; System.out.println("adresse: " +
adresse);
}
}
br.close();
is.close();
Auf der Seite erscheint zweimal lesbar meine ipV6-Adresse, die auch im
Quellcode zu lesen ist. Gewinne ich diese mit der o.g. Konstruktion,
kommt immer etwas wie "37.201.200.10" heraus. Das ist ipV4 und nicht
gewünscht und steht da auch nicht im Quellcode.
Der wird ja automatisch generiert. Lass Dir mal den kompletten Text der
Seite ausgeben, nicht nur diese Zeile, und Du wirst sehen, dass da
steht: "Du erreichst diese Seite über IPv4. Das ist deine IPv4-Adresse: ..."
Post by R. Schneider
Kann mir das jemand erklären ? Kann mir jemand verraten, wie ich meine
ipV6-Adresse hier aus lese ?
Indem Du IPv6 erzwingst, vermute ich.
https://docs.oracle.com/javase/8/docs/technotes/guides/net/ipv6_guide/
#ipv6-networking
Danke ! Das kannte ich nicht.
Ich setzte vor meinen Kode ein

System.setProperty("java.net.preferIPv6Addresses","true");

und kompillierte.

Es führte nach Deploy aber zu keiner Änderung. Was fehlt noch ?

mfg
R.S.
Patrick Roemer
2018-04-26 22:17:25 UTC
Permalink
Post by R. Schneider
System.setProperty("java.net.preferIPv6Addresses","true");
Solche Properties musst Du von aussen setzen.

<snip>
$> scala
scala> java.net.InetAddress.getLoopbackAddress
res0: java.net.InetAddress = localhost/127.0.0.1

scala> System.setProperty("java.net.preferIPv6Addresses","true")
res1: String = null

scala> java.net.InetAddress.getLoopbackAddress
res2: java.net.InetAddress = localhost/127.0.0.1
</snip>

...aber:

<snip>
$> scala -Djava.net.preferIPv6Addresses=true
scala> java.net.InetAddress.getLoopbackAddress
res0: java.net.InetAddress = localhost/0:0:0:0:0:0:0:1
</snip>

Viele Grüße,
Patrick
R. Schneider
2018-04-27 05:52:34 UTC
Permalink
Post by Patrick Roemer
Post by R. Schneider
System.setProperty("java.net.preferIPv6Addresses","true");
Solche Properties musst Du von aussen setzen.
<snip>
java.net.InetAddress = localhost/127.0.0.1
scala> System.setProperty("java.net.preferIPv6Addresses","true")
res1: String = null
java.net.InetAddress = localhost/127.0.0.1 </snip>
<snip>
$> scala -Djava.net.preferIPv6Addresses=true scala>
java.net.InetAddress.getLoopbackAddress res0: java.net.InetAddress =
localhost/0:0:0:0:0:0:0:1 </snip>
Ich weiß nicht, wo ich im Java-Servlet diesen Kode einfügen soll. Ich
vermute mal, dass es über Injection geht.

mfg
Ralf
Patrick Roemer
2018-04-27 16:00:36 UTC
Permalink
Post by R. Schneider
Post by Patrick Roemer
$> scala -Djava.net.preferIPv6Addresses=true
Ich weiß nicht, wo ich im Java-Servlet diesen Kode einfügen soll. Ich
vermute mal, dass es über Injection geht.
Das "-D..." ist kein "Code", sondern ein Kommandozeilenargument für den
VM-Launcher. In Deinem Fall wohl im Startup-Script für den Webserver.

Viele Grüße,
Patrick

Ralf S. Hellersen
2018-04-27 11:37:01 UTC
Permalink
Post by Patrick Roemer
Post by R. Schneider
System.setProperty("java.net.preferIPv6Addresses","true");
Solche Properties musst Du von aussen setzen.
<snip>
java.net.InetAddress = localhost/127.0.0.1
scala> System.setProperty("java.net.preferIPv6Addresses","true")
res1: String = null
java.net.InetAddress = localhost/127.0.0.1 </snip>
<snip>
$> scala -Djava.net.preferIPv6Addresses=true scala>
java.net.InetAddress.getLoopbackAddress res0: java.net.InetAddress =
localhost/0:0:0:0:0:0:0:1 </snip>
Ich mache das über die Ochsentour.

mfg
R.S.
R. Schneider
2018-04-26 19:26:45 UTC
Permalink
Post by Patrick Roemer
Post by R. Schneider
URL seite = new URL("http://www.meineipv6.de/");
InputStream is = seite.openStream();
BufferedReader br = new BufferedReader(new
InputStreamReader(is));
String zeile = "";
String adresse = "";
while((zeile = br.readLine()) != null)
{
if(zeile.contains("ip_big"))
{
adresse = zeile; System.out.println("adresse: " +
adresse);
}
}
br.close();
is.close();
Auf der Seite erscheint zweimal lesbar meine ipV6-Adresse, die auch im
Quellcode zu lesen ist. Gewinne ich diese mit der o.g. Konstruktion,
kommt immer etwas wie "37.201.200.10" heraus. Das ist ipV4 und nicht
gewünscht und steht da auch nicht im Quellcode.
Der wird ja automatisch generiert. Lass Dir mal den kompletten Text der
Seite ausgeben, nicht nur diese Zeile, und Du wirst sehen, dass da
steht: "Du erreichst diese Seite über IPv4. Das ist deine IPv4-Adresse: ..."
Meine IPV6-Adresse steht lesbar als ASCII im Quellkode. Wie kann da
anschließend aus 16 Buchstaben und Zahlen und vier Doppelpunkten eine 10-
stellige Zahl und vier Punkte daraus werden ? Hier muss doch eine Methode
einer Klasse ungefragt eine Umwandlung vornehmen. An welcher Stelle kann
ich hier mit der Suche anfangen ?

mfg
R.S.
Patrick Roemer
2018-04-26 22:19:14 UTC
Permalink
Post by R. Schneider
Post by Patrick Roemer
Post by R. Schneider
Auf der Seite erscheint zweimal lesbar meine ipV6-Adresse, die auch im
Quellcode zu lesen ist. Gewinne ich diese mit der o.g. Konstruktion,
kommt immer etwas wie "37.201.200.10" heraus. Das ist ipV4 und nicht
gewünscht und steht da auch nicht im Quellcode.
Der wird ja automatisch generiert. Lass Dir mal den kompletten Text der
Seite ausgeben, nicht nur diese Zeile, und Du wirst sehen, dass da
steht: "Du erreichst diese Seite über IPv4. Das ist deine IPv4-Adresse: ..."
Meine IPV6-Adresse steht lesbar als ASCII im Quellkode.
In welchem Quellcode denn? :)

Nimm mal das "if" aus Deinem Code raus und gib einfach alle
reinkommenden Zeilen aus. Das wird anderer "Quellcode" sein als in
Deinem Browser.

Viele Grüße,
Patrick
R. Schneider
2018-04-27 05:49:32 UTC
Permalink
Post by Patrick Roemer
Post by R. Schneider
Post by Patrick Roemer
Post by R. Schneider
Auf der Seite erscheint zweimal lesbar meine ipV6-Adresse, die auch
im Quellcode zu lesen ist. Gewinne ich diese mit der o.g.
Konstruktion, kommt immer etwas wie "37.201.200.10" heraus. Das ist
ipV4 und nicht gewünscht und steht da auch nicht im Quellcode.
Der wird ja automatisch generiert. Lass Dir mal den kompletten Text
der Seite ausgeben, nicht nur diese Zeile, und Du wirst sehen, dass da
steht: "Du erreichst diese Seite über IPv4. Das ist deine
..."
Meine IPV6-Adresse steht lesbar als ASCII im Quellkode.
In welchem Quellcode denn? :)
Nimm mal das "if" aus Deinem Code raus und gib einfach alle
reinkommenden Zeilen aus. Das wird anderer "Quellcode" sein als in
Deinem Browser.
Damit habe ich nicht gerechnet, dass mich der Browser bescheißt.

mfg
Ralf
Lesen Sie weiter auf narkive:
Loading...