SimpleXML用户代理

时间:2011-11-13 19:51:18

标签: php

我正在尝试使用PHP中的simpleXML来提取RSS提要。

rss网站说,如果你没有正确的用户代理,你将被阻止。

如何设置用户代理?

4 个答案:

答案 0 :(得分:2)

您可以使用cUrl检索Feed,然后使用simplexml_load_string函数从包含内容的字符串创建DOM。使用cUrl,您可以通过以下方式设置所需的用户代理:

$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

答案 1 :(得分:1)

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);

答案 2 :(得分:0)

您可以使用CURLOPT_USERAGENT参数{/ 3}}来执行此操作。

<?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);
?> 

答案 3 :(得分:0)

总之?您发送用户代理标头。

答案很长,你需要使用PHP的一种方法来获取HTTP上的内容(可能是curl)来启动连接,发送预期的头文件并下拉你试图以字符串形式访问的XML文件。完成此操作后,使用您选择的XML解析器解析检索到的数据。

例如,要让Curl构成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)');