1

ウェブサイトからデータを取得したい。しかし、それは私に禁じられていることを示しています。このコードを見てください:

<?php
$link='http://www.sitedossier.com/site/wikipedia.org';
$so=file_get_contents($link);
echo ($link);
echo "</br>";
echo ($so);
?>

しかし、それは禁じられていることを示しています。スクリプトの結果は次のとおりです。

http://www.sitedossier.com/site/wikipedia.org
Forbidden.

しかし、メインサイト名のみを指定した場合:http://www.sitedossier.comデータを取得するため。それはつかんでいます。

ここでの問題は何ですか?私のスクリプトが間違っているか、サイトでスクリプトが禁止されていますか?もしそうなら、どうすればそれをバイパスできますか?

ありがとう

4

2 に答える 2

1

ボットを好まないサイトもあります。ある場合は、cURL を使用してこれを回避できます。

<?php
$ch = curl_init('http://www.sitedossier.com/site/wikipedia.org');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20121221 Firefox/20.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.sitedossier.com');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

$data = curl_exec($ch);
echo $data;
?>

編集:それは今動作します。サイトが必要とする Cookie を設定していると思います。

于 2012-12-25T05:51:07.450 に答える
0

その Web サイトには、file_get_contents送信しない User-Agent 文字列が必要です。

および関連する関数を使用fsockopenして、正しいヘッダーが送信されるようにします。

于 2012-12-25T05:48:01.387 に答える