Рисунок 1 – Разборки между похотливыми рептилиями и антирептилиями
Важность данных
Сегодня эпоха больших данных. Данные движут развитием бизнеса и операционными средствами. С помощью данных пользователи могут быть профилированы и настроены. Данные могут указывать направление разработки программ и оптимизации принятия решений. Поэтому развитие Интернета продукты Все они неотделимы от сбора и анализа данных.Один из способов сбора данных — фиксировать взаимодействие пользователя с собственной платформой через API отчетов.Другой способ – разработать программы-краулер для обхода данных конкурирующих платформ. Позже, Я сосредоточусь на сценариях применения краулеров и проблемах, возникающих на практике, а также на некоторых подпрограммах и методах для анти-антикраулеров.
Сценарии применения
- Интернет-платформа, ориентированная на сбытовые компании, сканирование информации о клиентах
- Сканирование информации о клиентах может высвободить время торгового персонала для поиска ресурсов клиентов и повышения эффективности продаж для развития рынка.
- Сканируйте информацию о клиентах на соответствующих платформах, сообщайте об этом в систему управления CRM и предоставляйте ее торговому персоналу для разработки.
- Сканирование информации и приложение для бизнеса платформы
- При частом просмотре информации вы обнаружите, что популярный информационный контент многих платформ очень похож. Платформы, которые уважают авторские права, укажут источник источника.
- Сканирование информации и ее применение в информационном бизнесе может уменьшить нагрузку на редакторов информационного контента.Если вам не нужно создавать собственный контент, вы также можете разместить все это в программе AI.
- Важный анализ интеллектуального анализа данных и применение конкурирующих компаний
- Важные бизнес-данные конкурирующих платформ, такие как: информация о модели автомобиля дома X, информация об отеле, где находится X, информация о товарах, возвращенная на X.com, ...
- Просканируйте важные данные конкурирующих продуктов, отфильтруйте и обработайте данные, а затем отобразите их в бизнесе, увеличьте объем бизнес-данных и уменьшите нагрузку на редактор операций этого ресурса.
- …
разработка краулеров
- Сканер разработки Python (рекомендуется)
- Начало работы также относительно простое, код короткий и скудный, а различные модули и фреймворки удобны для разработки поисковых роботов.
- Другие языки
- На многих языках также можно разрабатывать краулеры, но они не очень всеобъемлющие.Они используются в соответствии с реальным стеком технологий и сценариями разработки.Языки — это только инструменты, а идеи — общие.
Основные навыки для рептилий
Чтобы заниматься разработкой поисковых роботов, вам необходимо иметь относительно всестороннее и глубокое понимание WEB, чтобы вы могли быть полезными, когда позже столкнетесь с антикраулерами.
- понимать HTML
- Будут использовать теги HTML для создания страниц, знать, как анализировать теги в модели DOM и извлекать желаемое содержимое данных.
- Узнать о CSS
- Понимать CSS и анализировать содержимое данных в стиле
- Узнать о JS
- Базовый синтаксис JS, может писать и читать, а также понимать библиотеки JS: Jquery, Vue и т. д., может использовать инструменты разработчика для отладки JS.
- Понимание JSON
- Понимание данных JSON, сериализация и десериализация данных, а также получение содержимого данных путем анализа объектов JSON.
- Узнать о HTTP/HTTPS
- Способность анализировать информацию о запросах и информацию об ответах, а также создавать запросы с помощью кода.
- будет регулярно анализироваться
- Извлеките желаемое содержимое данных с помощью регулярного выражения, соответствующего строкам, которые соответствуют правилам.
- операции с базой данных
- Храните просканированные данные с помощью операций с базой данных, таких как: синтаксис MYSQL.
- Будет использовать инструмент захвата пакетов
- Инструмент отладки разработчика браузера F12 (рекомендуется: Google), столбец Network (сеть) может получать информацию о захвате пакетов
- Инструменты: Charles, Fiddler (с возможностью захвата HTTPS, захвата APP)
- Интерфейс данных или адрес можно отфильтровать с помощью инструмента захвата пакетов, а информацию о запросе и информацию об ответе можно проанализировать, чтобы найти поле или HTML-тег, в котором находятся данные.
- использовать инструменты разработчика
- Браузер F12, чтобы открыть инструменты разработчика
- Необходимо использовать инструменты разработчика для отладки HTML, CSS, JS
- будет имитировать запрос
- Инструменты: Чарльз, Скрипач, Почтальон
- Моделируя запрос, анализируйте необходимую информацию, требуемую запросом, такую как: параметры, файлы cookie, заголовки запроса, знайте, как имитировать запрос, и знайте, как его построить при кодировании.
- Может найти данные
- Данные находятся в API: внешнее/собственное приложение запрашивает API данных, большая часть данных, возвращаемых API, находится в формате JSON, а затем обрабатывается и отображается.
- Данные в HTML: проверьте исходный HTML-код страницы. Если в исходном коде есть данные, которые вы хотите получить, это означает, что данные были связаны в HTML на стороне сервера.
- Данные находятся в коде JS: проверьте исходный код HTML страницы.Если полученные данные не в HTML и API данных не запрашивается, вы можете проверить, привязаны ли данные к переменной JS.
- развернет
- Его можно развернуть на серверах Windows или Linux, использовать инструменты для мониторинга процесса обхода, а затем выполнять регулярное обучение ротации и сканирование.
Навыки противостояния рептилиям
Антикраулеры можно разделить на服务端限制
а также前端限制
服务端限制
: Ограничение запросов строк на стороне сервера, чтобы сканеры не могли запрашивать данные.
前端限制
: внешний интерфейс использует теги CSS и HTML, чтобы вмешиваться и скрывать ключевые данные, чтобы сканеры не могли легко получить данные.
Установите заголовок запроса (服务端限制
)
- Referer
- User-Agent
- …
Правила подписи (服务端限制
)
- Если это запрос, инициированный JS, правила подписи можно найти в функции JS, а затем подпись строится по правилам
- Если это запрос, инициированный APP, это может быть внешний интерфейс, вызывающий метод нативной инкапсуляции, или инициированный нативно.Это относительно неразрешимо, и пакет APP необходимо декомпилировать, что может не увенчаться успехом.
задержка или случайная задержка (服务端限制
)
- Если запрос ограничен, рекомендуется попробовать задержку запроса, конкретная задержка составляет xxx миллисекунд/x секунд, а соответствующее время устанавливается в соответствии с реальной ситуацией.
IP-адрес прокси (服务端限制
)
- Если отложенный запрос по-прежнему ограничен или его необходимо отложить на долгое время, чтобы он не был ограничен, вы можете рассмотреть возможность использования прокси-IP и использовать его в соответствии с реальной сценой и законом ограничений. в основном обходит ограничение
- В настоящее время существует множество платформ прокси IP-сервисов, которые взимают плату, и существуют различные методы обслуживания.Вы можете найти подробную информацию.Сборы, как правило, находятся в приемлемом диапазоне.
Ограничения входа (服务端限制
)
- Запрос на получение информации о файлах cookie вошедшего в систему пользователя
- Если срок действия информации файла cookie вошедшего в систему пользователя истекает в течение фиксированного периода времени, вам необходимо найти интерфейс входа в систему, имитировать вход в систему, сохранить файл cookie, а затем инициировать запрос данных и повторить этот шаг после истечения срока действия файла cookie.
Ограничения капчи (服务端限制
)
- Простой проверочный код, позволяющий идентифицировать и читать буквы или цифры на картинке, можно реализовать с помощью модуля пакета распознавания картинок
- Если проверочный код сложный и не может быть идентифицирован с помощью распознавания изображений, вы можете рассмотреть возможность использования стороннего сервиса тарификации.
Предел вмешательства обфускации CSS/HTML (前端限制
)
Фронтенд вмешивается и путает ключевые данные через CSS или HTML-теги.Чтобы взломать, нужно сэмплировать и анализировать, находить правила, а затем заменять их правильными данными.
1 .шрифт, интерференция пользовательского шрифта
Например, столбцы:Car X Home на постах,кот х фильм рейтинг фильма
<!--css-->
<!--找到://k3.autoimg.cn/g13/M05/D3/23/wKjByloAOg6AXB-hAADOwImCtp047..ttf-->
<style>
@font-face {font-family: 'myfont';src: url('//k2.autoimg.cn/g13/M08/D5/DD/wKgH41oAOg6AMyIvAADPhhJcHCg43..eot');src: url('//k3.autoimg.cn/g13/M08/D5/DD/wKgH41oAOg6AMyIvAADPhhJcHCg43..eot?#iefix') format('embedded-opentype'),url('//k3.autoimg.cn/g13/M05/D3/23/wKjByloAOg6AXB-hAADOwImCtp047..ttf') format('woff');}
</style>
<!--html-->
<!--会员招募中-->
<div> Mercedes C+ 会员招募<span style='font-family: myfont;'></span></div>
<!--
从html中获取【html中文编码】=
然后解析ttf文件得到【ttf中文编码】列表
匹配发现【ttf中文编码】=uniF159可以与【html中文编码】=匹配,在第7个,第7个中文就是"中"
(抽样分析会发现ttf中中文位置是固定的,中文编码是动态变化的,所以只要映射出【ttf中文编码】索引就可以知道中文字符了)
-->
Разрушение идей:
Найдите адрес файла шрифта ttf, загрузите его, используйте пакет модуля анализа шрифтов для анализа файла ttf, проанализируйте набор кодов шрифтов, сопоставьте его с текстовым кодом в dom, а затем сопоставьте его в соответствии с серийный номер закодирован в китайском языке ttf
Вы можете использовать инструмент FontForge/FontCreator для открытия файлов ttf для анализа.
2 .Псевдоэлемент скрыт
Используйте псевдоэлементы для отображения важных данных
Например:Автомобиль Х Главная
<!--css-->
<style>
.hs_kw60_configod::before {
content: "一汽";
}
.hs_kw23_configod::before {
content: "大众";
}
.hs_kw26_configod::before {
content: "奥迪";
}
</style>
<!--html-->
<div>
<span class="hs_kw60_configod"></span>
-
<span class="hs_kw23_configod"></span>
<span class="hs_kw26_configod"></span>
</div>
Разрушение идей:
Найдите файл стиля, а затем замените содержимое содержимого в соответствующем классе в CSS в соответствии с именем класса в теге HTML.
3 . backgroud-image
Отображение чисел/символов через смещение позиции фонового изображения, например: цена, рейтинг и т. д.
Отображение на основе значения background-position и номера изображения
4 .вмешательство в HTML-тег
Препятствовать сбору данных, добавляя теги скрытого содержимого к тегам важных данных.
Например:прокси-платформа xxIP
<!--html-->
<td class="ip">
<p style="display:none;">2</p>
<span>2</span>
<span style="display:inline-block;"></span>
<div style="display: inline-block;">02</div>
<p style="display:none;">.1</p>
<span>.1</span>
<div style="display:inline-block;"></div>
<span style="display:inline-block;"></span>
<div style="display:inline-block;">09</div>
<span style="display: inline-block;">.</span>
<span style="display:inline-block;">23</span>
<p style="display:none;">7</p>
<span>7</span>
<p style="display:none;"></p>
<span></span>
<span style="display: inline-block;">.</span>
<div style="display: inline-block;"></div>
<p style="display:none;">3</p>
<span>3</span>
<div style="display: inline-block;">5</div>:
<span class="port GEA">80</span>
</td>
<!--js-->
<script>
$(".ip:eq(0)>*:hidden").remove()
$(".ip:eq(0)").text()
</script>
<!--
输出:202.109.237.35:80
通过移除干扰标签里有display:none隐藏标签,然后再获取text就不会有干扰的内容了
-->
Разрушение идей:
Отфильтруйте теги HTML, которые мешают запутыванию, или читайте только содержимое тегов HTML, которые являются допустимыми данными.
... (Насколько велика антирептильная дыра в мозгу, насколько непристойна идея демонтажа антирептилий)
Для предотвращения отравления
- Некоторые платформы не ограничивают и не блокируют сканеры после их обнаружения, а предоставляют сканерам вводящие в заблуждение данные, что влияет на принятие неверных решений компаниями-конкурентами.
- Чтобы предотвратить отравление, данные должны быть отобраны и проверены.
Суммировать
- В настоящее время большинство малых и средних платформ имеют относительно слабую осведомленность о защите от краулеров, что привело к преобладанию краулеров.С помощью краулеров они могут получить больше преимуществ при относительно небольших затратах.
- Добыча, анализ и применение данных о конкурирующих продуктах играют ключевую роль в росте бизнеса, а разработка поисковых роботов является важной технологией для компаний, производящих интернет-продукты.
- В настоящее время нет технологии, которая может полностью избежать краулеров, поэтому добавление стратегии против краулеров просто увеличивает определенный порог сложности.Пока технология демонтажа достаточно сложна, ее все еще можно преодолеть.
- Анти-рептилия и анти-анти-рептилия - это состязание технологий, и эта война без пороха никогда не закончится. (Почему программисты должны смущать программистов)
код для справки
Синтаксический анализ шрифтов C# и реализация Python
- C#
/// 需要引入PresentationCore.dll
private void Test() {
string path = @"F:\font.ttf";
//读取字体文件
PrivateFontCollection pfc = new PrivateFontCollection();
pfc.AddFontFile(path);
//实例化字体
Font f = new Font(pfc.Families[0], 16);
//设置字体
txt_mw.Font = f;
//遍历输出
var families = Fonts.GetFontFamilies(path);
foreach (System.Windows.Media.FontFamily family in families) {
var typefaces = family.GetTypefaces();
foreach (Typeface typeface in typefaces) {
GlyphTypeface glyph;
typeface.TryGetGlyphTypeface(out glyph);
IDictionary<int, ushort> characterMap = glyph.CharacterToGlyphMap;
var datas = characterMap.OrderBy(d => d.Value).ToList();
foreach (KeyValuePair<int, ushort> kvp in datas) {
var str = $"[{kvp.Value}][{kvp.Key}][{(char)kvp.Key}]\r\n";
txt_mw.AppendText(str);
}
}
}
}
- python
# pip install TTFont
from fontTools.ttLib import TTFont
from fontTools.merge import *
me = Merger()
font = TTFont('./font.ttf')
cmaps = font.getBestCmap()
orders = font.getGlyphOrder()
# font.saveXML('F:/1.xml')
print cmaps
print orders
саморекомендация
- Чтобы начать работу с поисковыми роботами, вы можете обратиться к другой моей статье:(Основные упражнения больших разговорных рептилий)
- Код входа сканера может относиться к моему проекту Gtihub.(ПаукДемо)
для справки
- Насколько велика дыра в мозгу фронтенд-инженеров для борьбы с краулерами?
- Какие есть интересные тактики борьбы с рептилиями?
Если вам есть что сказать, пожалуйста, оставьте сообщение
Пожалуйста, указывайте оригинальный адрес при перепечатке, спасибо за сотрудничество
Старые утюги обратите внимание на мой публичный аккаунт WeChat «Dahua WEB Development» и следите за моими оригинальными сообщениями в блоге.
Время от времени рекомендуйте технические посты в блогах, связанные с WEB-разработкой, поощряйте и общайтесь друг с другом! QR-код↓