2015-04-02 1 views
2

Я пытаюсь использовать PHPCrawl (http://sourceforge.net/projects/phpcrawl/), чтобы тралить веб-сайт, переданный по HTTPS.PHPCrawl не создает SSL-сокет

я могу видеть, что есть поддержка SSL в классе PHPCrawlerHTTPRequest (метод openSocket):

// If ssl -> perform Server name indication 
    if ($this->url_parts["protocol"] == "https://") 
    { 
    $context = stream_context_create(array('ssl' => array('SNI_server_name' => $this->url_parts["host"]))); 
    $this->socket = @stream_socket_client($protocol_prefix.$ip_address.":".$this->url_parts["port"], $error_code, $error_str, 
              $this->socketConnectTimeout, STREAM_CLIENT_CONNECT, $context); 
    } 

Проблема не заключается в вызове stream_socket_client - хотя она возвращает нулевое error_code, и не error_str, это -> сокет по-прежнему является ложным.

В документации по методу говорится следующее:

Если возвращенное значение в егто равно 0 и функция возвращается FALSE, то это является показателем того, что произошла ошибка до подключения() вызова.

(см http://php.net/manual/en/function.stream-socket-client.php)

Так что я пытался использовать пример, приведенный в разделе комментариев, чтобы изменить контекст потока, используя «stream_context_set_option», чтобы установить verify_host и verify_peer ложь - ни один из которых, кажется, имеют какой-либо эффект.

Я не очень опытный в PHP или тонкостях веб - Кто-нибудь знает как:

  • В каком состоянии (в частности) может вызвать этот вызов на провал? OR
  • Обходной путь для решения проблемы?

Следует отметить, что я использую Facebook (HTTPS) в качестве тестового сервера.

ответ

1

Я нашел этот вопрос -

  • PHP версии 5.6.x очередь экспертной проверки по умолчанию, и, видимо, necesarry сертификат не найден иногда (see this bug report)

  • обходной путь должен вернуться к версии PHP до 5.6

+0

не нужно отбрасывать версию PHP. См. [Эту ссылку] (https://sourceforge.net/p/phpcrawl/bugs/86/) для нескольких решений. Альтернативно просто перезапишите PHPCrawlerHTTPRequest.class.php с кодом, найденным здесь - https://github.com/merzilla/phpcrawl/blob/fix-php56-ssl-problem/libs/PHPCrawlerHTTPRequest.class.php#L537 – Ben

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