Door
arie
op 17-01-2006 19:04
gewijzigd op 17-01-2006 19:07
2.464 views
Hoi,
Ik heb een vraag over cURL. Ik heb een webshop met witgoedartikelen in beheer, dat gaat allemaal leuk, maar hier staan nu in middels z' on krappe 1000 artikelen op. En... opzich is dat ook heel leuk, maar zo af en toe is het toch wel zinvol om na te kijken of de prijzen nog een beetje kloppen, en of de artikelen nog wel leverbaar zijn. En dat is minder leuk werk, kan ik je vertellen.
Nu heb ik bij verschillende leveraciers het al voor elkaar gekregen dat ik met php automatisch de inkoop prijzen van hun site haal, de verkoop prijs automatisch bereken en deze automatisch vergelijk met de prijs van de webshop. Ideaal dus.
Alleen nu blijft er 1 leveraancier over. En dan wel die van de Bosch. Die zit achter de url www.tradeplace.nl
Nu wil ik hier op inloggen met behulp van cURL, maar dit lukt me nog niet erg. Als ik het goed heb, zou dit toch mogenlijk moeten zijn? Ik probeer het gewoon via de POST manier. Er is ook een CURLOPT_USERPWD functie in cURL, maar daar heb ik nu volgens mij niets aan, want het inloogen gebeurt via een normaal formuliertje, dat de info per POST verzend. Maar in dit formulirtje zit wel iets vreemd ASP achtig iets. En daar zou ik eigenlijk wel wat duidenlijkheid over willlen hebben.
Als je namenlijk op 'volgende' klikt, gebeurt er dit:
En nou heb ik al wat zitten googlen, dit word vrij veel toegepast. Ook soms bij een poll om te voorkomen dat een bezoeker meerdere keren stemt bijvoorbeeld.
Er zit trouwens nog een javascriptje aan vast dat vervolgens nog een paar input velden aanpast, en dat dan submit.
Als ik met curl probeer in te loggen, krijg in ierdegeval gewoon dezelfde pagina terug. Nog niet eens dat het wachtwoord fout is :s Ik gebruik wel de juiste link om naar toe te posten, ik geef netjes de juiste referer mee, cookies worden geaccepteerd en op geslagen...
ik heb het vage vermoeden dat het iets met dat doPostBack te maken heeft, maar ik weet niet hoe dat werkt. Wie kan mij dat wat toelichten?
Het makkelijkst is het om de opgestuurde gegevens gewooon aan te passen. Dat kan je inderdaad doen door het formulier te bestuderen, maar ook door te kijken wat je browser zo verstuurt waneer je probeert in te loggen.
Dit stuurde mijn browser toen ik probeerde in te loggen met 'gebruikersnaam'/'wachtwoord':
POST /tradeplace/PublicPages/home.aspx?showauthenticationscreen=true&returnurl=%2ftradeplace%2findex.aspx%3flocale%3dnl-nl&uid=1137523322410 HTTP/1.1
Host: www.tradeplace.com
User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; nl; rv:1.8) Gecko/20051111 Firefox/1.5
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: nl,en-us;q=0.7,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://www.tradeplace.com/tradeplace/PublicPages/home.aspx?showauthenticationscreen=true&returnurl=%2ftradeplace%2findex.aspx%3flocale%3dnl-nl&uid=1137523322410
Cookie: checknothing; ASP.NET_SessionId=wsdfrk550hs4ruifpxf0zhy2
Content-Type: application/x-www-form-urlencoded
Content-Length: 4174
cookiesEnabled=true&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=dDwxNDQ1MDAyODc4O3Q8O2w8aTwxPjs%2BO2w8dDw7bDxpPDE%2BOz47bDx0PDtsPGk8MT47PjtsPHQ8O2w8aTwzPjtpPDU%2BO2k8Nz47aTw5Pjs%2BO2w8dDxwPHA8bDxUZXh0Oz47bDxcPEJcPlw8Rk9OVCBmYWNlPSIiIHNpemU9Mlw%2BV2VsY29tZSB0byBUcmFkZXBsYWNlLiBcPEJSXD5UaGUgc21hcnQgZWxlY3Ryb25pYyBtYXJrZXRwbGFjZSBmb3IgdGhlIEV1cm9wZWFuIGhvdXNlaG9sZCBhcHBsaWFuY2UgYW5kIGNvbnN1bWVyIGVsZWN0cm9uaWNzIGluZHVzdHJ5Llw8L0ZPTlRcPiBcPEJSXD5UcmFkZXBsYWNlIHByb3ZpZGVzIHJldGFpbGVycyB3aXRoIGFuIGVmZmljaWVudCwgcXVhbGl0eSBjdXN0b21lcnNlcnZpY2Ugb2YgZWFzeSwgZmFzdCBhY2Nlc3MgdG8gbWFudWZhY3R1cmVy4oCZcyBtdWx0aXBsZSBicmFuZHMgYW5kIHByb2Nlc3Nlcy4gV2hlcmV2ZXIgeW91IGFyZSwgc3RhcnQgZG9pbmcgYnVzaW5lc3MgcmlnaHQgYXdheSwgb24tbGluZS4gSnVzdCBsb2cgaW4uXDwvQlw%2BOz4%2BOz47Oz47dDxwPHA8bDxUZXh0Oz47bDxcPEJcPkZvciBhbnkgc3VwcG9ydCBjb250YWN0IG91ciBDYWxsXDxCUlw%2BQ2VudGVyIFRlbC4rNDQtMjA3LTk4NDc1ODNcPC9CXD47Pj47Pjs7Pjt0PHA8bDxMb2dpbkNvbnRyb2wxLlBhc3N3b3JkQ2hhbmdlSW50ZXJ2YWw7TG9naW5Db250cm9sMS5QYXNzd29yZFNlY3VyaXR5UG9saWN5Oz47bDxpPDE4MDAwPjsuezYsNTB9Oz4%2BO2w8aTwwPjtpPDE%2BO2k8Mj47aTwzPjtpPDQ%2BOz47bDx0PDtsPGk8MD47PjtsPHQ8O2w8aTwwPjtpPDE%2BO2k8Mj47aTwzPjs%2BO2w8dDw7bDxpPDA%2BOz47bDx0PHA8cDxsPENvbHVtblNwYW47Q3NzQ2xhc3M7XyFTQjs%2BO2w8aTwzPjtsb2dpbk1lc3NhZ2VMaW5lO2k8Mj47Pj47Pjs7Pjs%2BPjt0PDtsPGk8MD47aTwxPjs%2BO2w8dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbkxhYmVsO2k8Mj47Pj47Pjs7Pjt0PHA8cDxsPENzc0NsYXNzO18hU0I7PjtsPGxvZ2luQ29udHJvbDtpPDI%2BOz4%2BOz47Oz47Pj47dDw7bDxpPDA%2BO2k8MT47aTwyPjs%2BO2w8dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbkxhYmVsO2k8Mj47Pj47Pjs7Pjt0PHA8cDxsPENzc0NsYXNzO18hU0I7PjtsPGxvZ2luQ29udHJvbDtpPDI%2BOz4%2BOz47Oz47dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbkJ1dHRvbjtpPDI%2BOz4%2BOz47Oz47Pj47dDw7bDxpPDA%2BOz47bDx0PHA8cDxsPENvbHVtblNwYW47Q3NzQ2xhc3M7XyFTQjs%2BO2w8aTwzPjtmb3Jnb3RQd2Q7aTwyPjs%2BPjs%2BOzs%2BOz4%2BOz4%2BOz4%2BO3Q8cDxwPGw8VmlzaWJsZTs%2BO2w8bzxmPjs%2BPjs%2BO2w8aTwwPjs%2BO2w8dDw7bDxpPDA%2BO2k8MT47aTwyPjs%2BO2w8dDw7bDxpPDA%2BOz47bDx0PHA8cDxsPENvbHVtblNwYW47Q3NzQ2xhc3M7XyFTQjs%2BO2w8aTwzPjtsb2dpbk1lc3NhZ2VMaW5lO2k8Mj47Pj47Pjs7Pjs%2BPjt0PDtsPGk8MD47PjtsPHQ8cDxwPGw8Q29sdW1uU3BhbjtDc3NDbGFzcztfIVNCOz47bDxpPDM%2BO2xvZ2luTWVzc2FnZUxpbmU7aTwyPjs%2BPjs%2BOzs%2BOz4%2BO3Q8O2w8aTwwPjtpPDE%2BO2k8Mj47PjtsPHQ8cDxwPGw8Q3NzQ2xhc3M7XyFTQjs%2BO2w8bG9naW5MYWJlbDtpPDI%2BOz4%2BOz47Oz47dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbkNvbnRyb2w7aTwyPjs%2BPjs%2BOzs%2BO3Q8cDxwPGw8Q3NzQ2xhc3M7XyFTQjs%2BO2w8bG9naW5idXR0b247aTwyPjs%2BPjs%2BOzs%2BOz4%2BOz4%2BOz4%2BO3Q8cDxwPGw8VmlzaWJsZTs%2BO2w8bzxmPjs%2BPjs%2BO2w8aTwwPjs%2BO2w8dDw7bDxpPDA%2BO2k8MT47PjtsPHQ8O2w8aTwwPjs%2BO2w8dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbk1lc3NhZ2VMaW5lO2k8Mj47Pj47Pjs7Pjs%2BPjt0PDtsPGk8MD47PjtsPHQ8cDxwPGw8Q3NzQ2xhc3M7XyFTQjs%2BO2w8Y2hhbmdlZFB3ZDtpPDI%2BOz4%2BOz47Oz47Pj47Pj47Pj47dDxwPHA8bDxWaXNpYmxlOz47bDxvPGY%2BOz4%2BOz47bDxpPDA%2BOz47bDx0PDtsPGk8MD47aTwxPjtpPDI%2BO2k8Mz47aTw0Pjs%2BO2w8dDw7bDxpPDA%2BOz47bDx0PHA8cDxsPENzc0NsYXNzO18hU0I7PjtsPGxvZ2luTGFiZWxMYXJnZTtpPDI%2BOz4%2BOz47Oz47Pj47dDw7bDxpPDA%2BO2k8MT47PjtsPHQ8cDxwPGw8Q3NzQ2xhc3M7XyFTQjs%2BO2w8bG9naW5MYWJlbDtpPDI%2BOz4%2BOz47Oz47dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbkNvbnRyb2w7aTwyPjs%2BPjs%2BOzs%2BOz4%2BO3Q8O2w8aTwwPjtpPDE%2BOz47bDx0PHA8cDxsPENzc0NsYXNzO18hU0I7PjtsPGxvZ2luTGFiZWw7aTwyPjs%2BPjs%2BOzs%2BO3Q8cDxwPGw8Q3NzQ2xhc3M7XyFTQjs%2BO2w8bG9naW5Db250cm9sO2k8Mj47Pj47Pjs7Pjs%2BPjt0PDtsPGk8MD47aTwxPjs%2BO2w8dDxwPHA8bDxDc3NDbGFzcztfIVNCOz47bDxsb2dpbkxhYmVsO2k8Mj47Pj47Pjs7Pjt0PHA8cDxsPENzc0NsYXNzO18hU0I7PjtsPGxvZ2luQ29udHJvbDtpPDI%2BOz4%2BOz47Oz47Pj47dDw7bDxpPDA%2BOz47bDx0PHA8cDxsPENzc0NsYXNzO18hU0I7PjtsPGNoYW5nZVB3ZDtpPDI%2BOz4%2BOz47Oz47Pj47Pj47Pj47dDxwPHA8bDxUZXh0O0Nzc0NsYXNzO18hU0I7VmlzaWJsZTs%2BO2w8IyMjIFJFU09VUkNFICdTYW1oYW1tZXIuU2VudHJhLldlYi5VSS5Db250cm9scy5Mb2dpbkNvbnRyb2wuTm9KYXZhU2NyaXB0LlRleHQnIE5PVCBGT1VORCAjIyM7bWVzc2FnZWxhYmVsO2k8Mj47bzxmPjs%2BPjtwPGw8c3R5bGU7PjtsPG1hcmdpbi10b3A6MTBweFw7bWFyZ2luLWJvdHRvbToxMHB4XDs7Pj4%2BOzs%2BOz4%2BO3Q8cDxwPGw8VGV4dDs%2BO2w8UmVnaXN0ZXIgbm93Oz4%2BOz47Oz47Pj47Pj47Pj47Pj47bDxMb2dpbkNvbnRyb2wxOl9jdGw1Oz4%2BQVa6cCoM1hB%2Fu12Ke1dbrWCpLUQ%3D&LoginControl1%3AtxtLoginUsername=gebruikersnaam&LoginControl1%3AtxtLoginPassword=wachtwoord&LoginControl1%3A_ctl5.x=0&LoginControl1%3A_ctl5.y=0
in principe zou je dat gewoon via fsockopen kunnen versturen, en alleen even de gebruikersnaam en wachtwoord en content-length veranderen.
Bij die http headers plugin, zie ik de onderste regel 'Content' niet. Hoe kan dat? Erg vaag, bij jou staatie er wel, dat is juist de regel die zo interesant is...
Edit:
Ow toch wel, ik snap em. Thanx, hier kan ik wat mee
Ik wilde ff melden dat het inmiddels gelukt is, nou jah, dat inloggen niet, dat krijg ik niet voor elkaar. Als ik dezelfde variabelen naar een test pagina van mezelf post, komt alles goed aan. Maar als ik ze naar tradeplace post, krijg ik gewoon exact dezelfde pagina terug. Die zit mee gewoon een beetje voor de gek te houden dus. Er zal vast iets wezen wat ik anders moet doen, maar wat dat is, weet ik niet :s
Nu doe ik inloggen met Firefox, dan krijg ik een cookie. Dat kan je goed zien met die Live http headers plugin ;) Die cookie zet ik in het cookie bestand dat cURL gebruikt, en dan ben ik binnen :D en kan ik overal heen fietsen ;)