Приквел:Поисковый робот Python с нуля (ноль) — использование модуля идей и запросов поискового робота
Как упоминалось ранее, некоторые веб-сайты защищены от сканирования. На самом деле дело в том, что любой веб-сайт определенного масштаба, веб-сайт крупной компании или веб-сайт с относительно высокой прибыльностью имеют расширенные меры защиты от сканирования. В общем, есть две стратегии противодействия краулингу: либо проверка личности и вытаптывание жучка у двери, либо внедрение на веб-сайте различных механизмов против сканирования, чтобы позволить краулерам отступить. В этом разделе предлагаются некоторые контрмеры для этих двух стратегий предотвращения сканирования.
маскировка личности
Даже если это какой-то неизвестный маленький веб-сайт, он более или менее проверит заголовки, чтобы удостовериться в личности посетителя, не говоря уже о большом веб-сайте (когда я сканировал Yiyun, я забыл добавить заголовки, и я был прямо красный.)
Итак, чтобы сокровища жуков с триумфом вернулись с информацией, мы должны научить рептилий, каккамуфляж; Иногда маскировки недостаточно, надо учить рептилий конкретным«Как быть мужчиной», заставь себя вести себя скорее как нормальный человек, чем неизвестное существо быстрее, чем холостяк.
Пользовательские заголовки запросов
- "Я человек!"-Изменить пользовательский агент: Он хранит версию модели системы и браузера и притворяется человеком, модифицируя ее.
- «Я из провинции Хэбэй»——Изменить реферера: сообщите серверу, через какой URL-адрес вы вошли, вместо того, чтобы появляться из воздуха, некоторые веб-сайты будут проверять.
- "печенье!":--принести печенье, иногда с файлами cookie или без них вы получаете разные результаты, попробуйте с помощью файлов cookie «подкупить» сервер, чтобы он предоставил вам полную информацию.
- Подробные данные можно нажать F12, чтобы захватить пакет и просмотреть его заголовки запросов.
headers = {'Referer':'https://accounts.pixiv.net/loginlang=zh&source=pc&view_type=page&ref=wwwtop_accounts_index',#如某些网站(如p站)要检查referer,就给他加上
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'#每个爬虫必备的伪装
}
r = requests.get("https://segmentfault.com/a/1190000014383966",headers=headers)
заголовки данных обычно оба могут, и я настоятельно рекомендую гаду на каждый запрос приходить с юзер-агентом, лучше чем ничего Ну не буду добавлять ошибки.
Уменьшить частоту первичного IP-доступа
Примечание. Это относится к долгосрочным масштабным поисковым роботам.
Некоторые веб-сайты будут отслеживать частоту и количество посещений определенного IP-адреса.После превышения определенного порога вы будете исключены из списка подозреваемых в поисковых роботах.В настоящее время вы должны найти способ уменьшить свое ощущение существования.
- Ззззз——впадать в спячку: Сделайте перерыв после лазания на некоторое время, не только для собственного успеха, но и ради сервера.
- Я не пойду, я пошлю кого-нибудь другого...IP-прокси: Используйте параметр прокси, при условии, что у вас есть айпи, хороший айпи прокси стоит денег.
time.sleep(60)#用python自带time模块的休眠功能
proxies = {'http': 'http://10.10.1.10:3128',#“协议类型:完整ip地址+端号”
'https': 'http://10.10.1.10:1080'}#代理ip字典,随机调用
r = requests.get(url,headers=headers,proxies=proxies)
Антискалолазание (краткий анализ)
В первой части серии я упомянул, что есть подводные камни в получении исходного кода веб-страницы, да, иногда достаточно заголовков для маскировки и так далее, но все равно не получается получить корректный исходный код веб-страницы. веб-страницу как хочешь.Либо ее тебе не хватает, либо тебе дают Куча неактуальных вещей, либо просто краснеешь.
Это показывает, что основная проблема заключается не в том, что является поддельным или замаскированным, а в том, как интерпретировать механизм предотвращения сканирования веб-страницы и найти решение, которое требует относительно высоких требований.навыки наблюдения и анализа.
Основные из них, с которыми я столкнулся до сих пор, это:
- случайный код проверки: веб-страница генерирует случайный код и требует, чтобы вы отправили его, прежде чем принять ваш запрос (в основном используется вАутентификация входасередина). —— Такой код проверки обычно скрыт в исходном коде веб-страницы,взять перед рукойэто стратегия.
- Неупорядоченный URL: за URL следует строка невидимых закономерностей. —— Мне нечего сказать о таких вещах, идите прямоselenium.
- Зашифрованный/загроможденный исходный код: Вы знаете, что вам нужно, но вы не знаете, как это извлечь. —— Разгадай загадку, посмотри, хорошо ли работает мозг.
- динамическая нагрузка: вам нужно взаимодействовать со страницей, чтобы получить больше информации, но сканер не может взаимодействовать с ней. - идти прямоselenium/Вручную захватить и проанализировать целевую ссылку
- технология ajax: асинхронная загрузка, содержимое веб-страницы загружается поэтапно, и поисковый робот может получить HTML-код, отправленный только в первый раз, что приводит к неполной информации. --начальствоselenium/Ручной захват пакетов и анализ целевого соединения
Пополнить:
Модуль selenium, имитирующий браузер, силен, но недостатком является медлительность.
На самом деле динамическая загрузка предназначена для того, чтобы пользователям было проще щелкнуть и увидеть, но это также усложняет работу поискового робота, потому что много информации скрыто.
наконец
В камуфляже есть подпрограммы, код прямо прикрыт, и всегда правильно добавить больше заголовков.
Встроенный антисканер очень гибкий, фиксированного формата кода нет, и на его анализ требуется время.
Методы/модули, представленные в этой статье, будут иметь примеры позже, поэтому не используйте их.
Следующая статья официально входит в тему анализа веб-страниц, а затем вы можете начать писать небольшой краулер♪(^∀^●)ノ.