Обойти аутентифицированную XML-страницу для анализа с помощью PHP? - PullRequest
0 голосов
/ 22 сентября 2010

Как я могу разобрать эту страницу XML http://evercore:david10@feeds.outgard.net/www.sportsbook.com/trends/203.xml используя PHP simplexml? Я получаю сообщение об ошибке, которое не может быть загружено.

Спасибо, S

Ответы [ 2 ]

2 голосов
/ 22 сентября 2010

Вам необходимо подделать агента, чтобы он мог принимать запросы.

Используйте этот код PHP, чтобы получить результат:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://feeds.outgard.net/www.sportsbook.com/trends/203.xml');
curl_setopt($ch, CURLOPT_GET, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_USERPWD, 'evercore:david10');
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT     5.0)"); 

$data = curl_exec($ch);
echo $data;

// Process data with simple XML

curl_close($ch); 
1 голос
/ 22 сентября 2010

Играл с этим до тех пор, пока @vassilis не указал, что пользовательский агент использует сниффинг, рассматривайте это как еще один путь к той же цели, очки переходят к @ vassilis.

<?php
$username = 'evercore';
$password = 'david10';
$opts = array(
    'http' => array(
        'method'  => 'GET',
        'header'  => sprintf("Authorization: Basic %s\r\nUser-Agent: Foobar!", base64_encode($username.':'.$password))
    )
);

$context = stream_context_create($opts);
libxml_set_streams_context($context);
$xml =  new SimpleXMLElement(
        "http://feeds.outgard.net/www.sportsbook.com/trends/203.xml",
        null,
        true);
var_dump($xml);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...