Невозможно загрузить файл с cURL в PHP - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь загрузить файл с этого URL в PHP с помощью cURL.

https://www.geopoi.it/geopoiAPI/php/utils/omixml/getOMIXML.php?&t=p&f=KML&id=61932577_ras

Я разрешаю код проверки формы в PHP, управляю файлами cookie и т. Д., а потом, когда я собираюсь скачать, ничего не происходит.Это заголовок ответа:

HTTP/1.1 200 OK
Date: Thu, 25 Oct 2018 09:36:51 GMT
Server: Apache
X-Powered-By: PHP/5.4.15
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: must-revalidate
Pragma: no-cache
Content-Length: 0
Connection: close
Content-Type: text/html

Это мой код:

curl_setopt ($curl, CURLOPT_URL, 'https://www.geopoi.it/geopoiAPI/php/utils/omixml/getOMIXML.php?&cf=RTRRTR89T55F205K&p1=5&p2=2&p3=5&cod='.$captcha.'&ok=2&t=p&f=KML&id=553423949_ras');
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_HEADER, 1);       
curl_setopt ($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($curl, CURLOPT_BINARYTRANSFER, 1);
curl_setopt ($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt ($curl, CURLOPT_TIMEOUT, 300);
curl_setopt ($curl, CURLOPT_USERAGENT, 'any');
curl_setopt ($curl, CURLOPT_VERBOSE, true);   
curl_setopt ($curl, CURLOPT_HTTPHEADER , [
             'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
             'Accept-Language: es-ES,es;q=0.9,en;q=0.8,it;q=0.7,gl;q=0.6,fr;q=0.5,de;q=0.4',
             'User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36',
             'Cookie: '. self::COOKIE_NAME . '=' . $cookie,
             'Connection: keep-alive',
             'Host: www.geopoi.it',
             'Upgrade-Insecure-Requests: 1']);

Я не понимаю, потому что это работает в моем навигаторе, но с cURLзвонок не работает.

Есть идеи?

Большое спасибо!

1 Ответ

0 голосов
/ 25 октября 2018

Основная проблема, по-видимому, заключается в следующем: ваш код не обрабатывает мета-обновления, возвращаемые формой:

(...)
        <meta http-equiv="refresh" content="0;url=getOMIXML.php?&t=p&f=KML&id=61932577_ras&cf=TSTTST80A01L152H&p1=1&p2=1&p3=1&cod=tnChb29&ok=2" />
(...)

Выше приведено в форме ответа <body>.Это означает, что ПОСЛЕ того, как вы запрашиваете форму с помощью CURL, вам нужно отменить ответ для мета-обновления и запросить URL-адрес с теми же данными запроса.

Здесь была другая аналогичная публикация этой проблемы: Как следовать метадерректу с помощью curl и php? , поэтому не стесняйтесь попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...