Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP+Curl] Hoe achterhaal je wat je met Curl moet meegeven?

Pagina: 1
Acties:
  • 305 views sinds 30-01-2008
  • Reageer

  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Dag allemaal!

Ik ben even aan het stoeien geweest met Curl, aangezien ik automatisch wil kunnen inloggen op een site. Ik heb uiteraard de voorbeelden van de site bekeken, waar het log-in script voor Ebay staat uitgelegd. Ik kom er alleen niet helemaal uit.

Hoe weet je welke parameters je met Curl moet doorsturen/opvangen? Is er een methode wat een normale inlog simuleert zodat je weet wat je script zo moeten nadoen? Bijvoorbeeld cookies, sessions en dat soort dingen?

Misschien iets in de trant van een macro-recorder zoals Excel dat heeft (en ongetwijfeld ook de andere office-versies)?

  • Sneezydevil
  • Registratie: Januari 2002
  • Laatst online: 29-09 10:22
Er is een plugin voor firefox die je hiervoor zou kunnen gebruiken.

Zoek maar eens op http live headers.

  • AaroN
  • Registratie: Februari 2001
  • Laatst online: 16-08-2023

AaroN

JayGTeam (213177)

nou, wat jij wilt is dus een login simuleren dmv Curl. Dan zul je een formulier moeten submitten dmv een get of post method. Je zult het formulier moeten uitplozen om de waarden die je dient te submitten te vinden. Zodra je die weet, kun je eventueel inloggen.

Het is misschien slimmer om gewoon de api's van ebay te gebruiken:
http://developer.ebay.com/developercenter/php/

Tevens kun je hier nog even kijken om het op de manier te doen die je wilde, maar die pagina is al heel oud:
http://curl.haxx.se/libcurl/php/examples/ebay_login.html

Succes

JayGTeam (213177)


Verwijderd

Netwerkverkeer sniffen met Wireshark, of als het voor HTTPS is met een browser plugin.

  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Het gaat niet zozeer om ebay, dat gebruikte ik slechts voor studie. hoewel ik dat ook nog niet aan de praat heb kunnen krijgen. Het gaat er meer om dat ik wil leren hoe ik dat voor een willekeurige site kan bepalen.

Het zal inderdaad HTTPS zijn, dus ik ga maar eens op zoek naar een browser plug-in. Ik heb geen firefox, wellicht is er iets voor internet explorer?

Zo niet, dan toch maar aan de firefox..

  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
-------
onzin, excuses. zie mijn bericht hieronder.
------

[ Voor 130% gewijzigd door Tieske[82] op 20-01-2008 22:32 ]


  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Ge moet het form niet posten! Ge moet het inhoud meegeven als een POST.

Going for adventure, lots of sun and a convertible! | GMT-8


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20-11 22:06

BCC

Eeh ja, je moet de data posten van het formulier, niet het forumulier zelf. Maar heb je man curl al bekeken?

[ Voor 18% gewijzigd door BCC op 20-01-2008 22:27 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Oh shit dat was niet wat ik wilde posten. Was het al aan het typen toen ik nog het script van ebay doornam. Uiteraard ben ik verder gekomen dan dan...

Wat ik wilde posten was dat het volgende niet werkte:


PHP: filename
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php

$LOGINURL = "http://gathering.tweakers.net/forum";
$POSTFIELDS = 'action=login&data[login]=1&data[password]=*MD5 HASH wachtwoord*"&data[passwordencryption]md5join&data[reactid]=*reactid*&data[username]=tieske[82]';

$reffer = "http://gathering.tweakers.net/forum";
$agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
$cookie_file_path = "D:\Program Files\Apache Software Foundation\Apache2.2htdocs\cookie.txt"; 

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,$LOGINURL);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS,$POSTFIELDS); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_REFERER, $reffer);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);

$result = curl_exec ($ch);
curl_close ($ch); 
print $result;  

?>


Vergeet de vorige, dit is wat ik eigenlijk wilde vragen..

[ Voor 3% gewijzigd door Creepy op 21-01-2008 10:20 . Reden: reactId uit de parameters verwijderd t.b.v. veiligheid ]


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20-11 22:06

BCC

Ik neem aan dat dit trouwens niet de echte data is die wil senden? Anders kan nu iedereen inloggen met je username en md5(password).

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Thanks. Maar enig idee wat hier misgaat?

