質問: file_get_html($sUrl); ``` ■現象 先日、スクレイピングをしていたサーバで、異変に気づいたので、調べてみると、file_get_htmlするタイミングでNULLが帰ってくるようになりました。 ログを見ると、相手先サーバからブロックされている形跡がありました。 ■試したこと 試しに、プログラム全体を別サーバへ設置し、動作させると問題なくデータ取得ができました。 ■質問 そこで、有識者様にお聞きしたいのですが、simple_html_domで、実行時の環境変数(ユーザエージェント?)を指定し、違うサーバから動作しているようにセッティングすることはできるでしょうか? サーバを変更するとうまくいくので、環境変数ではなく、実行サーバのIPアドレスをチェックされているのかもしれませんが、なんとか回避する方法を模索しています。(できれば別サーバは使わない方向です) 以上になります。どうぞよろしくお願いいたします。
回答: ソースを見る限り、file_get_contents()を使用しているので、UAの指定はfile_get_htm()の第三引数の$contextを指定してやれば行けそうです。 [PHP]file_get_contents()でユーザエージェントを偽装する ただ、IPで制限されている可能性が非常に高いと思われるので、あんまり効果は無いと思いますし、一時的にあったとしてもすぐに制限されることでしょう。 相手側サーバがブロックしているということは、相手はアタックされていると認識していることなので、小手先の対策ではなく、**なぜブロックされたか**ということを法令や相手サイトのビジネスモデル、ポリシー、利用規約などと照らし合わせて考える必要があります。