0

あなたが私を助けてくれることを願っています。サイトは現在オンラインで、問題なくアクセスできますが、なぜこれが機能しないのか理解できません。

file_get_contents()次のようなエラーをfopen()返します。

PHP Warning:  file_get_contents(http://www.hackforums.net): failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in /host/Users/Phizo/Desktop/stalker.php on line 29

この403を回避したかったので、cURLを取り上げ始めましたが、運もありませんでした。

$handle = curl_init();
$file = fopen('source.txt', 'w');

curl_setopt($handle, CURLOPT_URL, 'http://www.hackforums.net/');
curl_setopt($handle, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($handle, CURLOPT_HEADER, true);
curl_setopt($handle, CURLOPT_AUTOREFERER, true);
curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1');
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_FILE, $file);

curl_exec($handle);

print_r(curl_getinfo($handle));

curl_close($handle);
fclose($file);

次のエラーを出力します。

Fatal error: Maximum execution time of 30 seconds exceeded in D:\Hosting\6514439\html\zeonsglobal\admin\press_uploads\stalker.php on line 29
4

1 に答える 1

4

このコードは私のために機能します、あなたはあなたが望むものを達成するためにカスタムリクエストを実行する必要はありません。

$handle = curl_init();

curl_setopt($handle, CURLOPT_URL, 'http://www.hackforums.net/');
curl_setopt($handle, CURLOPT_HEADER, true);
curl_setopt($handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:13.0) Gecko/20100101 Firefox/13.0.1');
curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($handle);

var_dump($result);

curl_close($handle);

403を取得した可能性のある理由は、fopenが通過していたユーザーエージェントが原因でした。curlリクエストからユーザーエージェントを削除すると、403エラーも発生します。

curlオプションを追加したCURLOPT_RETURNTRANSFERので、を呼び出すと文字列で応答が返されますcurl_exec()

お役に立てば幸いです。

于 2012-07-03T20:17:21.207 に答える