Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]curl i pobieranie danych ze strony (wina https? czy o czymś zapomniałem?)
Forum PHP.pl > Forum > Przedszkole
Radek_1
Hej,

mam następujący problem. Chciałbym pobrać dane ze strony ryanaira.
Sprawdziłem wszystkie nagłówki jakie są wysyłane w trakcie tworzenia "zapytania".
Wygląda to tak:
Wchodze na stronę: https://www.bookryanair.com/SkySales/Booking.aspx
W nagłówkach widzę, że są odwołania GET do następujących stron:
- Booking.aspx (tu tworzony jest session ID)
- Search.aspx (tu generowane i przypisywane jest _VIEWSTATE jako pole ukryte w formularzu)

Do tej pory to co wykonuje przy pomocy curl zgadza się jak w przypadku przeglądarki.

Wypełniam formularz i wysyłane jest przy pomocy POSTa zapytanie znowu do
- Search.aspx.
Korzysta on z powyżej podanych sessionid oraz _VIEWSTATE, resztę pól wypełniam tak jak w przypadku wysyłania zapytania z przeglądarki.

W przeglądarce po wysłaniu mam wyniki lotów, natomiast przy pomocy curl mam to samo co w przypadku pierwszego wywołania do Search.aspx.


Kod ostatniego zapytania curl:
  1. $url = "https://www.bookryanair.com/SkySales/Search.aspx";
  2.  
  3. $fields = array(
  4. '_EVENTTARGET' => 'SearchInput$ButtonSubmit',
  5. '_EVENTARGUMENT' => '',
  6. '_VIEWSTATE' => $viewstate,
  7. 'formaction' => 'Search.aspx',
  8. 'errorlist' => '',
  9. 'SearchInput$IsFlexible' => 'on',
  10. 'SearchInput$TripType' => 'RoundTrip',
  11. 'SearchInput$Orig' => 'WMI',
  12. 'SearchInput$Dest' => 'NYO',
  13. 'SearchInput$DeptDate' => '06/05/2014',
  14. 'SearchInput$RetDate' => '10/05/2014',
  15. 'SearchInput$PaxTypeADT' => '1',
  16. 'SearchInput$PaxTypeCHD' => '0',
  17. 'SearchInput$PaxTypeINFANT' => '0');
  18.  
  19. foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
  20. rtrim($fields_string,'&');
  21.  
  22. $ch = curl_init();
  23.  
  24. curl_setopt($ch, CURLOPT_URL,$url);
  25. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  26. 'Accept: text/html, */*; q=0.01',
  27. 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
  28. 'Connection: keep-alive',
  29. 'Cache-Control: no-cache',
  30. 'Pragma: no-cache',
  31. 'X-Requested-With: XMLHttpRequest'
  32. ));
  33. curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0');
  34. curl_setopt($ch, CURLOPT_HEADER,1);
  35. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  36. curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
  37. curl_setopt($ch, CURLOPT_REFERER, 'https://www.bookryanair.com/SkySales/Booking.aspx');
  38. curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE);
  39. curl_setopt($ch, CURLOPT_POST,1);
  40. curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string);
  41.  
  42. $result = curl_exec($ch);
  43.  
  44. curl_close($ch)


W zmiennej $viewstate jest wartość z pierwszego odwołania do Search.aspx i pobranie wartości z ukrytego, wygenerowanego pola _VIEWSTATE, nastomiast COOKIE_FILE to adres do pliku cookie.txt gdzie jest zapisane sessionId.

Co robię nie tak? Czy problem jest w tym iż komunikacja odbywa sie po https?

Liczę na pomoc.
phpion
Spróbuj wyłączyć CURLOPT_SSL_VERIFYPEER.
Radek_1
Niestety, rezultat w odpowiedzi jest taki sam z wyłączonym CURLOPT_SSL_VERIFYPEER jest taki sam sad.gif
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.