В настоящее время многие веб-сайты принимают различные меры для защиты от сканирования.Обычно веб-сайт использует следующие методы защиты от сканирования: чем ценнее данные, тем сложнее защита от сканирования. Общие меры и решения против лазания следующие:
1. Антисканирование через заголовок веб-запроса
Это самая основная мера защиты от сканирования для веб-сайта, а также самый простой в реализации метод защиты от сканирования, но его также легко взломать.Вам нужно только добавить разумный заголовок запроса для доступа к целевому веб-сайту, чтобы получить данные.
2. Защита от лазания IP
-
Сервер будет определять количество запросов IP в единицу времени.Если оно превысит этот порог, он напрямую откажет в обслуживании и вернет некоторую информацию об ошибке.Такую ситуацию можно назвать блокировкой IP. Блокировка IP также делится на постоянную блокировку и кратковременную блокировку.
-
Постоянно заблокирован: IP-адреса в черном списке не могут быть доступны навсегда
-
Фиксированный период заблокирован: срок действия IP истекает в течение определенного периода времени
решение:
Использование прокси-сервера для преодоления ограничений доступа по IP-адресу. Обычный метод заключается в покупке прокси-сервисов или покупке VPS-сервера для самостоятельного создания пула прокси-IP-адресов.
Принцип прокси:
Архитектура пула IP-прокси:
- Модуль хранения обычно использует упорядоченный набор Redis для дедупликации прокси и идентификации статуса.Модуль хранения является центральным модулем и подключается к другим модулям.
- Модуль получения регулярно получает прокси с веб-сайта прокси, передает полученный прокси в модуль хранения и сохраняет данные в Redis.
- Модуль обнаружения регулярно получает все агенты в модуле хранения, обнаруживает агенты и устанавливает различные идентификаторы для агентов в соответствии с различными результатами обнаружения.
- Интерфейсный модуль предоставляет сервисный интерфейс через WebAPI, а интерфейс получает данные путем подключения к Redis и возвращает доступные прокси.
Прокси коммутируемого доступа ADSL:
- Модуль набора номера: набор номера по времени, сгенерированный IP-адрес отправляется в интерфейсный модуль, а интерфейсный модуль вызывает модуль хранения для сохранения данных IP.
- Интерфейсный модуль: получите IP-адрес модуля коммутируемого доступа и предоставьте сканеру интерфейс для возврата IP-данных.
- TingProxy: прокси-сервис — это программное обеспечение, которое можно установить на VPS и запустить.
- Модуль хранения: отвечает за доступ к IP
- Краулер: получите IP-адрес, вызвав интерфейс, добавьте агента для доступа к целевому веб-сайту для получения данных.
3. Проверочный код против лазания
-
Анти-сканирование кода проверки также является механизмом защиты от сканирования, обычно используемым многими веб-сайтами в настоящее время.С развитием технологий появляется все больше и больше шаблонов кодов проверки. Код подтверждения изначально представлял собой графический код подтверждения из нескольких цифр, а позже были добавлены английские буквы и кривые путаницы. Некоторые веб-сайты могут также добавлять коды подтверждения китайских иероглифов.
-
При обнаружении веб-страницы с проверочным кодом в настоящее время есть два решения: одно — приобрести сервис распознавания проверочного кода, эти сервисы распознавания сами идентифицируются ими вручную в фоновом режиме и затем возвращают результаты распознавания через интерфейс; самостоятельно обучить модель распознавания. В этом разделе в основном представлено ваше собственное решение для обработки кодов подтверждения.Способ подключения к службе можно найти на соответствующей платформе идентификации в соответствии с документом API для завершения идентификации и стыковки.
1) Код подтверждения персонажа:
- Обычное распознавание символов, в настоящее время глубокое обучение может достичь более высокой точности, чем распознавание человеческого глаза. Вы можете разработать интерфейс службы идентификации самостоятельно с помощью глубокого обучения, процесс выглядит следующим образом:
-
Как правило, обучающие образцы подключаются к фактической платформе кодирования через сканер для сбора данных и сохранения правильного образца в качестве обучающего образца модели. В настоящее время приблизительное соотношение между требуемым количеством обучающих выборок и категориями выборки таково: количество категорий выборки X 500, например, размер выборки, необходимый для обучения 36 категорий цифр плюс буквы, равен 36*500=18000. Чем больше обучающих выборок, тем выше скорость распознавания модели, но выше стоимость. В ходе фактического обучения было обнаружено, что пригодную для использования модель распознавания можно получить для более чем 10 000 образцов буквенно-цифровых кодов проверки. Как обучить полезную модель, вы можете прочитать в другой статье, которую я написал «Создание серии сервисов распознавания капчи на основе Python + глубокое обучение».nuggets.capable/post/684490…
-
Распознавание китайских иероглифов такое же, как и обычное распознавание символов, только размер выборки относительно велик, а структура модели такая же, как и в процессе обучения. На приведенном выше рисунке показан проверочный код, который требует ввода символов определенного цвета.Этот проверочный код аналогичен распознаванию символьного проверочного кода, но требует, чтобы две модели взаимодействовали друг с другом, а также модель распознавания цвета и модель распознавания символов. Модель распознавания цвета отвечает за вывод соответствующей цветовой последовательности символов изображения, а модель вывода символов отвечает за вывод соответствующих символов изображения. В ходе фактического обучения было обнаружено, что модель распознавания цвета может получить уровень распознавания 99,99% с очень небольшим количеством образцов, и модель сходится очень быстро; но в код проверки символов добавлено 3500 китайских иероглифов, а количество обучающих образцов составляет 1. миллионов (сгенерированных с помощью моделирования кода) в реальном обучении. Скорость составляет более 95%, а время обучения относительно велико (графический процессор будет намного быстрее).
Некоторые опыты модели распознавания кода проверки глубокого обучения:
- Дизайн модели может быть разработан в виде общей структуры.Каждый раз необходимо изменять только количество выходных категорий, и модель можно использовать повторно. Проблема несовместимого размера изображения может быть решена путем масштабирования до единого размера.
- В настоящее время код проверки символов не должен быть чувствительным к регистру, а код проверки символов каждой платформы может устранить легко запутанные символы, поэтому фактический вывод категории кода проверки символов не имеет 36 типов. Отсутствующие символы можно найти, подсчитав обучающие выборки, что может уменьшить количество выходных категорий. Следует также отметить, что символьный проверочный код некоторых веб-сайтов может быть непостоянным.Проверочный код, возвращаемый каждый раз, имеет переменную длину.Для этого проверочного кода модель может быть разработана в соответствии с максимальной длиной.Позиция заполнения должна быть выбран разумно, чтобы получить лучшую точность распознавания.
2) Код проверки поведения:
А. Выбор координат:
- Выбор координат также может напрямую подключаться к платформе кодирования, отправлять данные изображения на платформу кодирования, платформа кодирования возвращает значение координат и имитирует нажатие на соответствующие координаты через Seleniun и PhantomJS для завершения проверки. Или вы можете напрямую создать отправку параметров.
- Модель обучения с глубоким обучением для идентификации, модель самообучения требует относительно большого размера выборки, а стоимость обучения относительно высока. Код проверки щелчка китайского символа требует относительно небольшого количества обучающих образцов. Предоставьте идею распознавания для кода подтверждения щелчка китайского символа:
- После получения символов на картинке наиболее важным шагом для этого типа проверочного кода является щелчок по символам на картинке в правильном порядке слов, поэтому должен быть модуль порядка слов, чтобы задать правильный порядок слов в соответствии с входные символы.Самый простой метод заключается в выполнении сегментации слов через библиотеку Jieba для всей сортировки символов, и самая длинная последовательность сегментации слов является правильным результатом. Или сортируйте на основе моделей порядка слов для обучения обработке естественного языка.
- Последним шагом является имитация процесса клика.Простой способ — использовать браузер для имитации клика, который имеет относительно высокую скорость передачи и прост в реализации. Другой метод заключается в анализе процесса шифрования параметров и непосредственном построении представления параметров.Реверс JS сложен, а технические требования выше.Преимущество в том, что эффективность выполнения программы выше.
B. Подтверждение смахивания:
- Ключом к распознаванию скользящего проверочного кода является определение расстояния, на которое должен скользить разрыв, и построение скользящей траектории. Наиболее распространенным способом расчета траектории является использование алгоритма обработки изображений для расчета расстояния скольжения ползунка с помощью библиотеки OpenCV.В настоящее время несколько основных кодов проверки скольжения в Интернете могут использовать этот алгоритм для расчета расстояния скольжения. Построение траектории, принцип построения траектории заключается в том, чтобы максимально имитировать процесс скольжения человека, например, обычное онлайн-ускорение, а затем замедление или использование кривых нормального распределения для построения траектории (фактический эффект реализации лучше, и параметры легко изменить). После получения расстояния и траектории Seleniun и PhantomJS используются для имитации скольжения, но проблема этого метода в том, что эффективность относительно низкая.
- Лучшим способом является прямой анализ процесса построения параметров JS после получения расстояния скольжения и траектории скольжения, обращение JS, получение параметров отправки и прямая отправка данных в фон для проверки. Технические требования относительно высоки, и требуется определенная реверсивная способность JS, но эффективность сканирования высока.
4. Обфусцированный JS динамический параметр, препятствующий лазанию
- Шифрование параметров JS также является механизмом защиты от сканирования, который часто используют многие веб-сайты. Проще всего грабить напрямую через Seleniun и PhantomJS, плюс в том, что не нужно анализировать JS, а минус в том, что эффективность сбора низкая.
- Другим решением является прямой обратный анализ JS, переписывание зашифрованного JS или прямое использование механизма выполнения JS (PyV8, pyexecjs, PhantomJs) для выполнения JS для получения зашифрованных параметров и отправки параметров напрямую.
5. Анти-лазание аккаунта
- Обычно вам необходимо входить в систему для каждого посещения, прежде чем вы сможете нормально просматривать данные.Для такого сбора данных веб-сайта вам необходимо подготовить большое количество учетных записей.В то же время вам нужно обратить внимание на максимальное количество запросов для каждой учетной записи.Некоторые веб-сайты также будут инициированы одной и той же учетной записью в течение короткого времени.При большом количестве запросов принимается стратегия блокировки учетной записи.Решение заключается в переключении и сборе большого количества учетных записей; каждая учетная запись отправляет определенное количество запросов и вовремя переключается на другую учетную запись для сбора.
- Первый шаг к решению проблемы антисканирования учетной записи – имитация входа в систему. Существует два распространенных способа имитации входа: один – использование Seleniun и PhantomJS для имитации входа. Этот метод относительно прост в реализации и не требует анализа JS. Соответствует к механизму запутывания параметров JS. Еще один более прямой способ — перевернуть JS, имитировать отправку данных для завершения имитации входа в систему и сохранить данные cookie, чтобы сканер мог сканировать данные.
Общая архитектура модуля прокси-пула cookie:
- Модуль приобретения: отвечает за создание файлов cookie, соответствующих каждой учетной записи.
- Модуль хранения: храните учетную запись и информацию о файлах cookie, соответствующую учетной записи, а также необходимо реализовать некоторые удобные операции доступа.
- Модуль обнаружения: регулярно проверяйте файлы cookie. Разные сайты имеют разные ссылки для обнаружения. Модуль обнаружения использует соответствующий файл cookie для запроса ссылки. Если статус возврата действителен, файл cookie действителен. В противном случае файл cookie недействителен и удаляется.
- Интерфейсный модуль: Обеспечьте вызовы API во внешний мир и случайным образом возвращайте файлы cookie, чтобы гарантировать, что каждый файл cookie может быть получен.Чем больше файлов cookie, тем ниже вероятность получения, тем самым снижая риск блокировки.
6. Библиотека пользовательских шрифтов, предотвращающая перелезание
В настоящее время некоторые веб-сайты реализуют антисканирование путем настройки библиотеки шрифтов, что в основном проявляется в нормальном отображении данных страницы, но фактически данные, получаемые страницей, представляют собой другие символы или код. Этот тип антисканирования должен анализировать собственную библиотеку шрифтов веб-сайта и заменять зашифрованные символы соответствующими символами библиотеки шрифтов. Необходимо установить связь между шрифтами и базовыми шрифтами.
7. Резюме
- В настоящее время многие веб-сайты имеют базовые стратегии защиты от сканирования, наиболее распространенными из которых являются проверочный код и шифрование параметров JS. Такие инструменты, как Seleniun, PhantomJS и Splash, рекомендуются, если объем сканирования невелик, что позволяет быстро реализовать сбор данных. Для задач обхода с большим объемом данных рекомендуется строить обход по параметрам, обладающий высокой стабильностью программы и высокой эффективностью, особенно для обхода данных многих веб-сайтов, разделенных на front-end и back-end.
- Сам краулер будет оказывать определенное давление на веб-сайт, поэтому скорость сканирования должна быть установлена разумно, чтобы не создавать проблем целевому веб-сайту и не влиять на нормальное использование веб-сайта.Обязательно обратите внимание на положение вашего краулера. .