Как крупные сайты (например, Википедия) справляются с ботами, которые скрываются за другим IP-маскером? Например, в моем университете все ищут в Википедии, что придает ей значительную нагрузку. Но, насколько мне известно, Википедия может знать только IP-адрес университетского маршрутизатора, поэтому, если я настрою «освобожденного» бота (с небольшой задержкой между запросами), сможет ли Википедия заблокировать моего бота, не запрещая всю организацию? может ли сайт на самом деле запретить IP за организационной сетью?
Нет, они запретят общедоступный IP-адрес, и все, кто подключен к этому IP-адресу, также будут заблокированы.
Хотя, по крайней мере, в стеке, если мы думаем, что собираемся запретить колледж или что-то в этом роде, мы свяжемся с их контактом по злоупотреблениям, чтобы они выследили преступника и остановили проблему.
Сайт не может напрямую запретить IP-адрес, который находится за NAT. Он может действовать на IP-адреса, передаваемые через неанонимные HTTP-прокси - когда такой прокси-сервер пересылает запрос, он обычно добавляет этот адрес в заголовок X-Forwarded-For, поэтому, если доступ из вашей частной сети действительно должен проходить через такой прокси внутренний IP может быть выставлен; однако большинство сайтов (включая Википедию) в любом случае не будут доверять информации в этом заголовке, потому что легко подделать, чтобы указать невиновные IP-адреса или избежать банов.
Однако существуют и другие методы, которые пытаются однозначно идентифицировать пользователей независимо от IP-адреса. Вы можете запросить у веб-браузера много информации о нем и о системе, в которой он работает, например, об агенте пользователя, разрешении экрана, списке плагинов и т. Д. - см. https://github.com/carlo/jquery-browser-fingerprint для примера этого на практике. Вы можете использовать такие отпечатки пальцев для управления доступом, хотя в зависимости от дизайна сайта вы можете иметь возможность взаимодействовать с ним, не задействуя процесс снятия отпечатков пальцев, и даже если вы не можете, бот может предоставить ложные и случайные данные, чтобы избежать постоянный отпечаток пальца, если вы знаете, что такая защита существует. Этот метод контроля также сопряжен с риском ложных срабатываний, особенно когда речь идет о мобильных устройствах, где, вероятно, будет большое количество клиентов, использующих идентичные стандартные клиенты на идентичном стандартном оборудовании (большинство людей, использующих конкретную модель iPhone с определенной версией iOS , например, вероятно, получит тот же отпечаток пальца). Подобное снятие отпечатков пальцев обычно используется только для отслеживания пользователей, а не для обеспечения контроля, но я знаю места, в которых используется снятие отпечатков пальцев для реализации запретов, когда есть опасения, что блокировка IP-адресов будет слишком широкой и может быть эффективной против наивного бота.
Обычно IP-адреса недостаточно для правильного бана. Итак, продвинутые сети работают высоко в сетевом стеке.
Атака отказа в обслуживании (DoS) (которую вы беспокоитесь о создании) обычно обрабатывается путем ограничения скорости начальной установки TCP-соединения. Это означает, что законные пользователи, которые готовы ждать, пройдут через это, в то время как те, которые просто пытаются потреблять ресурсы сервера, замедляются до такой степени, что становятся безвредными. Именно здесь DoS затем превратился в распределенную DoS-атаку (DDoS).
После подключения к серверу вы можете делать столько запросов, сколько захотите, администрация веб-сервера может настроить, сколько запросов нужно обрабатывать.
Веб-сервер, вероятно, в любом случае может обрабатывать большую мощность, чем ваш локальный сетевой шлюз, что, вероятно, является ограничивающим фактором в вашем случае использования. Держу пари, сетевые администраторы вашего университета постучатся в вашу дверь раньше, чем это сделает Википедия.
Важно быть хорошим интернет-гражданином, поэтому я бы добавил код ограничения скорости для бота.
Также следует отметить, что Википедия предлагает дампы данных, так что трал на сайт действительно не нужен.