HTTP Zugriff und Aktionen auf einer Webseite ausführen

OasisCritter

Bekanntes Mitglied
Hallo,

ich bin noch sehr neu auf dem Gebiet. Ist es Möglich auf eine Webseite zuzugreifen, z.B. bestimmte Buttons zu klicken/sich auf einer Seite anmelden...etc. Das ist jetzt nur ein Beispiel. Ich bin bis jetzt nur soweit gekommen über die URL-Klasse eine Webseite auszulesen. Das bringt mir aber nicht viel, da ich immer noch nicht weiß wie ich konkrete Aktionen ausführen kann.

Java:
import java.net.*;
import java.io.*;



public class httphelper {
	
	public httphelper() {
	
	}

	URL url;
	URLConnection urlcon;
	InputStream in;
	BufferedReader br;
	
	public void go() {
		
	try {
		url= new URL("url");
		urlcon= url.openConnection();
		urlcon.setDoInput(true);
		
		in = urlcon.getInputStream();
		br = new BufferedReader(new InputStreamReader(in));
		
		String line = "";
		while ((line = br.readLine()) != null){
		System.out.println(line);
		}
		
		
	} catch (MalformedURLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	
	}
	
	public static void main(String[] args) {
		httphelper test= new httphelper();
		test.go();
	}
	
}

Hat einer Tipps? Danke 🙂
 
Danke, genau das was ich gesucht habe :applaus:

Beim Versuch mich anzumelden, bekomme ich folgendes angezeigt:

HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="robots" content="NONE,NOARCHIVE">
  <title>403 Forbidden</title>
  <style type="text/css">
    html * { padding:0; margin:0; }
    body * { padding:10px 20px; }
    body * * { padding:0; }
    body { font:small sans-serif; background:#eee; }
    body>div { border-bottom:1px solid #ddd; }
    h1 { font-weight:normal; margin-bottom:.4em; }
    h1 span { font-size:60%; color:#666; font-weight:normal; }
    #info { background:#f6f6f6; }
    #info ul { margin: 0.5em 4em; }
    #info p, #summary p { padding-top:10px; }
    #summary { background: #ffc; }
    #explanation { background:#eee; border-bottom: 0px none; }
  </style>
</head>
<body>
<div id="summary">
  <h1>Forbidden <span>(403)</span></h1>
  <p>CSRF verification failed. Request aborted.</p>

  <p>You are seeing this message because this HTTPS site requires a 'Referer
   header' to be sent by your Web browser, but none was sent. This header is
   required for security reasons, to ensure that your browser is not being
   hijacked by third parties.</p>

  <p>If you have configured your browser to disable 'Referer' headers, please
   re-enable them, at least for this site, or for HTTPS connections, or for
   'same-origin' requests.</p>

</div>

<div id="explanation">
  <p><small>More information is available with DEBUG=True.</small></p>
</div>

</body>
</html>

Wie kann ich denn diesen "referer header" mitsenden?

Gruss OC
 
vielleicht zur erklärung : wenn du eine "aktion auf einer website ausführst" wird nichts weiter gemacht als entsprechende daten an den server zu senden ... und das musst du einfach nur nachbauen ... dafür reichen sogar Socket und Input/OutputStream ... da braucht man weder URLConnection noch diese ziemlich schrottigen apache-libs
 
Danke für die schnelle Antwort aber ich soll jemandem eine URL unterschieben? :autsch:
Es kann doch nicht so kompliziert sein, ich mein wie Verarbeitet denn mein eigener Browser diese Anmeldung? Alles was ich will ist meine LoginDaten in die Felder eintragen und auf den Login-Button zu drücken. Theoretisch könnte man doch auch den html-code in einer TextPane rendern und dann bleibt halt noch die Frage zu klären wie ich meine LoginDaten in die Felder setzte und auf Login drücke. Oder versteh ich da etwas grundsätzlich falsch?

Gruss OC
 
Danke für die schnelle Antwort aber ich soll jemandem eine URL unterschieben? :autsch:

Nein... die Seite erkennt, dass das Absenden nicht vom eigenen Server kommt und stuft dich als Hacker ein ;-= darum kommst du nicht rein ;-)

Keine ahnung wie das genau geht, irgendwie mit einer weiterleitung oder so.. damit verhindern sie, dass jemand ein programm schreibt das ding zu steuern...

Was du machen kannst, ist selenium verwenden. im grunde steuert da ein programm den browser. Nimmt man normalwerweise für automtisierte web gui tests... ist aber auch gut um bots zu schreiben...
 
Dein Problem ist die Verschlüsselung via HTTPS - versuche Dich erstmal an normalen HTTP (das ist schon schwer genug).

Mein Tip: sowas würde ich nicht in Java machen sondern mit AutoIti, ist eine BASIC-like Scriptsprache zur Fernsteuerung von Windows. Da startest Du im Script den MS Internet Explorer und steuerst den dann über das Script. Da gibts im Toolset fertige Klassen und Funktionen um das relativ stressfrei zu verwirklichen. Vorteil ist, dass man auf das ganze OLE-Zeug zurückgreifen kann.

Wenn Du es unter Linux brauchst: Starte eine XP-VM unter VirtualBox - ich hab dieses "Hintendurchdiebrustinsaugeundindenfussgeschossen" hier tatsächlich im Einsatz.

Bernd
 
Also, der einzige Fehler den ich hier herauslese ...

Code:
...You are seeing this message because this HTTPS site requires a 'Referer
   header' to be sent by your Web browser, but none was sent....

... besteht darin, dass der Server einen Referer-Header erwartet, den Du aber nicht mitsendest.

Füge doch einfach mal hinter der Zeile 22 in Deinem Code Folgendes ein:

Java:
        urlcon.setRequestProperty("REFERER", "http://www.quellurl.de/irgendetwas.html");

Ersetze dabei "http://www.quellurl.de/irgendetwas.html" durch die URL, von der die Zielseite im Normalfall aufgerufen wird.

Durch diese Anweisung wird der REFERER in den Request eingefügt, der dann auf dem Server ausgewertet werden kann.
Mit PHP z.B. kann man sich diesen mit der folgenden Anweisung ausgeben lassen.

PHP:
   echo $_SERVER['HTTP_REFERER'];


Ich hoffe, dass hilft Dir weiter.

VG ROlf
 

Zurück
Oben