2016-08-06 5 views
1

Это мой PHP код:Почему использование cURL дает мне 403 запрещенную ошибку при работе file_get_contents?

$ch = curl_init('http://www.iphonehacks.com/2016/08/jailbreak-iphone-ipad-ios-9-3-3-pangu-1-1.html'); 
curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

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

echo $data; 

Код выше, дает мне ошибку 403, но когда я использую file_get_contents, я могу повторить всю веб-страницу.

$data = file_get_contents('http://www.iphonehacks.com/2016/08/jailbreak-iphone-ipad-ios-9-3-3-pangu-1-1.html'); 

echo $data; 

Не могли бы вы указать, что случилось с методом cURL. Я знаю, что могу использовать file_get_contents, но мне интересно узнать, что пошло не так в первом случае, чтобы лучше понять cURL.

ответ

2

Ваш неверный номер CURLOPT_USERAGENT. Измените его на:

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"); 

Вы не должны использовать префикс "User-Agent:" на CURLOPT_USERAGENT вариант. Сайт отвергает его, потому что он получал следующий заголовок запроса:

User-Agent: User-Agent: Mozilla/5.0 (Windows NT 10,0; WOW64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/51.0.2704.103 Safari/537,36

Вместо:

User-Agent: Mozilla/5.0 (Windows NT 10,0; WOW64) AppleWebKit/537,36 (KHTML, как Gecko) Chrome/51,0. 2704.103 Сафари/537.36

+1

Спасибо, это сработало. На самом деле, ни один другой сайт не дал никаких ошибок, поэтому я понятия не имел, что я неправильно настраивал пользовательский агент. Наверное, им было все равно. –

+0

сайт глуп, вероятно, он пытается «бороться со спамом», блокируя неизвестный пользовательский агент. который действительно трудно, практически невозможно сделать правильно, и очень легко сделать неправильно, учитывая, сколько пользовательских агентов действительно там; https://en.wikipedia.org/wiki/List_of_web_browsers – hanshenrik