С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP: сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/48: Рейтинг темы: голосов - 48, средняя оценка - 4.73
 Аватар для dalay_lama
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495

Бан при попытке получить страницу через Curl

03.10.2014, 13:11. Показов 9234. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Прошу помочь разобраться с проблемкой, ситуация такая: стоит задача парсинга сайта - http://elibrary.ru. Чтобы скачать с сайта страницу использую curl. Опции курла такие:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function post_content ($url,$post_data = NULL)
{
  $ch = curl_init( $url );
  curl_setopt($ch, CURLOPT_URL, $url);
  if (isset($post_data)) {
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($ch, CURLOPT_POST, true);
  }
  curl_setopt($ch, CURLOPT_TIMEOUT, 120);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_COOKIEJAR, "elib_cookie.txt");
  curl_setopt($ch, CURLOPT_COOKIEFILE,"elib_cookie.txt");
  curl_setopt($ch, CURLOPT_FAILONERROR, false);
  curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_HEADER, false);
  
  $result['content'] = curl_exec($ch);
  $result['errno'] = curl_errno($ch);
  $result['errmsg']  = curl_error($ch);
  $result['header']  = curl_getinfo($ch);
  curl_close($ch);
  return $result;
}
Проблема вот в чём: с моего компа все страницы скачиваются нормально, никаких ошибок всё ок. С компа другого человека, после того, как он запустил парсер, произошёл бан и при попытке зайти на сайт пишет мол ваш ip заблокирован. Была попытка зайти из другого браузера(firefox) - при первой попытке всё прошло ок, после того как был запущен парсер стал блокироваться и с этого бразера. При использовании VPN - всё ок, но это не выход.

В общем, я в полном замешательстве, не понимаю в чём может быть проблема. Не знаю, нужная ли это информация, но всё же: я сижу через mac, другой человек через windows, провайдеры разные.
Проект один и тот-же. Все файлы одинаковые
Подскажите, где искать проблему....
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.10.2014, 13:11
Ответы с готовыми решениями:

Сервер не может получить страницу (Curl, file_get_contents.)
Вообщем написал некий скрипт, работать работает и сейчас на локалке тоже, и работал на сервере, но в один прекрасный момент перестал...

Сервер не может получить страницу (Curl, file_get_contents)
привет. <? $unvan_smert="http://google.com"; $curl_smert = curl_init(); curl_setopt($curl_smert, CURLOPT_URL, $unvan_smert); ...

Авторизация с curl работает, как получить страницу в переменную?
есть скрипт some.php вначале в нем идет авторизация на каком-то сайте через curl, и проходит успешно. далее хочу воспользоваться поиском,...

8
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
03.10.2014, 20:58
Цитата Сообщение от dalay_lama Посмотреть сообщение
ситуация такая: стоит задача парсинга сайта - http://elibrary.ru.
А владелец данного сайте разрешает Вам брать информацию к себе на сайт?

Я подозреваю что его сайт создан для того чтобы его смотрели браузерами, а не через "парсеры". Он эти блокировки по IP, может быть, как раз от таких парсеров и ввел. А Вы сейчас просите помочь Вам обойти их?.. Как то это неправильно.

А он потом рядышком создаст топик, в котором скажет что его сайт выкачивают через парсеры, помогите защитить сайт.. весело
0
 Аватар для dalay_lama
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
04.10.2014, 05:55  [ТС]
Цитата Сообщение от pav1uxa Посмотреть сообщение
А владелец данного сайте разрешает Вам брать информацию к себе на сайт?
Нет у меня никакого сайта. Это моя дипломная работа. С этого сайта нужно собрать информацию о преподавателях нашего ВУЗА - наукоёмкие показатели, количество статей который они выпустили и т.д.

С этого сайта формируется рейтинг ВУЗОВ и каждый универ мониторит своих преподов, в том числе и мой ВУЗ. Сейчас вся информация просматривается вручную, а это очень долгий и муторный процесс, так вот моя задача автоматизировать процесс сбора этой информации, никуда она в дальнейшем не выкладывается. Не надо параноить.

Цитата Сообщение от pav1uxa Посмотреть сообщение
Я подозреваю что его сайт создан для того чтобы его смотрели браузерами, а не через "парсеры". Он эти блокировки по IP, может быть, как раз от таких парсеров и ввел.
"Парсинг" происходит уже на моей стороне, после того, как я скачиваю себе страницу CURL-ом(всё равно что, через браузер смотреть), так что о каких "блокировках от парсеров" вы говорите - я не понимаю, если вы имеете ввиду что-то конкретное, то пожалуйста, объясните подробней.

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

Добавлено через 3 минуты
И к тому же, если у него есть какие-то "блокировки парсеров" по вашему, тогда почему-же у меня всё ок? при чём я довольно часто тестирую скрипт и меня никто не блокирует
0
 Аватар для Asiman
156 / 119 / 59
Регистрация: 27.04.2013
Сообщений: 351
05.10.2014, 06:39
Цитата Сообщение от dalay_lama Посмотреть сообщение
провайдеры разные
Причина в этом, для меня этот сайт выдает: "403 - Forbidden: Access is denied."
1
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
05.10.2014, 15:59
dalay_lama, заполните CURLOPT_USERAGENT чтобы походить на браузер и наверно можно удалить работу с кукисами
PHP
1
2
 curl_setopt($ch, CURLOPT_COOKIEJAR, "elib_cookie.txt");
 curl_setopt($ch, CURLOPT_COOKIEFILE,"elib_cookie.txt");
