Перейти к содержимому

Фото
- - - - -

Парсинг сайта, PHP


  • Вы не можете создать новую тему
  • Please log in to reply
14 ответов в этой теме

#1 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 07 Март 2013 - 18:43

Такой вопрос.
Пытаюсь спарсить достаточно большой сайт. Скрипты работают, всё бы ничего, да на сайте стоит защита, которая периодически банит меня. Каждый раз приходится перезапускать рутер. Есть ли какой-то способ обойти эту защиту?
Есть предположение, что она каким-то образом понимает, что сайт читает скрипт. Кто с этим сталкивался? Есть ли решения?
Заранее признателен!
  • 0

#2 Akhenaton

Akhenaton
  • Постоялец
  • 8 033 сообщений

Отправлено 07 Март 2013 - 18:46

simonsays, А ты шлёшь заголовки типо ты браузер ? А то если нет, то сразу видно, что ты бот или нечто подобное. Некоторым сайтам ещё надо куки обязательно врубать. Всё это в курле конфигурируется (ну или чем ты там парсишь)
  • 0

#3 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 07 Март 2013 - 19:53

simonsays, А ты шлёшь заголовки типо ты браузер ? А то если нет, то сразу видно, что ты бот или нечто подобное. Некоторым сайтам ещё надо куки обязательно врубать. Всё это в курле конфигурируется (ну или чем ты там парсишь)


Я делаю при помощи file_get_contents()
$opts = array('http' => array('header' => "User-Agent:MyAgent/1.0\r\n"));
$context = stream_context_create($opts);

Этого, по всей видимости, мало?
  • 0

#4 Akhenaton

Akhenaton
  • Постоялец
  • 8 033 сообщений

Отправлено 07 Март 2013 - 20:56

Думаю мало. Почитай про CURL и всякие опции, которые там есть. http://stackoverflow...e-a-web-browser Пример. Или вот - http://www.seopher.c...when_using_curl Короче, читай, пробуй. Банить не должно, если всё настроено грамотно.
  • 0

#5 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 07 Март 2013 - 21:06

Думаю мало. Почитай про CURL и всякие опции, которые там есть. http://stackoverflow...e-a-web-browser Пример. Или вот - http://www.seopher.c...when_using_curl Короче, читай, пробуй. Банить не должно, если всё настроено грамотно.


Благодарю!
  • 0

#6 Enot ^)

Enot ^)
  • Пользователь
  • 666 сообщений
  • Откуда:Таллинн

Отправлено 07 Март 2013 - 21:47

ты его притормози, ваши краулеры-парсеры создают большую нагрузку отправляя много запросов за короткий промежуток времени. Мы таких баним исходя из колличества запросов в секунду.. сейчас прописали максимально 3 запроса за 1 секунду с одного айпи(привысил - htaccess бан) . Возможно ресурс который ты парсишь использует что-то подобное.
  • 0
Модератор! Прежде чем стирать мое сообщение, спроси у меня разрешения

#7 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 08 Март 2013 - 03:26

К сожалению, ни имитация браузера, ни задержка (пробовал 5 секунд после каждого запроса), не помогли... Видать, защита действительно хорошая.

Имитировать браузер пробовал через curl:
function set_curl($url) {
$header = array();
$header[] = 'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
$header[] = 'Cache-Control: max-age=0';
$header[] = 'Connection: keep-alive';
$header[] = 'Keep-Alive: 300';
$header[] = 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7';
$header[] = 'Accept-Language: en-us,en;q=0.5';
$header[] = 'Pragma: ';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729)');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}

Сообщение изменено: simonsays (08 Март 2013 - 03:27 )

  • 0

#8 Akhenaton

Akhenaton
  • Постоялец
  • 8 033 сообщений

Отправлено 08 Март 2013 - 09:04

simonsays, У тебя приём кукисов не включён. Т.е сайт не может использовать ни сессии, ничего. Так же у тебя нет реферера. Из-за этого тоже могут банить. а

Я бы посоветовал взять браузер Mozilla, поставить на него плагин (забыл название), который показывает все заголовки что шлются на сервер - просто детально просмотреть. Там же в этом плагине можно сэмулировать запрос. И посмотреть когда и какой ответ от сервера приходит. Тут надо просто посидеть и проанализировать, чего не хватает или что не так.
  • 0

#9 Inori

Inori

    Бедный студент

  • Постоялец
  • 1 956 сообщений

Отправлено 08 Март 2013 - 11:14

Посмотри через какой промежуток времени бан схватываешь, одинаковый ли он вообще (т.е. 30 мин парсинга = бан)? Если раброс большой, то вполне реально что там просто админ логи смотрит и по своему усмотрению банит Размещенное изображение
Пробуй делать рендомные промежутки от 5 секунд до 10 минут.

Сообщение изменено: Inori (08 Март 2013 - 11:14 )

  • 0

#10 tasol

tasol
  • Постоялец
  • 1 050 сообщений

Отправлено 08 Март 2013 - 11:53

Я бы посоветовал взять браузер Mozilla, поставить на него плагин (забыл название), который показывает все заголовки что шлются на сервер - просто детально просмотреть.


http live header
  • 0

#11 Akhenaton

Akhenaton
  • Постоялец
  • 8 033 сообщений

Отправлено 08 Март 2013 - 11:57

Да. Точно.
  • 0

#12 skill-A

skill-A

    Huge Cojones

  • Постоялец
  • 6 708 сообщений

Отправлено 08 Март 2013 - 18:27

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

http://pastebin.com/6DEj1rCk - файл с юзерагентами. списки бесплатных прокси можно составить самому.

лучше такие вещи делать через потоки, так как прокси всегда медленнее чем запрос без посредников.



а вообще надо смотреть что за сайт. был давно заказ, сайт огромный, хтмл ужасный, кодировки глючат, я написал владельцам и дали доступ к их базе реад-онли. но там было взаимовыгодное сотрудничество с поставщиком.
  • 0

улыбнись


#13 simonsays

simonsays
  • Пользователь
  • 835 сообщений

Отправлено 10 Март 2013 - 00:58

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

http://pastebin.com/6DEj1rCk - файл с юзерагентами. списки бесплатных прокси можно составить самому.

лучше такие вещи делать через потоки, так как прокси всегда медленнее чем запрос без посредников.



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


спасибо за массив! а посоветуешь, где лучше всего прокси смотреть (платные или бесплатные)? в списках, которые находил я в нете, работают только 9 из 10.
  • 0

#14 alex-pro

alex-pro
  • Пользователь
  • 167 сообщений

Отправлено 10 Март 2013 - 01:42

за рабочий свежачок придется заплатить, это если не хочется писать еще один парсер но уже для прокси :)
http://hideme.ru/order/
  • 0

TeeKohv.ee - Интернет-магазин натурального чая и кофе  | 
Рассыпные премиум органические чаи с натуральными добавками, ароматизированный кофе. 


#15 skill-A

skill-A

    Huge Cojones

  • Постоялец
  • 6 708 сообщений

Отправлено 10 Март 2013 - 02:01

simonsays, несколько лет назад когда помогал знакомым что-то настраивать на компьютерах у меня была своя небольшая ботнет-сеть.

сейчас покупаю прокси. но прокси это крайняя мера, в большинстве случаев хватает менять юзер-агент.

если живешь в доме где есть много точек вайфай, заказываешь специальный адаптер и антенну к нему, ломаешь сети через backtrack или aircrack. любой wpa сдается максимум за несколько суток. и пользуешься в своих целях.
  • 0

улыбнись