Мне нужно, вероятно, изменить мой запрос cURL, чтобы он работал. Вы можете найти нужный url от поиска по Qantas например (Мельбурн в Сидней, в одну сторону, на следующий день), вы получите страницу с результатами. Затем, если вы наведете номер рейса, вы получите диалоговое окно. В FF-сети вы можете увидеть запрос на получение, как вы наведите курсор мыши, который извлекает json-документ.GET Request работает с библиотекой запросов python, но не работает с curl
локонов код, который не работает:
$flight_data_url = 'http://book.qantas.com.au/pl/QFOnline/wds/FlifoInfoServlet;jsessionid=eFVNx9ORnACoaRyRp_Iu675LrmM6JfRkDHpa2c6I60bhJABPBeW3!764143094!1637886517!1440118985617?AIRLINE_CODE=QF&B_DATE=201508220600&B_LOCATION=MEL&E_LOCATION=SYD&FLIGHT_NUMBER=400&LANGUAGE=GB&SITE=QFQFQFBD'
$handle = curl_init();
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_CAINFO => $path . '\cacert.pem',
CURLOPT_URL => $flight_data_url,
CURLOPT_HTTPHEADER => array('Host'=>'book.qantas.com.au','User-Agent'=>'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)','Accept'=>'application/json, text/javascript, */*; q=0.01','Accept-Language'=>'en-US,en;q=0.5','Accept-Encoding'=>'gzip, deflate','Content-Type'=>'text/javascript; charset=utf-8','X-Requested-With'=>'XMLHttpRequest','Referer'=>'http://book.qantas.com.au/pl/QFOnline/wds/OverrideServlet','Cookie'=>$flight_cookie_file,'Connection'=>'keep-alive')
);
curl_setopt_array($handle, $options);
$flight_model_data = curl_exec($handle);
curl_close($handle);
Питон код, который делает работу:
#!/usr/bin/env python
import requests
def getaurl():
url = 'http://book.qantas.com.au/pl/QFOnline/wds/FlifoInfoServlet;jsessionid=LuJYL8OJHk_DUIPcYbcfT343gYMEw3b9ej4Vt_MATLerQG0kNIZR!932397328!976639289!1440293569417?AIRLINE_CODE=QF&B_DATE=201508240630&B_LOCATION=MEL&E_LOCATION=SYD&FLIGHT_NUMBER=404&LANGUAGE=GB&SITE=QFQFQFBD'
headers = { "Host":"book.qantas.com.au",'user-agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0', "Accept":"application/json, text/javascript, */*; q=0.01", "Accept-Language":"en-US,en;q=0.5", "Accept-Encoding":"gzip, deflate","Content-Type":"text/javascript; charset=utf-8", "X-Requested-With":"XMLHttpRequest", "Referer":"http://book.qantas.com.au/pl/QFOnline/wds/OverrideServlet", "Connection":"keep-alive" }
r = requests.get(url, headers=headers)
print r.text
getaurl()
Вы говорите, что не работает, но без повторения кода локально, так и с использованием сертификатов, возможно, мы не можем отладки кода. Можете ли вы проверить, есть ли у вас ошибка скручивания? http://php.net/manual/en/function.curl-error.php – Bizmate
Нет ошибки curl, она возвращает страницу с 404 не найденной ошибкой rfc 2068. Что бы это ни значило. –