Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]CURL logowanie POST a później przekierowanie.
Giluś
post 4.10.2014, 10:31:24
Post #1





Grupa: Zarejestrowani
Postów: 377
Pomógł: 9
Dołączył: 2.11.2010

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


Hej, próbuję się zalogować za pomocą POST'a na stronę
Kod
biznes-host.pl
w celu pobrania aktualnego stanu wirtualnego portfela..
Zrobiłem sobie w miarę prosty skrypt który loguje mnie bez problemu:

  1. <?php
  2.  
  3. $curl = curl_init('https://biznes-host.pl/?show=logowanie');
  4. curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . 'cookies.txt');
  5. curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . 'cookies.txt');
  6. curl_setopt($curl, CURLOPT_POSTFIELDS, 'zaloguj=1&show=logowanie&s=logowanie&login_form=[login]&haslo_form=[haslo]&submit=Zaloguj');
  7.  
  8. $strona = curl_exec($curl);
  9. curl_close($curl);
  10.  
  11. print_r($strona);
  12. ?>


Opiszę jak działa tradycyjne logowanie:
1. Wpisuję dane login/haslo i klikam zaloguj.
2. Wykonuję się skrypt i wyświetla tekst, że zostałem zalogowany i za jakieś 2-3 sekundy jest przekierowanie na stronę z portfelem.
3. Znajduję się na stronie z portfelem.

I mój problem polega na tym, że gdy u siebie na serwerze wykonuję ten skrypt to dochodzi do punktu "2" że wyświetla mi, że jestem zalogowany i że zostanę przekierowany i wówczas mnie przekierowuje (na lokalnym serwerze, czyli dopisuję adres: "/index.php?show=panel"), co uniemożliwia mi całkowicie odczytanie danych..



I teraz moje pytanie czy jest jakiś sposób, aby mi się dopiero wyświetliła ta końcowa strona bez przekierowania, tak abym po prostu dostał źródło strony i później za pomocą wyrażeń regularnych wybrał sobie to czego poszukuję ?
Nie wiem, może od razu po wykonaniu POSTu dać przekierowanie na "https://biznes-host.pl/?show=panel" tylko w jaki sposób ?

Mam nadzieję, rozumiecie o co mi mniej więcej chodzi smile.gif

Pozdrawiam i z góry bardzo dziękuje smile.gif
Go to the top of the page
+Quote Post
Marek607
post 4.10.2014, 10:51:22
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 3
Dołączył: 4.03.2010

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


Hej,

Co prawda to nie jest w php, ale bash, ale myśle że ci to pomoże:

Kod
#!/bin/bash
/usr/local/bin/curl  https://biznes-host.pl/?show=logowanie -d 'zaloguj=1&show=logowanie&s=logowanie&login_form=login&haslo_form=haslo&submit=Zaloguj' -c /root/cookebh 1>>/root/bhlog

/usr/local/bin/curl  https://biznes-host.pl/index.php?show=panel -b /root/cookebh 1>>/root/bhlog
ilenakoncie=`less /root/bhlog | grep Stan | awk '{ print $7}'`
echo "na koncie masz $ilenakoncie";
rm -f /root/cookebh
rm -f /root/bhlog


Przykładowy wynik:

Kod
root@s1:~# sh /root/ilewbh.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  9143    0  9055  100    88   153k   1524 --:--:-- --:--:-- --:--:--  157k
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 17481    0 17481    0     0   139k      0 --:--:-- --:--:-- --:--:--  141k
na koncie masz 80.53
root@s1:~#


Jak się nie pali to mogę przekazać naszemu programiście by zrobił za Ciebie coś takiego w PHP.
Pozdrawiam
Marek z BH smile.gif

Ten post edytował Marek607 4.10.2014, 10:53:28
Go to the top of the page
+Quote Post
Michael2318
post 4.10.2014, 15:23:17
Post #3





Grupa: Zarejestrowani
Postów: 651
Pomógł: 116
Dołączył: 3.06.2012
Skąd: Lędziny

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


  1. <?php
  2.  
  3. $post = 'login_form=NICK&haslo_form=HASLO';
  4.  
  5. $c = curl_init();
  6. curl_setopt($c, CURLOPT_URL, 'https://biznes-host.pl/?show=logowanie');
  7. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 desktopsmiley_2_2_5643778701369665_44_71 DS_gamingharbor Firefox/3.5.2 (.NET CLR 3.5.30729)');
  8. curl_setopt($c, CURLOPT_POST, true);
  9. curl_setopt($c, CURLOPT_POSTFIELDS, $post);
  10. curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
  11. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  12. curl_setopt($c, CURLOPT_COOKIEFILE, 'cookies.txt');
  13. curl_setopt($c, CURLOPT_COOKIEJAR, 'cookies.txt');
  14. $p = curl_exec($c);
  15. curl_close($c);
  16.  
  17. $c = curl_init();
  18. curl_setopt($c, CURLOPT_URL, 'https://biznes-host.pl/index.php?show=panel');
  19. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.2) Gecko/20090729 desktopsmiley_2_2_5643778701369665_44_71 DS_gamingharbor Firefox/3.5.2 (.NET CLR 3.5.30729)');
  20. curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  21. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  22. curl_setopt($c, CURLOPT_COOKIEFILE, 'cookies.txt');
  23. curl_setopt($c, CURLOPT_COOKIEJAR, 'cookies.txt');
  24. $p = curl_exec($c);
  25. curl_close($c);
  26.  
  27. echo $p;
  28.  
  29. ?>


Ten skrypt Cię zaloguje i przeniesie na stronę główną panelu już jako zalogowany user. W zmiennej $p na samej dole skryptu masz zapisany kod HTML wynikowej strony.
Pozostaje Ci napisać wyrażenie regularne, które wyciągnie Ci stan konta z kodu HTML wink.gif
Go to the top of the page
+Quote Post
Damonsson
post 4.10.2014, 16:26:26
Post #4





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Sprawdź jeszcze, czy nie pomoże samo:
  1. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
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 Wersja Lo-Fi Aktualny czas: 25.04.2024 - 05:58