2016-09-16 5 views
-2

Я пытаюсь получить содержимое страницы через cURL + PHP, но это ничего мне не возвращает. Когда я заменяю URL-адрес google.com, он работает.Что означает эта debug-verbose-info?

запрашиваемой страница Htaccess защищенного

это мой PHP-код

$login = 'admin'; 
$password = 'xxxxx'; 

$ch = curl_init();   
curl_setopt($ch, CURLOPT_URL, $_REQUEST['url']);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  

curl_setopt($ch, CURLOPT_VERBOSE, true); 

$verbose = fopen('bla.txt', 'w+'); 
curl_setopt($ch, CURLOPT_STDERR, $verbose); 

curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
curl_setopt($ch, CURLOPT_USERPWD, "$login:$password"); 

$output = curl_exec($ch);   
curl_close($ch); 

echo $output; 

это многословный-инфо:

* Hostname was NOT found in DNS cache 
* Trying xxx.xxx.xxx.xxx... 
* Connected to xxxxxxxxx (xxx.xxx.xxx.xxx) port 80 (#0) 
* Server auth using Basic with user 'admin' 
> GET /mypage.php HTTP/1.1 

Authorization: Basic YWRtaW46cXdlcnR6dTE= 

Host: xxxxxxxxxxxxxx.de 

Accept: */* 



< HTTP/1.1 301 Moved Permanently 

< Date: Fri, 16 Sep 2016 13:44:28 GMT 

* Server Apache is not blacklisted 
< Server: Apache 

< X-Powered-By: PHP/5.4.45 

< Expires: Thu, 19 Nov 1981 08:52:00 GMT 

< Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 

< Pragma: no-cache 

< Set-Cookie: PHPSESSID=23cd31457358a63a1b32b86992e906bf2; path=/; HttpOnly 

< Location: xxxxxxxxxxxxxxxxxxxxxxx 

< Content-Length: 0 

< Connection: close 

< Content-Type: text/html; charset=UTF-8 

< 

* Closing connection 0 

может кто-то сказать мне, что случилось? ?

ответ

1

Код статуса HTTP 301 означает, что URL-адрес страницы, для которой вы пытаетесь получить контент, переместился на новый URL-адрес. Вы не можете получить содержимое этого веб-сайта с использованием старого URL-адреса, но вы получили уведомление о том, что веб-сайт теперь доступен по URL-адресу переадресации.

Если возможно, получите URL-адрес переадресации, выполнив навигацию (через браузер) до старого URL-адреса и посмотрите, к чему вы перенаправлены. Затем используйте этот новый, перенаправляется URL в вашем завитком на этой линии:

curl_setopt($ch, CURLOPT_URL, $newURL); 
2

завиток останавливая, потому что, насколько это касается, работа сделана. Он отобрал запрашиваемую страницу. Ответ, который вы видите, - это 301 постоянный заголовок перенаправления. Если вы посетили URL-адрес, который вы первоначально указали для вашего запроса cURL в браузере, он автоматически будет следовать за URL-адресом указанного адресата. cURL автоматически не будет перенаправляться.

Возможно, вы захотите использовать опцию CURLOPT_FOLLOWLOCATION. The manual описывает это как:

Длинный набор параметров 1 указывает библиотеку, чтобы следовать любой Расположение: заголовок, сервер отправляет как часть HTTP заголовка в ответе 3xx. Заголовок Location: может указывать относительный или абсолютный URL-адрес.

Вы бы реализовать его в PHP, как это:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

Вот the documentation для этого Curl вариант.


Если вы не хотите использовать эту опцию, вы можете также вручную перенаправить страницу, принимая положение, заданное в 301 код ответа HTTP статус и использовать это в качестве URL вместо.

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