Ik heb zo goed als ik kon de manual doorgelezen, maar ik moet zeggen dat niet alles even duidelijk is voor me...

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Ik geloof niet (legacy kennis ;) ) dat de mods er blij mee zijn dat je dit soort info pontificaal in het forum neerplant ;)

Voor zover ik weet is de policy dat het leuk is als het je lukt om de login te bypassen en bijv. het uploaden van een nieuw usericon te automatiseren, maar dat het niet de bedoeling is dat er vanuit het forum hier mee geholpen wordt :P

Stop uploading passwords to Github!


Verwijderd

Ja maar dit is denk ik alleen maar als voorbeeld laten zien.

  • Sh4wn
  • Registratie: December 2006
  • Laatst online: 12-11-2017

Sh4wn

Bio-informatica

Je moet in de bron kijken van de website waar je het formulier wil 'invullen'. Je zoekt in de bron het formulier op, en je kijkt naar de action="*hier de action*" attribuut. Die URL die er in staat, die moet je hebben voor de request.

Daarna kijk je iets verder in het formulier. Welke velden heeft het allemaal?
Bijv bij een login formulier:
- Er is een <input type="text" name="username" />
Dan voeg jij aan je POST velden 'username=*jouwusername*' toe (zonder de ')

- Er is een <input type="password" name="password" />
Nu voeg je nog een veld toe aan je POST velden. in totaal is je POST string nu:
username=*jouw username*&password=*niet md5 password*

- Er is vast ook nog een knop, dus die voegen we ook maar toe
<input type="submit" name="login" value="Inloggen!" />
username=*jouw username*&password=*niet md5 password*&login=]Inloggen!

Nu is je post string compleet.

Die geef je dan ook mee met cURL, en het zou moeten werken.

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Sh4wn schreef op maandag 21 januari 2008 @ 08:47:
Je moet in de bron kijken van de website waar je het formulier wil 'invullen'. Je zoekt in de bron het formulier op, en je kijkt naar de action="*hier de action*" attribuut. Die URL die er in staat, die moet je hebben voor de request.

Daarna kijk je iets verder in het formulier. Welke velden heeft het allemaal?
Bijv bij een login formulier:
- Er is een <input type="text" name="username" />
Dan voeg jij aan je POST velden 'username=*jouwusername*' toe (zonder de ')

- Er is een <input type="password" name="password" />
Nu voeg je nog een veld toe aan je POST velden. in totaal is je POST string nu:
username=*jouw username*&password=*niet md5 password*

- Er is vast ook nog een knop, dus die voegen we ook maar toe
<input type="submit" name="login" value="Inloggen!" />
username=*jouw username*&password=*niet md5 password*&login=]Inloggen!

Nu is je post string compleet.

Die geef je dan ook mee met cURL, en het zou moeten werken.
En wat nou als er eerst een cookie geplaatst wordt met een variabele? of een sessie gestart wordt? of beide? ;)

Stop uploading passwords to Github!


  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Okay het gaat de goede kant op. Na het versturen krijg ik nu "Je bent ingelogd". De pagina stuurt je dan automatisch door naar de pagina waar je vandaan kwam, waar ik vervolgens NIET meer ingelogd ben.. Ergens gaat er dus iets mis, en dat zou dus in die cookies of sessies moeten liggen. De inhoud van de cookie is:

code:
1
2
3
.tweakers.net   TRUE    /   FALSE   1232442643  TnetID  * een of andere hash *
.tweakers.net   TRUE    /   FALSE   1232442643  LastVisit   1200906643
.tweakers.net   TRUE    /   FALSE   1232442643  SessionTime 1200906643


Hoe zorg ik ervoor dat de ik ingelogd blijf, of moet ik vanaf dit punt elke pagina gaan 'faken' en variabelen in cookies gaan meesturen naar bijvoorbeeld tweakers.net? Of zal ik iets met sessies moeten gaan doen?

PS ik ben niet van plan iets met tweakers.net te doen, maar als voorbeeld is dit wel een makkelijke en een goede eigenlijk. Als hier een probleem mee is dan hoor ik dat graag en zal ik op zoek gaan naar een ander voorbeeld.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:59

Janoz

Moderator Devschuur®

!litemod

Sessies bestaan niet clientside. Clientside heb je alleen maar cookies en meegestuurde get danwel post variabelen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20-11 22:06

BCC

