1

file_get_contents() を使用して Web サイトの html を解析しようとしました。

私は自分のウェブサイトからコードを実行しました。

最初はうまくいきましたが、突然このエラーが表示されました:

Warning: file_get_contents(http://www.***.com/) [function.file-get-contents]: failed to open stream: HTTP request failed!

他の Web サイトを試したところ、問題なく動作しました。他の Web サイトからコードを実行したところ、正常に動作しました。

だから私はここで検索し、cURLコードを使用しました:

$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL,'http://www.***.com/');
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name');
$query = curl_exec($curl_handle);
curl_close($curl_handle);

しかし、それは空白のページを返すだけです。

コンテンツを取得しようとした Web サイトが、自分の Web サイトのドメインなどをブロックまたはブラックリストに登録したようです。

これから抜け出す方法はありますか??

4

2 に答える 2

3

接続がブロックされている理由を突き止めることができます:

  • IP ベース: 彼らはあなたのサーバーをブロックしました。
  • ユーザー エージェント ベース: あなたをボットとして識別するユーザー エージェントを送信します。
  • ボット ユーザー エージェントが気に入らない場合は、Google などの他の誰かのボットのふりをします ()
  • ボットをブロックする場合は、ブラウザに似たユーザー エージェントを送信します ()
  • ブラウザーとスクリプトを識別するその他のパラメーター。
于 2013-03-29T15:27:30.940 に答える
1

あなたのサーバーは他のサーバーにアクセスできません

おそらくDNSの問題、スペルミス、または他のサーバーがあなたのIPをブロックしています..

curl_error() は何と言っていますか?

ところで、 CURLOPT_CONNECTTIMEOUT 2 秒は通常非常に小さいです

于 2013-03-29T15:33:43.710 に答える