Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Curl logowanie
Zyggmunt
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


Witam. Próbuję zalogować się do serwisu www.reporo.com korzystając z curl, jednak męczę się z tym od kilku dni i nie mam pojęcia czemu nie działa. Po prostu nie wysyła danych do formularza logowania. Po zalogowaniu użyłem header(...); w celu przekierowania na odpowiednią stronę dostępną po zalogowaniu. Bardzo proszę o sprawdzenie co może być źle w tym kodzie. Zaznaczam, że strona jest na protokole HTTPS.

Oto kod:
  1. <?php
  2. function createPostString($aPostFields) {
  3. foreach ($aPostFields as $key => $value) {
  4. $aPostFields[$key] = urlencode($key . '=' . $value);
  5. }
  6.  
  7. return urlencode(implode('&', $aPostFields));
  8. }
  9.  
  10. $postFields['username'] = $_POST['login'];
  11. $postFields['password'] = $_POST['password'];
  12. $postFields['submit'] = ' ';
  13.  
  14. $curl = curl_init();
  15. curl_setopt($curl, CURLOPT_URL, 'https://www.reporo.com/login.php');
  16. curl_setopt($curl, CURLOPT_REFERER, 'https://www.reporo.com/login.php');
  17. curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
  18. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
  19. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  20. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  21. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  22. curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  23. curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  24. curl_setopt($curl, CURLOPT_POST, TRUE);
  25.  
  26. curl_setopt($curl, CURLOPT_POSTFIELDS, createPostString($postFields));
  27.  
  28. curl_exec($curl);
  29. curl_close($curl)
  30.  
  31. ?>


Co może być tego przyczyną ?

P.s. Plik cookies.txt zawiera:
www.reporo.com FALSE / FALSE 0 PHPSESSID 97..idSesji123..

Pozdrawiam.

Ten post edytował Zyggmunt 12.09.2012, 23:39:09
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
darko
post
Post #2





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Dodaj jeszcze:
  1. curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);
  2. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
Go to the top of the page
+Quote Post
Zyggmunt
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


Edytowałem kod w pierwszym poście o poradę darko. Niestety logowanie nadal nie działa, tj. dzieje się to co wcześniej ;/

Pozdrawiam.
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Sprawdź jeszcze raz poprawność urla, zwłaszcza parametrów oraz ścieżki do ciastek.
Go to the top of the page
+Quote Post
Zyggmunt
post
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


Faktycznie link do ciastek był zły, ponieważ skrypt odpalałem z Wampa, a więc wychodziła taka ścieżka: C:\wamp\www\autofill/cookies.txt . Jednak wgrałem skrypt na serwer i ścieżka już jest z pewnością prawidłowa, mimo to nadal nie działa ;/ Próbowałem też skorzystać z adresu: http://www...pl/katalog/cookies.txt i to również nie pomogło ;/ Nie wiem czy z ta stroną jest coś nie tak, czy ja robię coś źle ;/

Ten post edytował Zyggmunt 12.09.2012, 18:25:26
Go to the top of the page
+Quote Post
darko
post
Post #6





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Formularz nie posiada tokena, i wydaje mi się, że problem tkwi w Twojej funkcji, powinieneś chyba na samym końcu zwrócić urlencode, wtedy zakoduje Ci znak '=' :

  1. function createPostString($aPostFields) {
  2. foreach ($aPostFields as $key => $value) {
  3. $aPostFields[$key] = urlencode($key . '=' . $value);
  4. }
  5.  
  6. return urlencode(implode('&', $aPostFields));
  7. }


Go to the top of the page
+Quote Post
Zyggmunt
post
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 28.04.2009

Ostrzeżenie: (0%)
-----


Aktualny kod w pierwszym poście, niestety nadal nie działa ;/
  1. curl_setopt($curl, CURLOPT_FOLLOWLOCATION, false);
zmieniłem na false, bo wyświetlił się błąd, że nie może być na true razem z:
  1. curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);



Być może problem jest z cookies ? Poszukując rozwiązania natrafiłem na skrypt logowania do facebooka: http://www.daniweb.com/web-development/php...login-with-curl Jak można zauważyć autor odpowiednio buduje plik cookies. Być może coś podobnego trzeba zrobić w przypadku tej strony ?

Podejrzewam, że sporo informacji można zdobyć przy użyciu LiveHttpHeaders, jednak nie wiem czemu nie uzupełnia mi okienka po zalogowaniu mimo zaznaczonej opcji capture.



Ten post edytował Zyggmunt 15.09.2012, 11:06:35
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 06:30