cURL Error (28): Operation timed out after

134
10 апреля 2019, 07:30

Стоит задача парсинга robots.txt. Использую php curl. На некоторых сайтах получаю ответ типа

cURL Error (28): Operation timed out after  30001 milliseconds with 0 bytes received 

Увеличение таймаута не решает проблему. Сам код парсинга:

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_REFERER, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
$robots = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl_close($ch);

для примера урл: https://www.adidas.ru/robots.txt

Answer 1

Добавь в код свой строчку:

curl_setopt($ch, CURLOPT_ENCODING, 'gzip');

https://www.adidas.ru/robots.txt - отдается по дефолту gzip'ом, как видать и ряд других robots.txt с которыми у тебя проблемы.

UPD

Второй вариант это попросить не отдавать сервера контент gzip'ом передав заголовок

curl_setopt($ch, CURLOPT_HTTPHEADER, ['accept-encoding: deflate, br']);

это если вдруг у кого в сборках/версиях проблема с gzip

Answer 2
// Один из вариантов возможных причин:

CURL - FAQ - 4.1 Проблемы при подключении к SSL серверам.

Иногда у curl возникают проблемы с подключением к SSL серверам при использовании SSLeay или OpenSSL v0.9+.

Многие старые SSL-сервера не работают с запросами SSLv3. Чтобы устранить эту проблему, добавьте в командной строке curl параметр --sslv2.

Были случаи, когда удаленному серверу не нравился запрос SSLv2, и вместо этого надо было использовать SSLv3. Параметр командной строки --sslv3.

Answer 3

В ubuntu 16.04 существуют ограничения по подключению sslv3, видимо сервер запрещает другую версию https://ubuntugeeks.com/questions/33156/simple-way-of-enabling-sslv2-and-sslv3-in-openssl

READ ALSO
Форма связи и копиями полей

Форма связи и копиями полей

Возможно не правильно задал вопросМожно ли как-то сделать форму, чтобы при заполнении и отправке происходила отправка письма и тут же появлялось...

139
Phpdbg как запустить

Phpdbg как запустить

Решил попробовать отладчик phpdbg, встроенный в php 56

181
Сортировка JSON в PHP

Сортировка JSON в PHP

Есть Json, нужно отсортировать по num

144
Создание уникальных id

Создание уникальных id

В коде, в цикле я задаю уникальные idНо они начинаются повторяться в БД, из-за неверных функций

144