# Internetseiten-Aufruf simulieren



## eLogic (16. Dez 2011)

Hey Forum =)

Ich möchte ein kleines Programm realisieren, dass Seitenaufrufe simuliert.
Es soll nach jedem Aufruf den Proxy Server wechseln (Diese sind Zeilenweise in einer TXT-Datei gespeichert).

Ich habe rausgefunden das man den Proxy über * ändert:


```
System.setProperty("proxyPort","8080");
System.setProperty("proxyHost","85.92.159.84"); //z.B
```

Wie realisiere ich jedoch den Seitenaufruf?


Vielen Dank für eure Hilfe

Euer eLogix


----------



## Evil-Devil (16. Dez 2011)

Du könntest cURL für den Seitenaufruf nutzen. Neben dem Cookie-Verhalten bietet das auch noch interessante andere Möglichkeiten.

//edit: Kurz nachgeschaut. Den Proxy kann man bequem als Parameter übergeben


----------



## eLogic (16. Dez 2011)

Danke für deine schnelle Antwort =)

Hab ein bisschen drüber nach gegoogelt, lieg ich damit richtig?


```
HttpURLConnection con = (HttpURLConnection) new URL("https://www.example.com").openConnection();
con.setRequestMethod("POST");
con.getOutputStream().write("LOGIN".getBytes("UTF-8"));
con.getInputStream();
```


----------



## irgendjemand (16. Dez 2011)

also bevor ich da mit cURL auf ne einfache HTTP-anfrage losschieße würde ich eher zu apache http-commons greifen

wobei das ganze auch mit SE-mitteln geht ...

problem : die cookie-verwaltung musst du selbst übernehmen *ist n bissl tricky mit RegEx und so ...*

ansonsten : das ganze hört sich nach etwas an was mit z.b. im browsergame-bereich ne "ip-bombe" oder genrell einen ip-spoof nennen würde ...
ziel ist dabei möglichst viele gleiche anfragen von verschiedenen adressen aus zu stellen *z.b. : spenden-links bei pennergame* ...

ist mit wenig aufwand geschrieben *mein kürzester code dazu waren mal weniger als 100zeilen OHNE externe lib ...*
ist also mit java durchaus machbar ...


----------



## Evil-Devil (16. Dez 2011)

Wenn wir nur Boardmittel nehmen wollen, dann würde ich bei cURL und der Bash bleiben. kurzes Bashskript das die Proxy Datei liest und entsprechende cURL Aufrufe abfeuert. Dann brauch es auch keine 3rd Partie Libs ala Commons.


----------



## irgendjemand (16. Dez 2011)

ich glaube mit "boardmitteln" war hier nicht die austattung eines *NIX - OS gemeint sondern JavaSE ...
klar gibt es auch für Win n cURL impl ... aber muss man wirklich gleich mit so "system-nahen" libs um sich schlagen wenns auch mit einfachen net-i/o klassen außer SE geht ?
persönlich finde ich es umständlich eine system-lib ala cURL *und abhängigkeiten* zu verwenden anstatt ein simples JAR in mein projekt *bzw system weiten CP* zu packen und dann mit reinem java zu arbeiten ...


----------



## eLogic (16. Dez 2011)

@ irgendjemand Hast du vllt noch den Code?

@ Evil-Devil Wie sehen diese cURL Aufrufe denn aus? Hast du vllt Code?


----------



## Evil-Devil (16. Dez 2011)

Ausgehend davon das es auf einem Terminal bzw. der WIndowskonsole gemacht wird:


```
curl -x proxyhost:port www.java-forum.org
```

Die Möglichkeiten sind sehr umfangreich. Vielleicht lohnt sich ein Blick in die entsprechende Doku.
curl(1): transfer URL - Linux man page

//edit: gäbe sogar nen Java Binding
libcurl - the Java Binding


Aber ganz gleich welchen Weg du wählst,du wirst die HTTP Header fälschen müssen. Denn vor allem bei solchen Schneeball Systemen kommt es sehr häufig vor das der Browser Agent abgefragt wird.


----------



## eLogic (16. Dez 2011)

Danke =)

Habe curl jetzt auf meinem Rechner. Nachdem ich dann die richtige Version gefunden hab :lol:

Habe eine html seite zum testen geschrieben die einfach nur die IP adresse ausgiebt und einen Klickzähler enthält.

Nachdem ich Curl ausgeführt habe bekomme ich den html code der seite in der dann richtigerweise auf die IP des Proxys steht.


```
C:\>curl -x 85.92.159.84:8080 http://mxor.mx.funpic.de/counter.htm
85.92.159.84<a href="http://www.besucherzaehler-counter.de" target="_blank">
<img border="0" src="http://www.besucherzaehler-counter.de/count.php?counter=209
769&style=2"/>
</a><script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-16106315-4']);
  _gaq.push(['_setDomainName', '.funpic.de']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
  })();

</script>
```

