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:
$url = "https://www.bookryanair.com/SkySales/Search.aspx"; '_EVENTTARGET' => 'SearchInput$ButtonSubmit', '_EVENTARGUMENT' => '', '_VIEWSTATE' => $viewstate, 'formaction' => 'Search.aspx', 'errorlist' => '', 'SearchInput$IsFlexible' => 'on', 'SearchInput$TripType' => 'RoundTrip', 'SearchInput$Orig' => 'WMI', 'SearchInput$Dest' => 'NYO', 'SearchInput$DeptDate' => '06/05/2014', 'SearchInput$RetDate' => '10/05/2014', 'SearchInput$PaxTypeADT' => '1', 'SearchInput$PaxTypeCHD' => '0', 'SearchInput$PaxTypeINFANT' => '0'); foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); 'Accept: text/html, */*; q=0.01', 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 'Connection: keep-alive', 'Cache-Control: no-cache', 'Pragma: no-cache', 'X-Requested-With: XMLHttpRequest' )); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0'); curl_setopt($ch, CURLOPT_HEADER,1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE_FILE); curl_setopt($ch, CURLOPT_REFERER, 'https://www.bookryanair.com/SkySales/Booking.aspx'); curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string); $result = curl_exec($ch); 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.