2015-12-24 3 views
0

file_get_contents() возвращает правильное содержимое файла на www.akaar.org, но не на www.ptsda.org.file_get_contents ничего не возвращает на входе html

Главное отличие состоит в том, что akaar.org является проектом php и ptsda.org является html.

В основном я создаю веб-искатель в php. Он не просканировал этот конкретный сайт, когда я успешно просканировал по меньшей мере 150 сайтов.

+0

Так что я понял, что на их сервере есть безопасность. Но у меня есть идея, есть ли способ сохранить файл и передать его моему поисковому роботу? : P –

ответ

0

Наконец-то нашли решение.

Я сохранил страницу в формате HTML и внес вклад в мой поисковый робот.

<?php 

    $contents = file_get_contents("The downloaded HTML file"); 
    print_r($contents); 
?> 

УСПЕХ :)

Спасибо всем за ответ.

1

http://www.ptsda.org/

Является ли сайт вспышки, которые нельзя просканировать, что легко, как HTML бы enter image description here

2

ptsda.org возвращается этот 403 (запрещенное) ошибка:

failed to open stream: HTTP request failed! HTTP/1.1 403 ModSecurity Action 

Так это похоже, что у них есть защита Apache ModSecurity, чтобы остановить их контент от этого.

+0

Так все равно я мог? –

2

Здесь причина, по которой некоторые веб-сайты не позволяют сканировать.

  1. file_get_contents('http://www.akaar.org/') Вы можете получить результат с веб-сайта, что означает, что сервер, на котором размещен этот веб-сайт, не настроен файловым сервером для блокировки запросов на обход.
  2. file_get_contents('http://www.ptsda.org/') В этом случае вы получите HTTP request failed! HTTP/1.1 403 ModSecurity в качестве вывода, что означает, что сервер настроен с использованием межсетевого экрана, и вы не получите ответ. Узнайте больше о ModSecurity.

Вот решение, попробуйте использовать CURL вместо file_get_contents. Примечание. Это работа.

<?php 
    $curl_handle=curl_init(); 
    curl_setopt($curl_handle, CURLOPT_URL,'http://www.ptsda.org/'); 
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); 
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($curl_handle, CURLOPT_USERAGENT, 'ptsda'); 
    $query = curl_exec($curl_handle); 
    curl_close($curl_handle); 
    //print_r($query); 
?> 
+0

Так что я могу? –

+0

Обновленный ответ, используйте CURL и посмотрите, работает ли он – Nikhil

+0

Работает ли он на u? Это не для меня. А также см., Что я обновил свой вопрос. Спасибо u .. –

2

Ваша проблема заключается в том, что хозяин ptsda.org возвращается этот 403 (Forbidden) ошибка:

file_get_contents("http://www.ptsda.org"): failed to open stream: HTTP request failed! HTTP/1.1 403 ModSecurity 

Это показывает, что они имеют защиту в месте, чтобы остановить их содержимое из обхода ботов. You может иметь возможность обойти это, установив строку useragent в PHP (See this question).

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