2013-04-30 3 views
2

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

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

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

Box 1 (Linux):

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

Box 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

некоторая настройка на сервере изменилась, чтобы остановить вас от использования этого параметра. Попробуйте выполнить маскировку как известный пользовательский агент и отметьте – raidenace

+0

Вы можете увидеть 'http: // www.viewmag.com' в браузере? – hek2mgl

+0

1. Сайт не работает. 2. Они заблокировали вас. Вероятно, вы часто соскабливаете свой сайт, и вы, вероятно, не просили разрешения на это. – Sammitch

ответ

7
  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; 

?> 

и работает на моем тестовом сервере (ЦОД в Германии).

+0

Я играю с таймаутом без успеха (также ответы с моим браузером очень быстрые). На данный момент я думаю, что мой IP-сервер на самом деле может быть запрещен, что нечетно, потому что я буквально запускаю свой сценарий один раз в неделю и захватываю две html-страницы. – veerman

+1

@veerman, поэтому, возможно, попробуйте изменить агент пользователя. Установка агента на «cURL crawler» похожа на запрос о запрете :) – Kamil

+0

Спасибо, что нашли время проверить меня, это очень ценится. – veerman

1

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

+0

Это тоже моя догадка, я попробовал несколько UA, и на этом этапе предполагаем, что они блокируют весь трафик ping. – veerman

Смежные вопросы