PHPでsimpleXMLを使用してRSSフィードを取得しようとしています。SimpleXMLユーザエージェント
rssのウェブサイトには、正しいユーザーエージェントがないとブロックされてしまうというメッセージが表示されます。
ユーザエージェントを設定するにはどうすればよいですか?
PHPでsimpleXMLを使用してRSSフィードを取得しようとしています。SimpleXMLユーザエージェント
rssのウェブサイトには、正しいユーザーエージェントがないとブロックされてしまうというメッセージが表示されます。
ユーザエージェントを設定するにはどうすればよいですか?
cUrlを使用してフィードを取得し、simplexml_load_string関数を使用して、コンテンツを含む文字列からDOMを作成できます。カールを使用して、あなたはこのようにしたいユーザーエージェントを設定することができます。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
$content = curl_exec($ch);
curl_close ($ch);
$dom = simplexml_load_string($content);
をそして、あなたはここで良い例と完全なコードを取得することができます:http://www.php.net/manual/en/ref.curl.php#93163
あなたはCURLOPT_USERAGENT
引数を使用してcURLで行うことができます。
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/rss.xml");
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); //$user_agent would contain your agent.
$xml = curl_exec($ch); //xml stored in the variable $xml
curl_close($ch);
?>
PHPは、あなたが使用して(一時的な方法で)設定することができuser_agent
設定があります。
ini_set('user_agent', 'user_agent_goes_here');
それはあなたのphp.ini
でもあります(あなたはここからそれを変更した場合、それは永久になります)
例:要するに
//Setting the user agent as Firefox 9.0
ini_set('user_agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:9.0) Gecko/20100101 Firefox/9.0');
$xml = file_get_contents($rssfeed);
$simplexml = simplexml_load_string($xml);
?ユーザーエージェントヘッダーを送信します。
長い答えは、接続を開始し、予想されるヘッダーを送信し、アクセスしようとしているXMLファイルを文字列としてプルダウンするために、HTTP(おそらくカール)でコンテンツを取得するPHPの方法の1つを使用する必要がある。これを実行したら、取得したデータを任意のXMLパーサーで解析します。
例えば、カールは、IE 6のふりをするために取得します
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/6.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');
私はこれを使用している場合は、変更は永続的ですか? – David19801
'php.ini'でそれを変更した場合、それは永久になります。そうでなければ、いいえです。設定オプションは、スクリプトの実行中にこの新しい値を保持し、スクリプトの終了時に復元されます。 " – Nasreddine
興味深い発見、今はどうしますか?実際にこれを使用するリクエストを作成しますか?私はこれを試しても動作しません。 – Mob