file_get_contents и CURL не могут открыть определенный веб-сайт - PullRequest
1 голос
/ 04 января 2011

Я пытался использовать file_get_contents и cURL для получения содержимого веб-сайта, я также пытался открыть этот же сайт с помощью Lynx и не смог получить содержимое.Я получил 406 Not Acceptable, кажется, что сайт проверяет, использую ли я браузер.Есть ли работа вокруг?

Ответы [ 3 ]

2 голосов
/ 03 апреля 2012
    //make a call the the webpage to get his handicap
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.golfspain.com/portalgolf/HCP/handicap_resul.aspx?sLic=CB00693474");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt($ch, CURLOPT_REFERER, "http://google.com" );
curl_setopt($ch, CURLOPT_HEADER, TRUE );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
$header = array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
    'Accept-Language: en-us;q=0.8,en;q=0.6'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$html = curl_exec($ch);
curl_close($ch);

$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML($html);
$xml = simplexml_import_dom($doc);
2 голосов
/ 04 января 2011

Вероятно, пользовательский агент будет веб-браузером. Вы можете легко установить это, используя cURL:

curl_setopt($ch, CURLOPT_USERAGENT, $useragent);

Где $useragent - строка, которую вы хотите использовать для пользовательского агента. Попробуйте его с некоторыми распространенными для основных браузеров и посмотрите, поможет ли это. На этой странице перечислены распространенных пользовательских агентов .

0 голосов
/ 04 января 2011

Может быть, вам нужно установить еще несколько HTTP-заголовков, например, «настоящий» браузер. С cURL:

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13');
$header = array(
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
    'Accept-Language: en-us;q=0.8,en;q=0.6'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
...