Hallo,
ich habe eine Methode geschrieben, die mir den Source einer beliebigen Homepage zurückgeben soll. Diese Homepage hat mehrere unter Seiten, die ich mit einer Schleife auch auslese.
Nach ein paar Seiten bekomme ich nicht mehr den richtigen Quelltext der Seite, sondern den Quelltext einer Seite auf dem festgestellt wird, dass ich ein Bot bin und eine Captcha abfrage.
Es ist mir klar, dass die betreiber dieser Seite das dann nicht wollen. Mir gehts es aber rein ums Prinzip, da ich ja mit dem Browser keine solche Bot-Erkennung bekomme.
Wie kann ich also meine Methode menschlicher machen? Einen Timeout habe ich schon probiert, könnte sein, dass der nicht groß genug ist? In der Rückgabe, der Seite steht allerdings auch, dass es sein könnte, dass mein Browser keine Cookies unterstützt.
ich habe eine Methode geschrieben, die mir den Source einer beliebigen Homepage zurückgeben soll. Diese Homepage hat mehrere unter Seiten, die ich mit einer Schleife auch auslese.
Nach ein paar Seiten bekomme ich nicht mehr den richtigen Quelltext der Seite, sondern den Quelltext einer Seite auf dem festgestellt wird, dass ich ein Bot bin und eine Captcha abfrage.
Es ist mir klar, dass die betreiber dieser Seite das dann nicht wollen. Mir gehts es aber rein ums Prinzip, da ich ja mit dem Browser keine solche Bot-Erkennung bekomme.
Wie kann ich also meine Methode menschlicher machen? Einen Timeout habe ich schon probiert, könnte sein, dass der nicht groß genug ist? In der Rückgabe, der Seite steht allerdings auch, dass es sein könnte, dass mein Browser keine Cookies unterstützt.
Java:
static LinkedList<String> getSource(String uri) throws MalformedURLException, IOException
{
String line = null;
String userAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0";
LinkedList<String> Source = new LinkedList<String>();
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.addRequestProperty("User-Agent", userAgent);
connection.setConnectTimeout(1000);
HttpURLConnection.setFollowRedirects(false);
connection.connect();
BufferedReader rd = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
while(((line = rd.readLine()) != null))
{
Source.add(line);
}
connection.disconnect();
return Source;
}