SSH Tunnnel mit JSch und jsoup

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

ich möchte mit jsoup eine Webseite parsen und zwar über einen SSH Tunnel. Hierzu baue ich zu meinem Server wie folgt den Tunnel mit Hilfe von JSch auf:

Java:
        String host="IP ADRESSE VOM SERVER";
        String user="USER";
        String password="PW";
        int port=22;
       
        int tunnelLocalPort=80;
        String tunnelRemoteHost="127.0.0.1";
        int tunnelRemotePort=80;
      
        try {
            JSch jsch=new JSch();
            session = jsch.getSession(user, host, port);
            session.setPassword(password);
            localUserInfo lui=new localUserInfo();
            session.setUserInfo(lui);
            session.connect();
            session.setPortForwardingL(tunnelLocalPort,tunnelRemoteHost,tunnelRemotePort);
            System.out.println("verbunden");
        }catch(Exception e){
            e.printStackTrace();
        }

Nun möchte ich mit jsoup die Seite anfordern, allerdings kriege ich es nicht hin dass er den Tunnel nutzt weil ich nicht genau weiß wie ich das anstelle. Mein Teil zum parsen sieht wie folgt aus:

Java:
Connection con = Jsoup.connect(baseUrl).userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21").timeout(30000);

try{
    Connection.Response resp = con.execute();
    int statusCode = resp.statusCode();
    System.out.println("Statuscode: "+statusCode);
    if (resp.statusCode() == 200) {
        doc = con.get();
        System.out.println(doc.select("#ipv4").toString());
    }
}catch (Exception e) {
    e.printStackTrace();
}

Freu mich auf jeden Tipp! Beste Grüße und schönes Wochenende!
 
Die IP vom Remotehost ist ,so hoffe ich, doch in real eine gültige :)
kommen wir zum Tunnel:
wenn mit SSH ein Tunnel aufgebaut ist nutzt man als baseURL den localen Host.
 
Also die Portweiterleitung funktioniert, da ich den Port von
Java:
session.setPortForwardingL(localPort, remoteHost, remotePort);
zurück bekomme. Jetzt ist meine Frage eigentlich wie ich den http/https Seitenaufruf durch den Tunnel mache. Was genau meinst du mit baseUrl den localhost nutzen?
 
Ich lass mal Java aussen vor:
Wenn mit SSH ein Tunnel aufgebaut wird (auch forwarding genannt) dann wird der Port am Tunnelende aufgerufen.
wem man also am aktuellen rechner das eingegeben wird:
ssh -L 80:externer_rechner_Ip:80 user@externer_rechner
dann wird mit "http://localhost:80" eigendlich der externe rechner aufgerufen
der localehost port 80 wird durch das forwarding zum remoteport 80 und nutzt somit den aufgebauten Tunnel.
 

Neue Beiträge

Zurück