Janoz schreef op maandag 21 januari 2008 @ 10:36:
Sessies bestaan niet clientside. Clientside heb je alleen maar cookies en meegestuurde get danwel post variabelen.
Dat is niet helemaal waar.
http://ryandaigle.com/art...ils-cookie-based-sessions
Voor tweakers.net geldt dat natuurlijk wel.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Dus met alleen cookies zou het moeten kunnen? Of is het sowieso onmogelijk om een sessie te faken? Wat ik eigenlijk wil weten: hoe zorg ik er voor dat ik blijf ingelogd?

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Tieske[82] schreef op maandag 21 januari 2008 @ 11:40:
Dus met alleen cookies zou het moeten kunnen? Of is het sowieso onmogelijk om een sessie te faken? Wat ik eigenlijk wil weten: hoe zorg ik er voor dat ik blijf ingelogd?
Door elke keer die HTTP cookies weer mee te geven (CURLOPT_COOKIEJAR) je bent dus eigenlijk een soort van proxy aan't schrijven :)

Stop uploading passwords to Github!


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22:59

Janoz

Moderator Devschuur®

!litemod

BCC schreef op maandag 21 januari 2008 @ 11:27:
[...]

Dat is niet helemaal waar.
http://ryandaigle.com/art...ils-cookie-based-sessions
Voor tweakers.net geldt dat natuurlijk wel.
Welk deel van "cookie based" is niet duidelijk? ;).. Wat je aan de serverkant met de inhoud van cookies doet en hoe je dat noemt verandert niks aan wat het uiteindelijk aan de client kant is. Daar zijn en blijven het gewoon cookies. Een labeltje met daarbij een brokje data van een maximale grootte welke elke keer meegestuurd wordt zodra er een request naar bijbehorend domein gedaan wordt todat de houdbaarheid verlopen is.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Tieske[82]
  • Registratie: Juli 2001
  • Laatst online: 09-02 22:11
Zoals in de code van een van mijn eerdere posts te lezen is werk ik al met de COOKIEJAR setting. Maar toch ben ik na de redirect na de "Je bent ingelogd" pagina weer uitgelogd. Aangezien de cookies mbv COOKIEJAR wel worden meegegeven, snap ik dus niet waar het dan aan ligt...

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20-11 22:06

BCC

Janoz schreef op maandag 21 januari 2008 @ 11:57:
[...]

Welk deel van "cookie based" is niet duidelijk? ;)..
offtopic:
Tja, dat hangt dus af van je definitie van Sessie. Ik zie dat gewoon als data over de sessie van de client en of die nou server of client side staat :).

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Tieske[82] schreef op maandag 21 januari 2008 @ 12:30:
Zoals in de code van een van mijn eerdere posts te lezen is werk ik al met de COOKIEJAR setting. Maar toch ben ik na de redirect na de "Je bent ingelogd" pagina weer uitgelogd. Aangezien de cookies mbv COOKIEJAR wel worden meegegeven, snap ik dus niet waar het dan aan ligt...
Bekijk gewoon elke soort request die je na wil doen. Als je dat gewoon 1x grondig doet, had je kunnen zien dat de request na de login actie een ander reactid heeft. :)
BCC schreef op maandag 21 januari 2008 @ 12:32:
offtopic:
Tja, dat hangt dus af van je definitie van Sessie. Ik zie dat gewoon als data over de sessie van de client en of die nou server of client side staat :).
offtopic:
Goh, in die link wordt besproken dat zo veel mogelijk in een cookie geplempt wordt, zodat de server minder state hoeft bij te houden. Lekker spannend, het blijft een cookie. (en een van de minder goede redenen om de keuze tussen een stateless of statefull server te maken).

[ Voor 74% gewijzigd door Voutloos op 21-01-2008 12:38 ]

{signature}


  • Sh4wn
  • Registratie: December 2006
  • Laatst online: 12-11-2017

Sh4wn

Bio-informatica

SchizoDuckie schreef op maandag 21 januari 2008 @ 09:40:
[...]

En wat nou als er eerst een cookie geplaatst wordt met een variabele? of een sessie gestart wordt? of beide? ;)
Dan parse je de cookies die gezet worden, en geef je ze met de volgende request weer mee ;)

Ik heb vroeger ook veel scriptjes gemaakt die eerst inlogde op de site, hier gebruikte ik dan mijn eigen class voor:
http://www.wmcity.nl/scripts.php?actie=bekijk&id=1531
(Inclusief voorbeeld hoe je inlogt op de gunbound site :') )

[ Voor 26% gewijzigd door Sh4wn op 21-01-2008 13:32 ]

Pagina: 1