Libcurl Schaltflächen

12/06/2009 23:06 Medix#1
Hi,

ich habe gerade angefangen mich mit libcurl zu beschäftigen und hab gleich eine grundlegende Frage und zwar wie kann ich mich auf einer Website bewegen?

mit
Code:
int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.0.1/st_pptp.htm");
    curl_easy_setopt(curl, CURLOPT_USERPWD, "routeradmin:routerpw");

    res = curl_easy_perform(curl);

    curl_easy_cleanup(curl);
  }
  return 0;
}
kann ich mich wunderbar ins routermenu bzw zum reconnect teil einloggen.
Der komplette html code wird dann ja in der konsole ausgegeben.

Nun die Frage und zwar wie kann ich mit libcurl zb eine Schaltfläche "anklicken" wie zb: disconnect


wenn ich im jetztigen beispiel (das routermenu) auf disconnect klicke werde ich von
Code:
http://192.168.0.1/st_pptp.htm
auf
Code:
http://192.168.0.1/st_pptp.cgi
umgeleitet und eben vom internet getrennt

auf den gleichen link werd ich auch wieder verwiesen wenn ich wieder connecte.

wie kann ich das ganze mit hilfe von libcurl machen? :>
12/07/2009 00:27 kennyo#2
Quote:
Originally Posted by Medix View Post
Hi,

ich habe gerade angefangen mich mit libcurl zu beschäftigen und hab gleich eine grundlegende Frage und zwar wie kann ich mich auf einer Website bewegen?

mit
Code:
int main(void)
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.0.1/st_pptp.htm");
    curl_easy_setopt(curl, CURLOPT_USERPWD, "routeradmin:routerpw");

    res = curl_easy_perform(curl);

    curl_easy_cleanup(curl);
  }
  return 0;
}
kann ich mich wunderbar ins routermenu bzw zum reconnect teil einloggen.
Der komplette html code wird dann ja in der konsole ausgegeben.

Nun die Frage und zwar wie kann ich mit libcurl zb eine Schaltfläche "anklicken" wie zb: disconnect


wenn ich im jetztigen beispiel (das routermenu) auf disconnect klicke werde ich von
Code:
http://192.168.0.1/st_pptp.htm
auf
Code:
http://192.168.0.1/st_pptp.cgi
umgeleitet und eben vom internet getrennt

auf den gleichen link werd ich auch wieder verwiesen wenn ich wieder connecte.

wie kann ich das ganze mit hilfe von libcurl machen? :>
Du findest mit Hilfe von z.B. [Only registered and activated users can see links. Click Here To Register...] (für Firefox) heraus, wie der Request vonstatten geht (POST oder GET) und baust das dann mit den entsprechenden Paramtern nach.

Für GET:

PHP Code:
curl_easy_setopt(curlCURLOPT_URL"http://192.168.0.1/st_pptp.cgi?parameter=befehl&zweiterparameter=befehl2"); 
Für POST:

PHP Code:
curl_easy_setopt(curlCURLOPT_URL"http://192.168.0.1/st_pptp.cgi");
curl_easy_setopt(curlCURLOPT_POSTFIELDS"parameter=befehl&zweiterparameter=befehl2"); 

Und verabschiede dich von dem Gedanken irgendetwas "anzuklicken". Du musst einfach nur die Requests nachbauen. LiveHTTPHeaders wird dir dabei sehr behilflich sein.
12/07/2009 02:15 Medix#3
Danke dir :) ja "anklicken" war etwas ungeschickt ausgedrückt^^
12/07/2009 13:36 Medix#4
Code:
http://192.168.0.1/st_pptp.htm

GET /st_pptp.htm HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.0.1/st_pptp.htm
Authorization: Basic QWRtaW46U1MyMDAw

HTTP/1.x 200 OK
Server: IP_SHARER WEB 1.0
Content-Type: text/html
&
Code:
http://192.168.0.1/st_pptp.cgi

POST /st_pptp.cgi HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://192.168.0.1/st_pptp.htm
Authorization: Basic QWRtaW46U1MyMDAw
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
disconnect=Disconnect
HTTP/1.x 200 OK
Server: IP_SHARER WEB 1.0
Content-Type: text/html
Das konnte ich mit LiveHTTPHeaders aufnehmen.

Nur leider kann ich hier keine Parameter herauslesen ^^

Oder hast du zufällig gerade einen Link zu einer kleinen Einführung in LiveHTTPHeaders? :>
12/07/2009 15:13 ^darkwing#5
Empfehle das Add-On "Tamper Data", für solche sachen.
12/07/2009 16:07 Medix#6
Quote:
Originally Posted by ^darkwing View Post
Empfehle das Add-On "Tamper Data", für solche sachen.
Danke hab das Addon auch gleich mal auspobiert.


Ergebnis einer Aufzeichnung von einem "Klick" auf den Disconnect Button im Router Menü
:

[Only registered and activated users can see links. Click Here To Register...]


Jedoch sehe ich nirgends parameter die ich übergeben könnte mit curl,

Die GET Requests haben auch alle keine Parameter ;/
12/07/2009 16:34 ^darkwing#7
;)
12/07/2009 17:00 Medix#8
Quote:
Originally Posted by ^darkwing View Post
;)
Danke :) so hab ichs auch zuerst pobiert war mir nicht sicher ob das die richtigen parameter sind


aber

ging irgendwie nicht


Code:
int main()
{
  CURL *curl;
  CURLcode res;

  curl = curl_easy_init();
  if(curl) {


    curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.0.1/st_pptp.cgi");


    curl_easy_setopt(curl, CURLOPT_USERPWD, "nick:pw");

curl_easy_setopt(curl, CURLOPT_URL, "http://192.168.0.1/st_pptp.cgi");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "disconnect=Disconnect");


    res = curl_easy_perform(curl);

 
    curl_easy_cleanup(curl);
  }
  return 0;
}
nick & pw sind natürlich durch die richtigen login daten ersetzt.

Irgendwas schein ich immernoch falsch zu machen :(


edit: Ah doch klappt wunderbar ;)
er connected nur automatisch gleich wieder neu ;) danke vielmals


ps: kann es sein ,dass die parameter nicht case-sentensive sind? :o
12/07/2009 18:15 ^darkwing#9
Soweit ich weiß, sind die Parameter case-sensitive :>
12/08/2009 14:02 kennyo#10
[quote=Medix;3601923]
Quote:
[Only registered and activated users can see links. Click Here To Register...]

GET /st_pptp.htm HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: [Only registered and activated users can see links. Click Here To Register...]
Authorization: Basic QWRtaW46U1MyMDAw

HTTP/1.x 200 OK
Server: IP_SHARER WEB 1.0
Content-Type: text/html
&
Quote:
[Only registered and activated users can see links. Click Here To Register...]

POST /st_pptp.cgi HTTP/1.1
Host: 192.168.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: [Only registered and activated users can see links. Click Here To Register...]
Authorization: Basic QWRtaW46U1MyMDAw
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
disconnect=Disconnect
HTTP/1.x 200 OK
Server: IP_SHARER WEB 1.0
Content-Type: text/html
[/code]

Das konnte ich mit LiveHTTPHeaders aufnehmen.

Nur leider kann ich hier keine Parameter herauslesen ^^

Oder hast du zufällig gerade einen Link zu einer kleinen Einführung in LiveHTTPHeaders? :>
Ich habs mal markiert. TamperData kenn ich jetzt nicht, aber LiveHTTPHeaders ist eigentlich sehr gut und einfach.