Намеренное ротирование и удержание IP-адресов при парсинге веб-страниц

Я не эксперт по скрапингу. У меня есть небольшой забавный проект на Python, собирающий данные с тщательно охраняемого веб-сайта, или так кажется, с использованием Tor, Privoxy и специального класса Python. Несмотря на некоторые предостережения, на данный момент это работает на удивление хорошо.

Есть одна вещь, которую я не понимаю. Почему все библиотеки и фрагменты, которые я видел, реализуют:

  1. Ротация IP после n запросов или по истечении указанного срока.
  2. Механизмы хранения и освобождения использованных IP-адресов после n запросов.

Мой подход заключается в том, чтобы просто выбрать User-Agent, отправить сигнал NEWNYM в Tor и очищать его до тех пор, пока сервер не выкинет меня (403 или аналогичный), а затем повторить действия с новым UA и IP. Это значительно превосходит вышеупомянутые методы с точки зрения скорости и надежности.

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

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

Что мне не хватает?

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

Barmar 26.03.2024 21:40

@Barmar Конечно, вопрос в том, насколько идея притвориться, что парсер является обычным пользователем, значительно более надежна в небольших сценариях.

astrochicken 26.03.2024 21:46

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

Barmar 26.03.2024 21:48

@Бармар принял к сведению. Это не является противозаконным.

astrochicken 26.03.2024 21:56

Я сказал нежелательно, а не незаконно. Они достаточно любезны, чтобы позволить вам использовать их веб-сайт, вы должны соблюдать их пожелания.

Barmar 26.03.2024 21:57

@Barmar И я вежливо говорю, что если ты не хочешь участвовать в этой теме, пожалуйста, прочитай лекцию кому-нибудь другому. Я не собираюсь монетизировать данные, это ничем не отличается от обычного просмотра, я не забрасываю сайт триллионами запросов и попутно учусь чему-то. Спасибо!

astrochicken 26.03.2024 22:07
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
121
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Выполнение 1 или 2 кажется ошибочным подходом, если веб-сайт не имеет функции обнаружения парсинга и позволяет без последствий делать триллион запросов с одного и того же IP. Каждый случай индивидуален, поэтому я просто сделаю то, что работает или требуется в вашей ситуации.

Изменение IP-адресов после такого большого количества запросов или такого большого количества времени может помочь избежать обнаружения, если веб-сайт заблокирует ваш IP-адрес после просмотра 1000 разных URL-адресов с одного и того же IP-адреса или просмотра более 60 страниц в минуту. Реализуя эти функции, они делают предположения о том, как веб-сайт может обрабатывать сканер, а также делают предположения о том, как вы используете их код (быстрый сканер или медленный сканер, много страниц или мало страниц и т. д.).

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

Другие вопросы по теме