Я попытался использовать file_get_contents и cURL, чтобы получить содержимое веб-сайта, я также попытался открыть тот же сайт с помощью Lynx и не смог получить контент. Я получил 406 недопустимых, кажется, что сайт проверяет, пользуюсь ли я браузером. Есть ли работа?
Вероятно, он ожидает, что пользовательский агент будет веб-браузером. Вы можете легко установить это с помощью cURL:
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
Где $useragent
– это строка, которую вы хотите использовать для пользовательского агента. Попробуйте его с некоторыми распространенными для основных браузеров и посмотрите, поможет ли это. На этой странице перечислены некоторые общие пользовательские агенты .
//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);
Возможно, вам нужно установить несколько 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);