人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHP5 XML API Wikipedia に関する質問です。

Wikipediaの記事を取得するAPIがあります。
http://www.in-vitro.jp/blog/index.cgi/WebService/20060509_01.htm
これを参考に、PHPで記事を取得したいのですがうまくいきません。


http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/AIBO
このURLにブラウザでアクセスするとXMLの文章が表示されます。

ただ、
$wiki_feed = "http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/AIBO";
$xml = file_get_contents($wiki_feed);
これでXML文章を丸ごと変数$xmlに格納しようとすると、PHPから以下のようなエラーが返ってきます。

failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

ブラウザからのアクセスは許可されて、PHPからのアクセスは拒否されているのでしょうか。
他のXMLは今まで普通に取得することが出来ていました。
例えばアマゾンのAPIやブログのRSSなどです。


解決策やエラーの原因等なんでも構いませんので、どなたかよろしくお願いいたします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:403 API HTTP open PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● y-kawaz
●35ポイント

試してみましたが、どうも特定の User-Agent を弾くようになっているようですね。

以下のように file_get_contents で使われる User-Agent を適当な値に偽装することで取得できました。

<?php
ini_set("user_agent", "User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)");
echo file_get_contents("http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/AIBO"); 
?>

2 ● bayan
●35ポイント

クローラ対策でしょうか、HTTPリクエストヘッダの User-Agent を見て排除しているようです。


手許の環境で file_get_contents を使ったところ、User-Agent が空になっているみたいで、それだと 403 Forbidden になりました。


以下のようして、User-Agent を設定したらXMLを取得できました。

// IEのフリをする?

ini_set('user_agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');

$wiki_feed = "http://ja.wikipedia.org/wiki/%E7%89%B9%E5%88%A5:Export/AIBO";

$xml = file_get_contents($wiki_feed);

■URL

http://phpspot.org/blog/archives/2007/09/file_get_conten.html

「file_get_contents UserAgent」 でググると最初に来る


http://hain.jp/index.php/tech-j/2007/09/03/file_get_contents%E3%...

PHP5であれば stream_context_create 関数が使えるそうです。

ini_set の第二引数が User-Agent: から始まっているのは間違っていると思いマス。


関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