Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problemu z cURL'em i ssl ;/
weloo
post 5.01.2007, 13:10:55
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 26.02.2004

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


Witam!

Mam skrypt który ma sie logować na strone, i pobierać z niej dane.
Działał dobrze jak nie było logowania przez https, no ale niestety teraz jest i skrypt padł ;(
Nie wiecie co może być przyczyną?

Poniżej przesyłam kod:

Kod
<?

    $user='xxx';
    $haslo='xxx';
    $config_explorer="Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8) Gecko/20051111 Firefox/1.5";
    
    
    $ch = curl_init();
    $file_tmp=md5(rand());    

$a=fopen("tmp/$file_tmp", "w");
fclose($a);

    curl_setopt($ch, CURLOPT_URL, 'https://serwer/Login.aspx');
    curl_setopt($ch, CURLOPT_COOKIEJAR, "tmp/$file_tmp");
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, $config_explorer);
    $string_tmp=curl_exec ($ch);
if (curl_errno($ch)) {
    echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
}
    curl_close ($ch);

preg_match_all("|<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"(.*)\" \/>|U", $string_tmp, $jeden);
$viewstate=$jeden[1][0];


preg_match_all("|<input type=\"hidden\" name=\"__EVENTVALIDATION\" id=\"__EVENTVALIDATION\" value=\"(.*)\" \/>|U", $string_tmp, $dwa);
$eventvalidation=$dwa[1][0];


/*


// Pobieranie identyfikatora sesji ASP.NET


$plik="./tmp/$file_tmp";

$open = @fopen ($plik, "r+");
$dane = fread($open, filesize($plik));

preg_match_all("|ASP.NET_SessionId(.*)
|U", $dane, $sid);
$sesja=$sid[1][0];
$sesja=substr($sesja,0,24);
// Koniec pobierania identyfikatora sesji

*/






    $ch = curl_init ();
    $file_tmp_1=md5(rand());
    

    $post_pytanie="Form1=&__VIEWSTATE=$viewstate&txtCustomerID=&txtLogin=$user&txtPassword=$haslo&ButtonLogIn=Wyślij&__EVENTVALIDATION=$eventvalidation";
    
    curl_setopt($ch, CURLOPT_URL, 'https://serwer/Login.aspx');
    curl_setopt($ch, CURLOPT_COOKIEFILE, "tmp/$file_tmp");
    curl_setopt($ch, CURLOPT_COOKIEJAR, "abc");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_REFERER, "https://serwer/Login.aspx");
    curl_setopt($ch, CURLOPT_POST, 1);     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_pytanie);
    curl_setopt($ch, CURLOPT_USERAGENT, $config_explorer);
if (curl_errno($ch)) {
    echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
}

curl_errno($ch);

    $string_tmp=curl_exec ($ch);
    curl_close ($ch);        
    
        $ch = curl_init ();

    curl_setopt($ch, CURLOPT_URL, "http://serwer/menuLeft.aspx");
    curl_setopt($ch, CURLOPT_COOKIEFILE, "abc");
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_USERAGENT, $config_explorer);
if (curl_errno($ch)) {
    echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
}

    echo $string_tmp=curl_exec ($ch);
    curl_close ($ch);    
    
    unlink("tmp/$file_tmp");

?>


Skrypt po odpaleniu pokazuje:
Object moved to here.

