2016-09-16 4 views
-2

Ich versuche, den Inhalt einer Seite über cURL + PHP zu bekommen, aber es gibt mir nichts zurück. Wenn ich die URL mit google.com ersetze, funktioniert es.Was bedeutet dieses debug-worse-info?

Die angeforderte Seite ist .htaccess-geschützten

das ist mein PHP-Kodex

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

dies ist die ausführliche-Info:

* 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 

kann mir jemand sagen, was falsch ist? ?

Antwort

1

HTTP-Statuscode 301 bedeutet, dass die URL der Seite, für die Sie Inhalte abrufen möchten, in eine neue URL verschoben wurde. Sie können den Inhalt dieser Website nicht mit der alten URL abrufen, aber Sie wurden benachrichtigt, dass die Website jetzt über die Weiterleitungs-URL erreichbar ist.

Wenn möglich, rufen Sie die Weiterleitungs-URL ab, indem Sie (über den Browser) zur alten URL navigieren und sehen, wohin Sie weitergeleitet werden. Dann nutzen Sie diese neue, umgeleitet URL in Ihrem curl auf dieser Linie:

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

cURL stoppt denn soweit sie betroffen ist, die Arbeit ist erledigt. Es hat die angeforderte Seite abgerufen. Die Antwort, die Sie sehen, ist der Header 301 permanent redirect. Wenn Sie die URL, die Sie ursprünglich für Ihre cURL-Anfrage in einem Browser angegeben haben, besucht haben, folgt sie automatisch der URL zum angegebenen Ziel. cURL wird der Weiterleitung nicht automatisch folgen.

Sie möchten wahrscheinlich die Option CURLOPT_FOLLOWLOCATION verwenden. The manual beschreibt dies als:

Ein langer Parameter auf 1 gesetzt, um die Bibliothek erzählt jeden Ort zu folgen: Header, der der Server als Teil eines HTTP-Header in einer 3xx Antwort sendet. Der Location: -Header kann eine relative oder eine absolute URL angeben, der gefolgt werden soll.

Sie würden es in PHP wie folgt implementieren:

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

Hier the documentation für diese cURL Option.


Wenn Sie diese Option nicht verwenden möchten, können Sie auch manuell Ihre Seite umleiten, indem die Position in der 301 HTTP-Statuscode Antwort angegeben nehmen und mit diesem als Ihre URL statt.

Verwandte Themen