1
 Аватар для dalay_lama
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
05.10.2014, 16:19  [ТС]
большое спасибо за идею, к сожалению сейчас нет возможности проверить поможет или нет, т.к. человека уже заблокировали и он не может никак через свой ком зайти на этот сайт, даже просто просматривая браузером. Завтра будем разговаривать с преподом, может через тех-поддержку как-то получится договориться что-бы разбаняли.

И ещё такой нюанс есть, пробовали раздать мобильный интернет на комп, при попытке зайти на сайт всё таже картина была. А если просто с мобильника зайти на этот сайт, то всё хорошо.В чём прикол может быть? Куки, кеш и т.д. само собой пробовали чистить...
0
15 / 8 / 6
Регистрация: 12.03.2014
Сообщений: 22
06.10.2014, 15:45
Лучший ответ Сообщение было отмечено dalay_lama как решение

Решение

Любой сервер использующий TCP/IP протокол при подключении клиента знает о нем только 2 вещи это IP и порт, куда он собственно и пытается слать ответы.
Причем эти данные можно передать любые при попытке установить соединение, беда вся лишь в том что в таком случае соединение даже не будет установлено, так как сервер не сможет выполнить трех этапное рукопожатие TCP (сегмент ACK улетит по левому IP адресу), собственно на этом и построенные атаки на тему SYN флуда.

Так вот, если соединение таки установлено, сервер знает лишь ваш IP и порт, все, больше никаких данных TCP по умолчанию не передает.
Далее браузер формирует HTTP запрос, и используя простые системные вызовы write() и read() собственно работает с соединением передавая туда этот запрос, который из себя представляет ничто иное как простую строчку определенного протоколом формата, куда можно записать все что хочется или не писать вообще ничего кроме того минимума что требует протокол

Так вот к чему все это, к тому что сервер о вас будет знать только то что вы ему передаете в HTTP запросе (если конечно PHP не вмешается и в принудительном порядке не изменит HTTP запрос по какой либо причине).
Таким образом, вы можете выглядеть для сервера кем угодно с любым браузером и любым софтом, хоть браузером хоть ботом Яндекса и Гугла, далее все зависит лишь от настроек сервера и того как софт будет интерпретировать полученную информацию.

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

Правда умные админы как правило не банят за это а делают умнее, ведь софт может и ошибиться.
В частности Яндекс делает так, если он подозревает запросы как автоматические в обход их API (а они очень против этого) то он выдает страницу где простит ввести некий текст с картинки, типа мы вас подозреваем, давайте проверим человек вы или нет (обычная защите от ботов в случае подозрения их аналитической системы)

И того, можете попробовать следующим образом. С того ПК или Мобильника с которого сервер выдает вам страницу, зайдите на собственную страницу, где PHP просто выдаст вам весь HTTP запрос, просто создайте "копию" этого запроса и отправьте его из вашего скрипта, сервер примет вас за мобильного пользователя.
Один нюанс, если софт будет проверять IP на принадлежность к IP операторов мобильной связи то тут будет ОЙ

Итого, TCP/IP протокол сам по себе ничего не передает серверу кроме IP и порта, все остальное серверу передает браузер в виде простой строки текста которая составлена согласно стандарту, вписывайте в эту строку (запрос) что пожелаете не нарушая стандарт и сервер будет думать что вы тот кем вы хотите быть (но с серьезными серверами это может не прокатить, там ребята уже давно учатся отделять людей от ботов и тд и тп)
1
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
06.10.2014, 21:47
афигенская статья. блин, вода... нах
0
 Аватар для dalay_lama
82 / 82 / 50
Регистрация: 22.09.2012
Сообщений: 495
07.10.2014, 01:36  [ТС]
NR55RU, большое спасибо, за такой развёрнутый ответ, я много нового для себя узнал)
сосбтно....через раздачу интернета с мобильника мы уже разобрались, но сама проблема остаётся, почему забанили? и как избежать?

Я вчера разговаривал с руководителем диплома, он тоже был удивлён, собстно начало текущего скрипта я у него брал, и когда он тестировал его, у него тоже никаких проблем не возникало, хотя тестил он не мало. Но наверное стоит отметить, что он работал через прокси(причину не помню, но не бан точно).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2014, 01:36
Помогаю со студенческими работами здесь

Как считать страницу через curl?
Здорова! Есть код для считывания страницы через прокси <? error_reporting(E_ALL & ~E_NOTICE); //создаём функцию function...

Получить value из input hidden через CURL
Подскажите, кто понимает. Есть страница с формой авторизации (https://www.work.ua/employer/login/). В этой форме есть скрытый инпут:...

CURL - при переходе по ссылке зеркала редиректит на внешнюю страницу или 404
Всем добра !!! Уважаемые специалисты и не очень, буду благодарен за оказанную вами помощь! В общем-то я недавно в теме изучения php ,...

CURL работает при подаче запроса на локальный сервер, но при подаче запроса во вне выдает пустую страницу
Собственно, вот код: error_reporting(E_ALL); $c = curl_init(); curl_setopt($c,CURLOPT_URL, "https://ya.ru"); curl_setopt($c,...

Wininet, ошибка 12157 при попытке получить веб страницу
Доброго времени, посмотрел простенькие реализации получения кода веб странички, нашел подходящую. Когда попробовал все работает со многими...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru