- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Раздел «ИИ (нейросети)»
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Настройка парсера
- Вывод характеристик в несколько столбцов
Обход защиты от роботов на сайте
- Основы HTML для настройки парсера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Обход защиты от роботов на сайте |
Предположим, что при загрузке страницы сайта вы столкнулись с тем, что грузится лишь короткий ответ, где написано что выполняется проверка браузера (или что-то подобное):
| Действие | Параметр | Значение | Результат |
|---|---|---|---|
| Загрузить страницу по ссылке | Способ загрузки | WinHTTP | Исходный код веб-страницы (длиной 2024 символа) |
| URL | https://www.pult.ru/main/akustika/ | ||
| HTML: Поиск тегов | Тип элемента | title | Текст (длиной 21 символ) |
| Тип результата / извлекаемый атрибут | ConvertToText 1 |
Причина этого: сайт при помощи скриптов пытается проверить, какой браузер используется, или выводит видимую / невидимую капчу, — потому и пишет «Включите JavaScript для доступа».
Поскольку парсер по умолчанию не использует браузер для загрузки страниц (поскольку парсинг без браузера намного быстрее), эта проверка со стороны сайта не выполняется, и мы не можем загружать с него данные.
Можем ли мы парсить такие сайты без браузера?
В большинстве случаев — да, можем.
Для этого нужно один раз (перед началом парсинга) запустить браузер Chrome, чтобы проверка пользователя / браузера успешно завершилась, после чего мы считываем Cookie из браузера, и передаём их во всех дальшейших запросах к сайту.
Передача Cookies выполняется автоматически для способа загрузки WinHTTP (это способ по умолчанию в действии Загрузить страницу по ссылке), так что, один раз загрузив и применив Cookies, мы можем выполнять сколько угодно запросов объычным способом.
Создаём в парсере набор действий с названием Parser_Start, и пишем там что-то вроде этого:
| Действие | Параметр | Значение | |
|---|---|---|---|
|
для чистоты эксперимента: чтобы очистить все ранее заданные заголовки запроса и куки
|
|||
| Создать новый экземпляр WinHTTPRequest | Сброс Cookies и заголовков запроса | да | |
|
позволяем сайту выполнить все необходмые проверки
|
|||
| Браузер: открыть страницу | URL | https://www.pult.ru/ | |
| Режим загрузки | ActiveTab Reload | ||
| Режим ожидания | |||
| Параметр ожидания | |||
|
если вы на этом сайте давно (или никогда) не были, то может вылезти капча, которую нужно пройти вручную
|
|||
| Проверка на выполнение условия | Режим проверки | не содержит | |
| Значение для сравнения | >Проверка безопасности</title> | ||
| Действие при выполнении условия | Пропустить несколько действий | ||
| Параметр действия | 2 | ||
| Проверять другое значение | нет | ||
| Другое проверяемое значение | |||
|
тогда ждем, пока пользователь щелкнет мышом где нужно, и возвращаемся к загрузке страницы
|
|||
| INFO: Вывод сообщения (MsgBox) | Текст сообщения | Щелкните в квадратике, и потом нажмите ОК на этом сообщении | |
| Заголовок сообщения | Требуется пройти проверку в браузере | ||
| Тип сообщения + кнопки | 1 = OK / отмена | ||
| Возвращать нажатую кнопку | да | ||
| Проверка на выполнение условия | Режим проверки | равно | |
| Значение для сравнения | 1 | ||
| Действие при выполнении условия | Вернуться к действию | ||
| Параметр действия | 2 | ||
| Проверять другое значение | нет | ||
| Другое проверяемое значение | |||
|
если нажата кнопка Отмена в сообщении - останавливаем парсер (например, нам не удалось вручную пройти капчу)
|
|||
| Проверка на выполнение условия | Режим проверки | равно | |
| Значение для сравнения | 2 | ||
| Действие при выполнении условия | Остановить | ||
| Параметр действия | -9 | ||
| Проверять другое значение | нет | ||
| Другое проверяемое значение | |||
|
считываем все куки, + ещё 2 дополнительных (которые не считались вместе с другими, но их было видно в консоли браузера). Все считанные куки будут автоматически добавляться ко всем запросам (способом WinHTTP в действии Загрузить страницу по ссылке)
|
|||
| Браузер: выполнить команду | Команда | ApplyCookiesToWinHTTP | |
| Параметр | PHPSESSID|flocktory-uuid | ||
|
считываем скриптом строку userAgent из браузера, - в данном случае значения Cookie привязаны к userAgent
|
|||
| Браузер: выполнить команду | Команда | ExecuteScript | |
| Параметр | return navigator.userAgent; | ||
| СОХРАНИТЬ значение в переменную | Название переменной | UserAgent | |
| Область видимости | parser | ||
|
больше браузер нам не нужен: мы считали все необходимые данные для выполнения запросов
|
|||
| Браузер: закрыть | |||
|
теперь ко всем запросам будет добавляться этот заголовок
|
|||
| Добавить заголовок запроса | Заголовок | user-agent | |
| Значение | %UserAgent% | ||
| Использовать для ВСЕХ запросов | да | ||
При тестировании этого списка команд, мы увидим всплывающее уведомление примерно такого вида:

После выполнения этого набора действий (он будет автоматически запускаться после старта парсера), результат загрузки страницы будет уже совсем другим:
| Действие | Параметр | Значение | Результат |
|---|---|---|---|
| Загрузить страницу по ссылке | Способ загрузки | WinHTTP | Исходный код веб-страницы (длиной 328085 символов) |
| URL | https://www.pult.ru/main/akustika/ | ||
| HTML: Поиск тегов | Тип элемента | title | Текст (длиной 123 символа) |
| Тип результата / извлекаемый атрибут | ConvertToText 1 |
- Добавить комментарий
- 12 просмотров









