私はかなり新しくcURLであり、短時間しか使用していません。 私の問題は、cURLを使用してページのコンテンツ(file_get_content()
が機能しない)を取得したいということです。残念ながら、問題のサイトにはボットの保護機能があります。つまり、最初にサイトにアクセスしたときにボットの有無をチェックします。あなたがボットでないなら、それは絶対パス(私が推測する)であなたを実サイトにリダイレクトします。 このサイトをcURLで読み込むと、サーバーアドレスにパスが追加されます。curlはリダイレクトされたURLをブラウザのアドレス行に入れます。
例: 私のサーバーには、アドレスがhttp://examplepage.com/
です。cURLは、URLにリダイレクトされたパスを追加します。 http://examplepage.com/absolute/path?with=parameters
コンテンツを取得しようとする元のページでは、そのようなパスがあるので動作しますが、私はそうしません(私はtheireサイトのいくつかのHTMLコンテンツを必要としています) 。ここで
は私のコードは、これまでのところです:
<?php
/* getting site */
$website = "https://originalsite.com/?some=parameters";
$redirectURL;
function curl_download($url) {
//initialize curl handler
$c = curl_init();
// Include header in result? (0 = yes, 1 = no)
curl_setopt($c, CURLOPT_HEADER, 1);
//set url to download
curl_setopt($c, CURLOPT_URL, $url);
// follow redirection
curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);
//set referer
curl_setopt($c, CURLOPT_REFERER, "https://originalsite.com/");
// User agent
curl_setopt($c, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
// Should cURL return or print out the data? (true = return, false = print)
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
// Timeout in seconds
curl_setopt($c, CURLOPT_TIMEOUT, 10);
// Download the given URL, and return output
$output = curl_exec($c);
// Close the cURL resource, and free system resources
curl_close($c);
return $output;
}
$content = curl_download($website);
echo $content;
?>
ので、少なくともそれはそれは私がボットやないですかどうかをチェックするサイトを入力します、その後、それはサイトに私をリダイレクトする(またはそれは、努める)。
私はインターネットとStackOverflowを検索しましたが、私の問題に対する答えを見つけることができませんでした。
'$ output'を' print_r() 'するとどうなりますか? – KDOT
何も違いはありません。 – CeyKie
まあ、カプセル化されたエラーか、 '$ output'の何らかの応答を持つことになります。 '$ output'の値が何であるかを追加できますか?全体のアイデアは、要求をデバッグすることです。 – KDOT