Czyli tak jakby nie zapisywał cookies ;(

Z góry dzięki!
Pozdr
WeLoO

Ten post edytował weloo 5.01.2007, 13:11:30
Go to the top of the page
+Quote Post
dedi2
post 13.01.2007, 16:16:14
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.01.2007

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


Witam!

Mam podobny problem z logowaniem się do tego serwisu! Coś zaszalało zaraz po nowym roku. U mnie jeden na dziesięć razy zadziała. Jedna kwestia która mnie zastanawia to może jakieś problemy ze strony providera. Ja uruchamiałem na serwerach NetArt i nie mam niestety możliwości przetestowania na innym serwerze.

Pozdrawiam
Go to the top of the page
+Quote Post
gumbas
post 20.06.2007, 14:45:49
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 11.06.2007

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


Object moved to here - prawdopodobnie masz problem z przechwyceniem sesji i dalatego sie pojawia ten komunikat.

A wie ktoś może jak sie zautoryzować po https wykorzystując curla??
Go to the top of the page
+Quote Post
L00zak
post 22.07.2007, 20:06:47
Post #4





Grupa: Zarejestrowani
Postów: 58
Pomógł: 5
Dołączył: 2.05.2006

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


  1. <?
  2. //error_reporting(0);
  3.  
  4. $i=0;
  5. $url1 = 'https://serwer/Login.aspx';
  6. $url2 = 'https://serwer/Product.aspx';
  7. $client_idek='numer_id';
  8. $client_user='login';
  9. $client_pass='hasło';
  10.  
  11. for ($i = 1; $i <= 2; $i++) {
  12. $ch = curl_init();
  13. curl_setopt($ch, CURLOPT_URL, $url1);
  14. curl_setopt($ch, CURLOPT_COOKIEFILE, '/path1/cookies.txt');
  15. curl_setopt($ch, CURLOPT_COOKIEJAR, '/path1/cookies.txt');
  16. curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  17. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  18. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  19. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  20. curl_setopt($ch, CURLOPT_USERAGENT, $explorer);
  21. $string_tmp=curl_exec ($ch);
  22. //if (curl_errno($ch)) {
  23. // echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
  24. //}
  25. curl_close ($ch);
  26.  
  27. if($i <= 2){
  28. preg_match_all("|<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="(.*)" />|U", $string_tmp, $jeden);
  29. preg_match_all("|<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="(.*)" />|U", $string_tmp, $dwa);
  30. }
  31.  
  32. }
  33.  
  34. $post = '__VIEWSTATE='.urlencode($viewstate=$jeden[1][0]).'&txtCustomerID='.$client_idek.'&txtLogin='.$client_user.'&txtPassword='.$client_pass.'&ButtonLogIn=Wy%C5%9Blij&__EVENTVALIDATION='.urlencode($eventvalidation=$dwa[1][0]).'';
  35. $ch = curl_init();
  36. curl_setopt($ch, CURLOPT_URL, $url);
  37. curl_setopt($ch, CURLOPT_COOKIEFILE, '/path2/cookies.txt');
  38. curl_setopt($ch, CURLOPT_COOKIEJAR, '/path2/cookies.txt');
  39. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  40. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
  41. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  42. curl_setopt($ch, CURLOPT_TIMEOUT, 15);
  43. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  44. curl_setopt($ch, CURLOPT_REFERER, $url);
  45. curl_setopt($ch, CURLOPT_POST, 1);
  46. curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
  47. curl_setopt($ch, CURLOPT_USERAGENT, $explorer);
  48. $result = curl_exec ($ch);
  49. //if (curl_errno($ch)) {
  50. // echo 'Błąd #' . curl_errno($ch) . ': ' . curl_error($ch);
  51. //}
  52. curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  53. $store = curl_exec ($ch);
  54. curl_setopt($ch, CURLOPT_URL, $url2);
  55. $content = curl_exec ($ch);
  56. curl_close ($ch);
  57. ?>


wersja poprawiona smile.gif
-wywaliłem Pobieranie identyfikatora sesji ASP.NET bo i tak zapisuje się w ciastku
-zmiana sposobu zapisywania ciastek (jedno nieruszane ciastko starcza przynajmniej na jeden dzień)
-przed wysłaniem $viewstate i $eventvalidation trzeba je potraktować urlencode()
-dziwnie tylko działa pierwszy curl pobierający właśnie $viewstate i $eventvalidation, raz wycina raz nie, dlatego dodałem for()

Ogólnie to zastanawiam się po kiego wała pobierać lewe menu z Actiona, rozumiem opisy, ceny itp. ale menu tongue.gif
Go to the top of the page
+Quote Post
pavelb
post 3.08.2007, 10:41:56
Post #5





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 1.06.2006

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


Mój skrypt właśnie przestał działać przenosi mnie do strony logowania :/
Czy wasze skrypty też przestały działać?

Wszystko mi działało dobrze do wczoraj :/
Go to the top of the page
+Quote Post
L00zak
post 3.08.2007, 10:46:09
Post #6





Grupa: Zarejestrowani
Postów: 58
Pomógł: 5
Dołączył: 2.05.2006

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


Wszystko działa jak najlepiej, prawdopodobnie masz problem z sesjami, albo ciastkami. Jak coś to wklej swój skrypt i zobaczymy
Go to the top of the page
+Quote Post
pavelb
post 3.08.2007, 12:54:05
Post #7





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 1.06.2006

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


Niby loguje się i mam ciastko i wszystko wygląda OK, ale przy pobieraniu cennika csv przenosi mnie do strony logowania.

Testowałem ten twój skrypt i mam to samo, chyba że źle go użyłem.

Ten post edytował pavelb 3.08.2007, 12:54:36
Go to the top of the page
+Quote Post
kakq
post 28.02.2008, 15:41:38
Post #8





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 24.03.2005

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


Witam odkopuje temat;

Zainteresowałem się skryptem... Nie działa pokazuje się pusta strona... ewentualnie Błąd #3: malformed.
Ciacha zapisuje a w nich :

# Netscape HTTP Cookie File
# http://curlm.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.

i-serwis2.action.pl FALSE / FALSE 0 ASP.NET_SessionId mu4ndi235uzy256mj3ibhmaw55


Nic więcej się nie dzieje proszę o pomoc sad.gif
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: 18.08.2025 - 16:47