Как нажать кнопку на веб-сайте с помощью C

#c #web-crawler

#c #веб-сканер

Вопрос:

Я разрабатываю веб-сканер с помощью C , но на веб-странице меня спрашивают: «Вам по крайней мере 18 лет?» когда я впервые получаю веб-страницу с помощью URLDownloadToFileW , и, конечно, я должен нажать ДА.

В javascript я могу использовать document.getElementsByTagName('button')[0].click(); для имитации нажатия кнопки, так есть ли какой-либо другой способ решить такую проблему с помощью C ?

Комментарии:

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

Ответ №1:

Это не так просто сделать, но если вы хотите это сделать, вам нужно несколько запросов.

То, что делает щелчок (т. Е. document.getElementsByTagName('button')[0].click(); В JavaScript), — это запуск связанного события щелчка. Вашим первым шагом должно быть найти код обработчика событий и изучить его. Событие может, например, отправить другой (AJAX) запрос на веб-сайт. Если это так, вам также необходимо выполнить запрос на C в вашем искателе. Многие сайты также используют файлы cookie для хранения ответа пользователя на такие вопросы (или, по крайней мере, того факта, что пользователь выбрал «Мне не менее 18 лет»). Таким образом, ваш поисковый робот также должен принимать такие файлы cookie и сохранять их между запросами.

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

Альтернативный подход: вместо написания сканера, который загружает содержимое веб-сайта напрямую, вы можете использовать такие фреймворки, как Selenium. Selenium позволяет автоматизировать браузер и предназначен для тестирования, но его также можно использовать для обхода веб-сайта. Преимущество заключается в том, что вы также можете выполнять такие вещи, как клики, проще в браузере, если вы знаете идентификатор или XPath элемента, который хотите щелкнуть. Это может быть проще сделать, чем «классический» искатель.

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