Время ожидания cURL connect ()

У меня была успешная реализация cURL в течение последних нескольких месяцев без икоты; однако на прошлой неделе у меня внезапно возникла проблема с одним конкретным сайтом (www.viewmag.com). Я могу прекрасно посетить сайт (и разрешить его) в браузере, но cURL возвращает следующее:

* About to connect() to www.viewmag.com port 80 (#0) * Trying 205.178.145.65... * Timeout * connect() timed out! * Closing connection #0 

Для здравомыслия я попытался выполнить ping-сайт двумя разными блоками, но каждый пинг тайм-аут.

Вставка 1 (Linux):

 ping www.viewmag.com PING www.viewmag.com (205.178.145.65) 56(84) bytes of data. 

Вставка 2 (Windows):

 ping www.viewmag.com Pinging www.viewmag.com [205.178.145.65] with 32 bytes of data: Request timed out. Request timed out. Request timed out. Request timed out. 

Мой cURL выглядит следующим образом:

 $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, 'http://www.viewmag.com'); curl_setopt ($ch, CURLOPT_USERAGENT, 'cURL crawler'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt ($ch, CURLOPT_AUTOREFERER, true); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2); $html = curl_exec($ch); 

Есть ли у кого-нибудь мысли о том, почему cURL терпит неудачу и почему я мог бы посетить этот сайт в браузере, но не смог бы ping / cURL? заранее спасибо

  1. Может быть, ваш IP-адрес сервера запрещен на этом сайте?

  2. Может быть, попробуйте установить более длительный тайм-аут? Я посетил этот сайт, и он работает так медленно, что вам может потребоваться более 5 секунд.


Добавлено позже:

Похоже, ваш IP-адрес сервера запрещен.

Я попробовал это (его копия вашего кода, изменения в комментариях):

 <?php $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, 'http://www.viewmag.com'); // I changed UA here curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt ($ch, CURLOPT_AUTOREFERER, true); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2); $html = curl_exec($ch); // I added this echo $html; ?> 

и он работает на моем тестовом сервере (дата-центр в Германии).

По всей вероятности, они повысили уровень безопасности на своем сервере. Некоторые настройки на сервере изменились, чтобы остановить вас от использования этого параметра. Попробуйте маскировать как известный пользовательский агент. Pinging может не работать, потому что они только что удалили сервер ping, так что атаки, такие как Distributed Denial of Service (DDOS), могут быть сорваны. К сожалению, в этот момент невозможно определить, какая именно комбинация может или заставит ее работать. Вам нужно будет использовать проб и ошибок.