- 2011-04-21 (木) 18:26
- 技術
PHPでFeedをお手軽に扱えるSimplePieですが、ときたま謎のエラーが発生します。
僕が最近ぶつかったエラーは
というエラーでした。
しかたないので、 $feed->force_feed(ture); すると…
こんなエラーが出ます。ふしぎですねー
しかし、wgetした後で localhost/hoge.xml をパースすると成功するのです。さらに。適当な別のサーバーに echo file_get_contents(destination_addr); とか書いたPHPスクリプトを置いて踏み台にすれば、これでも動いちゃいます。本当に不思議です。
結局、tcpdumpしたりtelnetで直接叩いたりした結果、UserAgentが悪さをしてることが分かりました。というのも、SimplePieはご丁寧に
SimplePie/1.3-dev (Feed Parser; http://simplepie.org; Allow like Gecko) Build/20110421044730
なんてUserAgentを投げているわけです。
試しに
$feed->set_useragent(”simplepie”);
としたら、ばっちり動きました。やれやれ。
ちょっとコレだと怖いので念のため
Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; ja-jp) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
等、他のブラウザのフリをするのもアリです。
ちなみに、デフォルトではHostヘッダも投げてないみたいなので、それで不具合が起きるかも知れません。curlが上手に世話してくれてるかもしれないのでハッキリしたことは言えませんが。
その場合は File.php の100行目付近に、curl_setoptが沢山あるのでcurlが上手に世話してくれてるかも?)
そこに適宜書くと良いと思われます。
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://blog.s-satoshi.net/tech/simplepie_ua_error/trackback/
- Listed below are links to weblogs that reference
- SimplePieがパースエラーを吐くときの対策 from S.Satoshiのブログ