Allerding werden keine Klicks im Zähler registriert. Weiß jemand wieso?

Site: mxor.mx.funpic.de/counter.htm
source:

```
<?php echo $_SERVER["REMOTE_ADDR"]; ?>
<a href="http://www.besucherzaehler-counter.de" target="_blank">
<img border="0" src="http://www.besucherzaehler-counter.de/count.php?counter=209769&style=2"/>
</a>
```


----------



## Evil-Devil (16. Dez 2011)

Kann es sein, dass der Proxy nicht von überall erreichbar ist? Weil wenn ich den Curl abschicke krieg ich 

```
curl: (56) Failure when receiving data from the peer
```

Ohne den Proxy erreiche ich deine Seite.

@Zähler: Vielleicht ist die IP vom Proxy schon hinterlegt. Der Counter merkt sich ja die IPs.


----------



## eLogic (16. Dez 2011)

Hmm.. also hab mir jetzt Batch dateien mit dem Inhalt von einer Proxylist generieren lassen die nacheinander alle einmal ausgeführt wurden, davon waren Server dabei die gingen, und Server bei denen ich ein Fehler bekam.

Der Zähler ist allerdings immernoch um keinen einzigen Zugriff gestiegen? =(

Woran kann das liegen hat jemand eine Idee?


----------



## irgendjemand (16. Dez 2011)

ja .. eine sehr simple ... und wenn du das jetzt liest für dich eine vielleicht einleuchtende ...

wenn du die seite im browser aufrufst ... dann erkennt dieser das dort ein bild eingebunden ist ...
also läd er das bild und erhöt damit den counter ...
dabei ruft der browser sowohl deine seite als auch den counter auf ...

wenn du jetzt nur deine seite abfragst ... wie soll sich dann der counter erhöhen wenn dieser nicht abgerufen wird ?
der server macht das nicht ... das muss der client machen ...

fakto : du musst nicht deine eigene seite aufrufen sondern das counter-image ... natürlich mit allen übergabe-parametern die nach dem "?" folgen ...

*wobei ichs irgendwie etwas ... sag ich mal "sinnlos" oder "albern" finde seinen EIGENEN user-counter zu pushen ...


----------



## eLogic (16. Dez 2011)

Ja stimmt deshalb ist der Thread hier auch mit "Internetseiten-Aufruf simulieren" betitelt.

Ich habe ja nicht vor die Seite abzufragen sondern einen Aufruf durch einen Browser zu simulieren.
Also verstehe ich das richtig, cURL ist gar nicht dafür da? -.-


Nein es geht nicht um den Counter  Haha... das wäre allerdings wirklich bisschen Sinnlos :lol:


----------



## Evil-Devil (16. Dez 2011)

Du sagtest nur das du eine Seite aufrufen willst. Was aber genau gemacht werden soll ist im Dunkeln. Wer zb. Sites grabben will tut dies meist mit cURL und ähnlichen Tools. Nur das AUfrufe auf Unterelemente erst ermittelt werden müssen.


----------



## eLogic (16. Dez 2011)

Na toll -.-

Und wie mach ich das denn jetzt?

Also bis jetzt ist mein Lösungsweg:

- Liste mit proxys einlesen

Loop:

- An Proxyserver Anfrage schicken, wenn erreichbar:
- Firefox Datei prefs.js verändern und da Proxyreinschreiben
- Firefox neustarten
- Link schicken

Klappt eigentlich auch, allterdings möchte ich das nicht die ganze zeit auf dem desktop haben sondern
es soll im Hintergrund passieren.

Ich müsste nur die stelle mit dem Firefox durch etwas Programminternet ersetzen. site da voll auf dem Blanken


----------



## irgendjemand (17. Dez 2011)

wie bereits mal erwähnt : es kommt darauf an WAS genau du mit dem seiten-aufruf bezecken willst ...
wenn innerhalb der seite die du aufrufst code eingebettet ist *z.b. PHP oder JSP* dann wird dieser code vom server ausgeführt wenn du die seite aufrufst ..
wenn jetzt allerdings in dieser seite irgendwas client-seitiges eingebettet ist *z.b. JavaScript oder eingebettete elemente wie bilder oder andere auto-code* dann musst du diesen auch ausführen bzw die unter-elemente aufrufen ...

was wir also wissen müssen um dir zu helfen : was genau willst du überhaupt machen ?

dann wäre das etwas einfacher ...

die info an sich ist leider etwas zu ungenau um dein problem genau zu ergründen ...
da du ja das beispiel mit dem counter gebracht hast haben wir uns darauf konzentriert ...


----------



## Crisps0 (9. Jan 2013)

elogic kleine frage kann ich dein programm haben wenn es fertig ist ?


----------

