Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] logowanie z weryfikacja obrazka + pobieranie
Forum PHP.pl > Forum > PHP
mazc
witam

mam wiekszy problem.

chce pobrac zrodlo strony lub sprawdzic czy jest tam okreslona wartosc
probowalem to przez file_get_contents ale niestety trzeba sie zalogowac...

i tu jest najwiekszy problem ze podczas logowania jest tam takze kod do przepisania z obrazka...

czym mozna to zrobic? curl'em? no wartosc z obrazka to w sumie moge sam podstawic... (chyba?)
Kicok
Można zrobić to cURL'em.

Zaloguj się na stronę przy pomocy przeglądarki internetowej i spróbuj odwzorować te czynności które wykonałeś w kodzie PHP, czyli zmuś cURL'a do:
1. Pobrania strony z obrazkiem CATPCHA
2. Zapisania pliku cookie z ID sesji

A po podaniu przez ciebie kodu z obrazka:
1. Wysłaniu formularza razem z danymi z cookie
2. Pobraniu wynikowej strony (tej widocznej po zalogowaniu)
mazc
ciezko.. ;/ bardzo ciezko ;/ ehh.. dalej ten obrazek sad.gif

narazie mam takie cos... niestety nie moge dojsc do tego aby czytalo obrazek....

  1. <?php
  2. echo ("<img src=\"http://jakislink.pl/generujkod.php\" alt=\"obrazek\" border=\"0\">");
  3. echo ("
  4. <form action=\"logowanie.php\" method=\"post\">
  5. <input name=\"obrazek\" type=\"text\" value=\"\">
  6. <input name=\"\" type=\"submit\" value=\"OK\"></form>
  7. ");
  8. ?>


  1. <?php
  2. $obrazek=$_POST[obrazek];
  3. $adres='http://jakislink.pl/logowanie.php';
  4. $login='login';
  5.  
  6. $haslo='haslo';
  7. $przegladarka='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6';
  8. $naglowki=array(
  9. 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
  10. 'Accept-Language: en-us,en;q=0.5',
  11. 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7');
  12. $post=array(
  13. 'login' => $login,
  14. 'haslo' => $haslo,
  15. 'kodobrazek' => $obrazek
  16. );
  17. $link=curl_init($adres);
  18. curl_setopt($link, CURLOPT_USERAGENT, $przegladarka);
  19. curl_setopt($link, CURLOPT_ENCODING, '');
  20. curl_setopt($link, CURLOPT_HTTPHEADER, $naglowki);
  21. curl_setopt($link, CURLOPT_POSTFIELDS, $post);
  22. curl_exec($link);
  23. curl_close($link);
  24. ?>


jak narazie z tego co widzie to login i haslo jest ok, ale nestety ten obrazek przeszkadza sad.gif sad.gif
probowalem odpalac to na stronie.html i w srodku 2x iframe z prawdziwa strona logowania i z tym.. wtedy obrazek wyswietla ale jest zly :S

;-) ma ktos pomysl albo czesc rozwiazania snitch.gif ?
z gory dzieki tongue.gif
Kicok
Żeby pokonać CAPTCHĘ należy:
1. Pobrać obrazek z kodem (podczas pobierania utworzy się nowa sesja a jej identyfikator zapisany zostanie do pliku COOKIE)
2. Wysłać formularz z danymi i kodem z obrazka. Razem z formularzem wysłany musi być też identyfikator sesji z pkt. 1

W twoim kodzie jest tak, że obrazek z kodem otwiera przeglądarka (i to w niej zapisuje się plik COOKIE), a formularz wysyłasz cURL'em, który z plikami COOKIE przeglądarki nie ma nic wspólnego.
mazc
ehhh sad.gif non sens :/ juz 2 dzien sie mecze z tym g...... juz mnie szlag trafia ;/

teraz mam takie cos... no niby sie sciaga i tworzy sie takie cookie.txt, sciaga tez sie bialy png... rece opadaja tongue.gif
mozesz podwiedziec mi jakies bardziej konkretne info tongue.gif postawie ci kiedys piwo tongue.gif

[kod]
# Netscape HTTP Cookie File
# http://www.netscape.com/newsref/std/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

xxx.com FALSE / FALSE 0 PHPSESSID 082abf0ec618e6d0dc72e770afc3a3f5
[/kod]

  1. <?
  2. $adres='http://link.com/logowanie.php';
  3.  
  4. $naglowki=array(
  5. 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
  6. 'Accept-Language: en-us,en;q=0.5',
  7. 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7');
  8.  
  9. $przegladarka='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6';
  10.  
  11. $obrazek='http://link.com/generuj.php';
  12.  
  13. $link = curl_init(adres);
  14.  
  15. curl_setopt($link, CURLOPT_USERAGENT, $przegladarka);
  16. curl_setopt($link, CURLOPT_HTTPHEADER, $naglowki);
  17.  
  18. $plik2=file_get_contents($obrazek);
  19. file_put_contents('obrazek.png', $plik2);
  20.  
  21. curl_setopt($link, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt');
  22. curl_setopt($link, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt');
  23.  
  24. curl_setopt($link, CURLOPT_REFERER, 'http://link.com/logowanie.php');
  25. curl_setopt($link, CURLOPT_URL, "http://link.com/logowanie.php" );
  26. curl_setopt($link, CURLOPT_RETURNTRANSFER, 1);
  27.  
  28. $postResult = curl_exec($link);
  29.  
  30. echo $postResult;
  31.  
  32. curl_close($link);
  33.  
  34.  
  35. echo ("<img src=\"http://link.com/generuj.php\" alt=\"KOD\" border=\"1\">");
  36. echo ("
  37.  
  38. <form action=\"logowanie.php\" method=\"post\">
  39. <input name=\"kodobrazek\" type=\"text\" value=\"\">
  40. <input name=\"\" type=\"submit\" value=\"OK\"></form>
  41.  
  42. ");
  43.  
  44. ?>
Kicok
Znowu ten sam błąd biggrin.gif COOKIE z identyfikatorem sesji tworzony jest przez cURL, a ty obrazek ściągasz przez file_get_contents ;]

  1. <?php
  2.  
  3. $formularz = 'http://link.com/logowanie.php';
  4. $obrazek = 'http://link.com/generuj.php';
  5.  
  6. $przegladarka = 'Mozilla...';
  7.  
  8. $login = 'aaa';
  9. $haslo = 'bbb';
  10.  
  11.  
  12.  
  13. if( !isset( $_POST['submit'] ) )
  14. {
  15. // NASZ formularz nie został jeszcze wysłany
  16. // Trzeba pobrać obrazek CAPTCHA i go wyświetlić
  17. $fp = fopen( 'obrazek.png', 'wb' );
  18.  
  19.  
  20. $curl = curl_init( $obrazek );
  21. curl_setopt( $curl, CURLOPT_FILE, $fp );
  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_USERAGENT, $przegladarka );
  25.  
  26. curl_exec( $curl );
  27. if( curl_errno( $curl ) !== 0 ) {
  28. die( curl_error( $curl ) );
  29. }
  30. curl_close( $curl );
  31. fclose( $fp );
  32.  
  33.  
  34. ?>
  35.  
  36. <form action="" method="post">
  37. <img src="obrazek.png" alt="obrazek" />
  38. <br />
  39.  
  40. KOD: <input type="text" name="kod" />
  41. <br /><br />
  42.  
  43. <input type="submit" name="submit" value="OK" />
  44. </form>
  45.  
  46. <?php
  47.  
  48. }
  49. else
  50. {
  51. // Przy użyciu inteligencji człowieka odczytaliśmy kod z obrazka CAPTCHA
  52. // można się logować
  53. $post = array(
  54. 'login' => $login,
  55. 'haslo' => $haslo,
  56. 'kodobrazek' => $_POST['kod']
  57. );
  58.  
  59.  
  60. $curl = curl_init( $formularz );
  61. curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
  62. curl_setopt( $curl, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookies.txt' );
  63. curl_setopt( $curl, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookies.txt' );
  64. curl_setopt( $curl, CURLOPT_USERAGENT, $przegladarka );
  65. curl_setopt( $curl, CURLOPT_POSTFIELDS, $post )
  66. // (...)
  67. }
  68.  
  69. ?>
mazc
nie poszlo sad.gif nie wiem na jakiej zasadzie to dziala... :S moze lepiej napisze pm do ciebie ;-p
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.