Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] curl - Logowanie do forum phpBB
busyboy
post
Post #1





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Witam Serdecznie

Chciałem zrobić zdalne logowanie do forum phpBB za pomocą curl. Posklejałem taki kod:

  1. <?php
  2. $config['address'] = 'http://adresstrony/forum/';
  3.  
  4. $path['cookie'] = dirname(__FILE__).'/cookies.txt';
  5.  
  6. $post['username'] = 'login';
  7. $post['password'] = 'haslo';
  8. $post['redirect'] = '';
  9. $post['login'] = 'Zaloguj';
  10.  
  11. $ch = curl_init($config['address'].'login.php');
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  13. curl_setopt($ch, CURLOPT_HEADER, true);
  14. curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
  15. curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
  16.  
  17. curl_setopt($ch, CURLOPT_POSTFIELDS, prepare_request($post));
  18. curl_exec($ch);
  19. curl_close($ch);
  20.  
  21. function prepare_request($query)
  22. {
  23. if(is_array($query) && !empty($query))
  24. {
  25. foreach($query as $key => $value)
  26. {
  27. $query[$key] = urlencode($key).'='.urlencode($value);
  28. }
  29.  
  30. return implode('&', $query);
  31. }
  32. else
  33. {
  34. return false;
  35. }
  36. }
  37. ?>


Skrypt uruchamia stronę – ale niestety nie loguje – pojawia się informacja o błędnie wprowadzonym danych (login / hasło) i pojawia się u góry strony komunikat :

  1. HTTP/1.0 200 OK Cache-Control: private, pre-check=0, post-check=0, max-age=0 Expires: 0 Pragma: no-cache Content-Type: text/html Date: Mon, 02 Jan 2012 12:05:58 GMT Connection: close.


Nie wiem hmm czy forum może mieć jakieś zabezpieczenia ? żeby nie można było się logować za pomocą curl ?

Z góry dziękuje za pomoc

Pozdrawiam
BusyBoy
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


AFAIK musisz ustawić jeszcze to:

  1. curl_setopt($ch, CURLOPT_POST, 1);


żeby dane poszły postem wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
cycofiasz
post
Post #3





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


Nie musisz wstawiać tego co podał Sephirus. Oczywiście forum może mieć pewne zabezpieczenia ale jeśli nie jest to captcha to można je obejść. Nie jesteśmy w stanie pomóc bez konkretego adresu forum i danych do logowania
Go to the top of the page
+Quote Post
busyboy
post
Post #4





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Po wklejeniu powyzszego kodu - nic nie pomoglo - bez zmian sad.gif
Go to the top of the page
+Quote Post
Sephirus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Dlatego napisałem AFAIK bo nie byłem pewien tongue.gif

Hmmm bardzo często strony mają zabezpieczenia przed logowaniem zrobione w taki sposób, że na stronie z formularzem dodają się jakieś cookie itp. potem następuje wysłanie formularza i postów i to cookie jest. Spróbuj może najpierw odwiedzić adres samego forum albo formularza logowania a następnie skrypt logujący - użyj oczywiście tego samego COOKIEFILE i COOKIEJAR w obu przypadkach.

Dodatkowym zabezpieczeniem może być też jakieś pole w formularzu - zobacz czy tam nic więcej nie jest wysyłane.

  1. $config['address'] = 'http://adresstrony/forum/';
  2.  
  3. $path['cookie'] = dirname(__FILE__).'/cookies.txt';
  4.  
  5. $post['username'] = 'login';
  6. $post['password'] = 'haslo';
  7. $post['redirect'] = '';
  8. $post['login'] = 'Zaloguj';
  9.  
  10. $ch = curl_init($config['address']); // tu daj adres pod jakim jest formularz
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  12. curl_setopt($ch, CURLOPT_HEADER, true);
  13. curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
  14. curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
  15. curl_exec($ch);
  16. curl_close($ch);
  17.  
  18. $ch = curl_init($config['address'].'login.php');
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
  20. curl_setopt($ch, CURLOPT_HEADER, true);
  21. curl_setopt($ch, CURLOPT_COOKIEFILE, $path['cookie']);
  22. curl_setopt($ch, CURLOPT_COOKIEJAR, $path['cookie']);
  23.  
  24. curl_setopt($ch, CURLOPT_POSTFIELDS, prepare_request($post));
  25. curl_exec($ch);
  26. curl_close($ch);


W ogóle najlepiej prześledzić dokładnie jak jest z tym logowaniem. Zobaczyć co ustawia strona z formularzem (jakie ciastka), co wysyła postem (firebug) i powtórzyć to dokładnie tak samo.

Proponuje też dodać do CURL USER_AGENT'a jakiegoś i referera na adres strony z formularzem:

  1. curl_setopt($ch, CURLOPT_USER_AGENT, 'Mozilla [...]');
  2. curl_setopt($ch, CURLOPT_REFERER, $config['address']);


Ten post edytował Sephirus 2.01.2012, 14:30:05


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
busyboy
post
Post #6





Grupa: Zarejestrowani
Postów: 191
Pomógł: 0
Dołączył: 22.02.2004

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


Sam skrypt sie loguje ba forum - w kazdym razie probuje - dostaje informacje

Podałeś nieprawidłowe lub nieaktywne dane użytkownika

Kliknij Tutaj aby spróbować ponownie

Kliknij Tutaj aby powrócić do Strony Głównej


Parametry do logowania sa poprawne - konto jest aktywne bo sprawdzalem recznie - nie ma zadnych tokenow itp
Go to the top of the page
+Quote Post
Sephirus
post
Post #7





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


No to musisz podać adres forum :/ (możesz na PW - pomogę)

A daj passwrd zamiast password biggrin.gif

  1. $post['passwrd'] = 'haslo';


wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
by_ikar
post
Post #8





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Ustaw sobie jeszcze referer na tą konkretną stronę. Możliwe że również to sprawdzają.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 12:07