@Kirill-Gorelov
С ума с IT

Парсинг php + curl отдает 403 ошибку?

Зачастую, когда парсю сайт, мне в ответ приходит 403 ошибка.
Иногда понимаю как исправиться иногда нет.

К примеру моя функция, которая отдает 403 ошибку.
И ссылка, на которой я оттачиваю свои навыки.
statonline.ru/domains?tld=ru
function poster($url){
$ua = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13';
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_HEADER, true);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_USERAGENT, $ua);
curl_setopt($ch, CURLOPT_COOKIE, 'NID=67=pdjIQN5CUKVn0bRgAlqitBk7WHVivLsbLcr7QOWMn35Pq03N1WMy6kxYBPORtaQUPQrfMK4Yo0vVz8tH97ejX3q7P2lNuPjTOhwqaI2bXCgPGSDKkdFoiYIqXubR0cTJ48hIAaKQqiQi_lpoe6edhMglvOO9ynw; PREF=ID=52aa671013493765:U=0cfb5c96530d04e3:FF=0:LD=en:TM=1370266105:LM=1370341612:GM=1:S=Kcc6KUnZwWfy3cOl; OTZ=1800625_34_34__34_; S=talkgadget=38GaRzFbruDPtFjrghEtRw; SID=DQAAALoAAADHyIbtG3J_u2hwNi4N6UQWgXlwOAQL58VRB_0xQYbDiL2HA5zvefboor5YVmHc8Zt5lcA0LCd2Riv4WsW53ZbNCv8Qu_THhIvtRgdEZfgk26LrKmObye1wU62jESQoNdbapFAfEH_IGHSIA0ZKsZrHiWLGVpujKyUvHHGsZc_XZm4Z4tb2bbYWWYAv02mw2njnf4jiKP2QTxnlnKFK77UvWn4FFcahe-XTk8Jlqblu66AlkTGMZpU0BDlYMValdnU; HSID=A6VT_ZJ0ZSm8NTdFf; SSID=A9_PWUXbZLazoEskE; APISID=RSS_BK5QSEmzBxlS/ApSt2fMy1g36vrYvk; SAPISID=ZIMOP9lJ_E8SLdkL/A32W20hPpwgd5Kg1J');

curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_MAXREDIRS, 20);
// curl_setopt($ch,CURLOPT_POST, true);
// curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);

$result = curl_exec($ch);
$last = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
curl_close($ch);
return array($result,$last);
}
  • Вопрос задан
  • 2319 просмотров
Пригласить эксперта
Ответы на вопрос 3
neuotq
@neuotq
Прокрастинация
Сегодня парсинг дело нетривиальное, особенно если это относительно крупные/известные проекты, которые не очень хотят чтобы их данные парсили. Короче говоря у многих на стороне сервера стоят системы которые определяют таких ботов, я думаю в подавляющем большинстве ошибка 403 возникает именно в случае бана( возможно временного), на второе место я бы оставил ошибки авторизации, если целевой сайт ее требует.
Короче говоря, твой план такой:
- делаешь набор идентификаторов бразуеров, а не только один используешь, тоже касается кукисов/автьоризации.
- покупаешь несколько ip адресов на сервере (и вообще привыкни что это дело придется постоянно менять и отказывается от засвеченных), и делаешь запросы со случайным выбором из своего пула адресов.
- так и живешь ;-)
Ответ написан
AlexXYZ
@AlexXYZ
O Keep Clear O
Доступ к сайтам не из браузера штука тонкая. Curl достаточно универсальная "штука" для парсинга, но совершенно неудобная "штука" для аутентификации. Даже если вы пользуете его из под php. Позвольте посоветовать вам дополнить парсинг curl-ом дополнительным инструментом, помогающим аутентифицировать любые запросы (хоть oauth, хоть basic, хоть kerberos) - это fiddler (www.telerik.com/fiddler). С его помощью вы можете посмотреть заголовки/куки, которые используются при доступе к сайту. Потом настраиваете curl на работу через fiddler, а с помощью встроенного в fiddler JavaScript .net дописываете к запросам curl необходимые заголовки/куки. Я так "проходил" смс-аутентификацию, например.
Ответ написан
dimonchik2013
@dimonchik2013
non progredi est regredi
куки замени на cookiefile, две опции - file и jar
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы