0% ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ΠΎ

Автоматизований ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис Ρ– Π·Π°ΠΏΠΈΡ‚ ΠΏΠΎΡˆΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° - Π½Π΅ ΠΎΠ΄Π½Π΅ ΠΉ Ρ‚Π΅ самС

Автоматизований ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис Ρ– Π·Π°ΠΏΠΈΡ‚ Π²Ρ–Π΄ ΠΏΠΎΡˆΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° ΠΌΠ°ΡŽΡ‚ΡŒ Ρ€Ρ–Π·Π½Π΅ походТСння Ρ‚Π° Ρ€Ρ–Π·Π½ΠΈΠΉ зміст. Π―ΠΊΡ‰ΠΎ звСсти Ρ—Ρ… Π΄ΠΎ ΠΎΠ΄Π½Ρ–Ρ”Ρ— ΠΎΠ·Π½Π°ΠΊΠΈ, Π°Π½Π°Π»Ρ–Ρ‚ΠΈΠΊΠ° Ρ– ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΏΠΎΠ²Π΅Π΄Ρ–Π½ΠΊΠΈ швидко ΠΏΠΎΡ‡Π½ΡƒΡ‚ΡŒ ΠΏΠ»ΡƒΡ‚Π°Ρ‚ΠΈ Π΄Π²Ρ– Ρ€Ρ–Π·Π½Ρ– Ρ€Π΅Ρ‡Ρ–.

6 Товтня 2026 Ρ€. 7 Ρ…Π² Ρ‡ΠΈΡ‚Π°Π½Π½ΡΠ›Π°Ρ€Π°Π²Π΅Π»ΡŒ

Π‘Π»ΠΎΠ²ΠΎ "Π±ΠΎΡ‚" Π·Π΄Π°Ρ”Ρ‚ΡŒΡΡ Π΄ΠΎΡΡ‚Π°Ρ‚Π½ΡŒΠΎ простим, ΠΏΠΎΠΊΠΈ систСма Π½Π΅ ΠΏΠΎΡ‡ΠΈΠ½Π°Ρ” використовувати ΠΉΠΎΠ³ΠΎ Π² ΠΊΡ–Π»ΡŒΠΊΠΎΡ… Ρ€Ρ–Π·Π½ΠΈΡ… місцях.

Наприклад, Ρƒ нас ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ зарСєстрований Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис, який Π²ΠΈΠΊΠΎΠ½ΡƒΡ” Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½Ρ– Π΄Ρ–Ρ— Ρ‡Π΅Ρ€Π΅Π· Π·Π²ΠΈΡ‡Π°ΠΉΠ½Ρƒ Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–ΡŽ.

Π† ΠΎΠΊΡ€Π΅ΠΌΠΎ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π³ΠΎΡΡ‚ΡŒΠΎΠ²ΠΈΠΉ HTTP-Π·Π°ΠΏΠΈΡ‚ Π²Ρ–Π΄ ΠΏΠΎΡˆΡƒΠΊΠΎΠ²ΠΎΠ³ΠΎ Ρ€ΠΎΠ±ΠΎΡ‚Π° Π°Π±ΠΎ Ρ–Π½ΡˆΠΎΠ³ΠΎ сканСра.

Π’ ΠΎΠ±ΠΎΡ… Π²ΠΈΠΏΠ°Π΄ΠΊΠ°Ρ… ΠΌΠΎΠΆΠ½Π° сказати "Ρ†Π΅ Π±ΠΎΡ‚". АлС Ρ‚Π΅Ρ…Π½Ρ–Ρ‡Π½ΠΎ Ρ– сСмантично Ρ†Π΅ Π΄Π²Ρ– Ρ€Ρ–Π·Π½Ρ– Ρ€Π΅Ρ‡Ρ–.

Одна описує суб’єкта систСми. Π†Π½ΡˆΠ° описує ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΠΉ Π·Π°ΠΏΠΈΡ‚.

Π― намагаюся Π½Π΅ використовувати ΠΎΠ΄ΠΈΠ½ boolean для Π΄Π²ΠΎΡ… Ρ€Ρ–Π·Π½ΠΈΡ… Π·Π°ΠΏΠΈΡ‚Π°Π½ΡŒ: "Ρ‰ΠΎ Ρ†Π΅ Π·Π° ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис?" Ρ– "Ρ‰ΠΎ Ρ†Π΅ Π·Π° HTTP-Π·Π°ΠΏΠΈΡ‚?".

Π‘ΠΏΠΎΡ‡Π°Ρ‚ΠΊΡƒ я Ρ€ΠΎΠ·Π΄Ρ–Π»ΡΡŽ Π΄Π²Π° Ρ€Ρ–Π·Π½Ρ– питання

Π Ρ–Π·Π½Ρ– Ρ€Ρ–Π²Π½Ρ– класифікації
ΠŸΠΈΡ‚Π°Π½Π½Ρ 1 Π©ΠΎ Ρ†Π΅ Π·Π° ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис? - Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ користувач- Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис  ΠŸΠΈΡ‚Π°Π½Π½Ρ 2 Π©ΠΎ Ρ†Π΅ Π·Π° HTTP-Π·Π°ΠΏΠΈΡ‚? - Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€- сканСр- Ρ–Π½ΡˆΠΈΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊΠ»Ρ–Ρ”Π½Ρ‚

ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΎΠ³ΠΎ запису ΠΆΠΈΠ²Π΅ довшС Π·Π° ΠΎΠ΄ΠΈΠ½ Π·Π°ΠΏΠΈΡ‚.

Π’ΠΎΠ½Π° описує сам запис користувача Ρ– ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ встановлСна адміністратором Π°Π±ΠΎ Ρ–Π½ΡˆΠΈΠΌ Π½Π°Π΄Ρ–ΠΉΠ½ΠΈΠΌ Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎΠΌ.

ВизначСння сканСра ΡΡ‚ΠΎΡΡƒΡ”Ρ‚ΡŒΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ HTTP-Π·Π°ΠΏΠΈΡ‚Ρƒ. Наступний Π·Π°ΠΏΠΈΡ‚ ΠΌΠΎΠΆΠ΅ ΠΌΠ°Ρ‚ΠΈ Ρ–Π½ΡˆΡ– ΠΎΠ·Π½Π°ΠΊΠΈ.

Π’ΠΎΠΌΡƒ Π½Π°Π²Ρ–Ρ‚ΡŒ ΠΆΠΈΡ‚Ρ‚Ρ”Π²ΠΈΠΉ Ρ†ΠΈΠΊΠ» Ρ†ΠΈΡ… Π΄Π²ΠΎΡ… сигналів Ρ€Ρ–Π·Π½ΠΈΠΉ.

Один is_bot ΠΏΡ€ΠΈΡ…ΠΎΠ²ΡƒΡ” походТСння значСння

PHP - Π”Π²Π° сигнали Π·Π²Π΅Π΄Π΅Π½Ρ– Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСння
if ($user?->is_bot || $requestIsBot) {    $isBot = true;}

ΠŸΡ–ΡΠ»Ρ Ρ‚Π°ΠΊΠΎΠ³ΠΎ об’єднання ΠΊΠΎΠ΄ ΡƒΠΆΠ΅ Π½Π΅ Π·Π½Π°Ρ”, Ρ‡ΠΎΠΌΡƒ самС ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π² true.

Π¦Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис?

Π¦Π΅ Π³ΠΎΡΡ‚ΡŒΠΎΠ²ΠΈΠΉ сканСр?

Π¦Π΅ Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠΎΠ²Π°Π½ΠΈΠΉ користувач, який Π·Π°Ρ€Π°Π· Ρ€ΠΎΠ±ΠΈΡ‚ΡŒ Π·Π°ΠΏΠΈΡ‚ Ρ–Π· Π½Π΅Π·Π²ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠ»Ρ–Ρ”Π½Ρ‚Π°?

Для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ if різниця ΠΌΠΎΠΆΠ΅ здаватися нСваТливою. Для Π°Π½Π°Π»Ρ–Ρ‚ΠΈΠΊΠΈ, Π·Π²Ρ–Ρ‚Ρ–Π² Ρ– ΠΏΠΎΠ΄Π°Π»ΡŒΡˆΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» Π²ΠΎΠ½Π° Π΄ΡƒΠΆΠ΅ швидко стає ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎΡŽ.

ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΎΠ³ΠΎ запису описує суб’єкта

PHP - ΠžΠΊΡ€Π΅ΠΌΠ° сСмантика для ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΎΠ³ΠΎ запису
enum AccountKind: string{    case HUMAN = 'human';    case AUTOMATED = 'automated';}

Π¦Π΅ лишС ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΈΠΉ спосіб модСлювання.

Для ΠΌΠ΅Π½Π΅ Π²Π°ΠΆΠ»ΠΈΠ²Ρ–ΡˆΠ΅ Ρ‚Π΅, Ρ‰ΠΎ класифікація Π½Π°Π»Π΅ΠΆΠΈΡ‚ΡŒ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΎΠΌΡƒ запису Ρ– ΠΌΠ°Ρ” Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»Π΅ Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎ.

Наприклад, систСма ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‚ΠΈ, Ρ‰ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΠΉ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис створСний для Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΎΡ— Ρ€ΠΎΠ±ΠΎΡ‚ΠΈ.

Π¦Π΅ Π½Π΅ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½ΠΎ Ρ‰ΠΎΡ€Π°Π·Ρƒ Π²Π³Π°Π΄ΡƒΠ²Π°Ρ‚ΠΈ Π·Π° User-Agent.

ВиявлСння сканСра описує Π·Π°ΠΏΠΈΡ‚, Π° Π½Π΅ користувача

PHP - ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡ‚Ρƒ
final readonly class RequestClassification{    public function __construct(        public bool $isCrawler,        public ?string $crawlerFamily,    ) {}}

Π’Π°ΠΊΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΡΡ‚ΠΎΡΡƒΡ”Ρ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡ‚Ρƒ.

Π’Ρ–Π½ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ ΠΎΡ‚Ρ€ΠΈΠΌΠ°Π½ΠΈΠΉ Π·Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ, User-Agent, Π²Ρ–Π΄ΠΎΠΌΠΈΠΌΠΈ сканСр-сімСйствами Π°Π±ΠΎ Ρ–Π½ΡˆΠΈΠΌΠΈ bounded-сигналами.

АлС Ρ†Π΅ всС ΠΎΠ΄Π½ΠΎ характСристика Π·Π°ΠΏΠΈΡ‚Ρƒ, Π° Π½Π΅ Π΄ΠΎΠ²Ρ–Ρ‡Π½Π° характСристика ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΎΠ³ΠΎ запису.

Π“ΠΎΡΡ‚ΡŒΠΎΠ²ΠΈΠΉ сканСр Π²Π·Π°Π³Π°Π»Ρ– ΠΌΠΎΠΆΠ΅ Π½Π΅ ΠΌΠ°Ρ‚ΠΈ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΎΠ³ΠΎ запису

ВиявлСння сканСра Π±Π΅Π· User
HTTP request    |    +--> authenticated user?            |            +--> NO            |            v       guest request            |            +--> crawler detected

Π¦Π΅ Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π½Π΅ Π·ΠΌΡ–ΡˆΡƒΠ²Π°Ρ‚ΠΈ поняття.

Для Π·Π½Π°Ρ‡Π½ΠΎΡ— частини сканСр-Ρ‚Ρ€Π°Ρ„Ρ–ΠΊΡƒ об’єкта User Π²Π·Π°Π³Π°Π»Ρ– Π½Π΅ΠΌΠ°Ρ”.

ΠžΡ‚ΠΆΠ΅ request-level detection ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Π½Π΅Π·Π°Π»Π΅ΠΆΠ½ΠΎ Π²Ρ–Π΄ класифікації ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΡ… записів.

Автоматизований ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис ΠΌΠΎΠΆΠ΅ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π·Π²ΠΈΡ‡Π°ΠΉΠ½Ρƒ Π°Π²Ρ‚Π΅Π½Ρ‚ΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–ΡŽ

Account Ρ– request Π΄Π°ΡŽΡ‚ΡŒ Π½Π΅Π·Π°Π»Π΅ΠΆΠ½Ρ– сигнали
Account kind = automatedauthenticated = yes  Current request crawler detected = no  Π¦Π΅ всС ΠΎΠ΄Π½ΠΎΠ°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ account,Π½Π°Π²Ρ–Ρ‚ΡŒ якщо ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΈΠΉ requestΠ½Π΅ схоТий Π½Π° сканСр.

Автоматизований ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис ΠΌΠΎΠΆΠ΅ використовувати Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΈΠΉ API-ΠΊΠ»Ρ–Ρ”Π½Ρ‚ Ρ– Π½Π΅ ΠΌΠ°Ρ‚ΠΈ ΠΎΠ·Π½Π°ΠΊ сканСра Ρƒ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ….

Π―ΠΊΡ‰ΠΎ покладатися лишС Π½Π° request detection, систСма Π²Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Ρ–Π΄ΠΎΠΌΡƒ Ρ–Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†Ρ–ΡŽ ΠΏΡ€ΠΎ сам ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис.

Π—Π²ΠΎΡ€ΠΎΡ‚Π½Π΅ Ρ‚Π΅ΠΆ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅: Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ користувач Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π΅Π½ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ставати "bot account" Ρ‡Π΅Ρ€Π΅Π· ΠΎΠ΄ΠΈΠ½ ΠΏΡ–Π΄ΠΎΠ·Ρ€Ρ–Π»ΠΈΠΉ Π·Π°ΠΏΠΈΡ‚.

Π― Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΡŽΡŽ Свристику ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΠΈΡ‚Ρƒ Π½Π° постійний стан account

PHP - НСбСзпСчнС пСрСтворСння Свристики Π½Π° постійний Ρ„Π°ΠΊΡ‚
if ($crawlerDetector->matches($request)) {    $user?->update([        'is_bot' => true,    ]);}

User-Agent ΠΌΠΎΠΆΠ½Π° Π·ΠΌΡ–Π½ΠΈΡ‚ΠΈ. Π‘ΠΈΠ³Π½Π°Π» ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ Π½Π΅ΠΏΠΎΠ²Π½ΠΈΠΌ Π°Π±ΠΎ Ρ…ΠΈΠ±Π½ΠΈΠΌ.

Π’ΠΎΠΌΡƒ я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ, Ρ‰ΠΎΠ± ΠΎΠ΄Π½Π° request-level Свристика Π½Π΅ΠΎΠ±ΠΎΡ€ΠΎΡ‚Π½ΠΎ Π·ΠΌΡ–Π½ΡŽΠ²Π°Π»Π° ΠΊΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–ΡŽ користувача.

ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ account ΠΏΠΎΠ²ΠΈΠ½Π½Π° ΠΌΠ°Ρ‚ΠΈ власнС Π½Π°Π΄Ρ–ΠΉΠ½Π΅ Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎ Ρ– власні ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·ΠΌΡ–Π½ΠΈ.

Π’ Π°Π½Π°Π»Ρ–Ρ‚ΠΈΡ†Ρ– Ρ†Ρ– Π΄Π²Π° сигнали Ρ‚Π΅ΠΆ ΠΌΠ°ΡŽΡ‚ΡŒ Ρ€Ρ–Π·Π½ΠΈΠΉ зміст

НС Π²Ρ‚Ρ€Π°Ρ‡Π°Ρ‚ΠΈ Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎ класифікації
Π’ΠΈΠΌΡ–Ρ€ 1 account_kind- human- automated- guest  Π’ΠΈΠΌΡ–Ρ€ 2 request_kind- browser- crawler- other  

Π―ΠΊΡ‰ΠΎ Π°Π½Π°Π»Ρ–Ρ‚ΠΈΠΊΠ° Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ” лишС is_bot=true, ΠΏΡ–Π·Π½Ρ–ΡˆΠ΅ Π½Π΅ΠΌΠΎΠΆΠ»ΠΈΠ²ΠΎ чСсно відповісти, Ρ‰ΠΎ самС Π±ΡƒΠ»ΠΎ Π²Ρ–Π΄Ρ„Ρ–Π»ΡŒΡ‚Ρ€ΠΎΠ²Π°Π½ΠΎ.

Π¦Π΅ Π±ΡƒΠ»ΠΈ сканСр-пСрСгляди?

Π”Ρ–Ρ— Π²Ρ–Π΄ΠΎΠΌΠΈΡ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΡ… ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΡ… записів?

Обидва Ρ‚ΠΈΠΏΠΈ Ρ€Π°Π·ΠΎΠΌ?

Π ΠΎΠ·Π΄Ρ–Π»Π΅Π½Ρ– сигнали Π΄ΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ΡŒ Π·ΠΌΡ–Π½ΡŽΠ²Π°Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π²Ρ–Ρ‚Ρ–Π² Π±Π΅Π· Π²Ρ‚Ρ€Π°Ρ‚ΠΈ ΠΏΠΎΡ‡Π°Ρ‚ΠΊΠΎΠ²ΠΎΡ— сСмантики.

ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ Ρ– Ρ€Ρ–ΡˆΠ΅Π½Π½Ρ ΠΏΡ€ΠΎ Ρ„Ρ–Π»ΡŒΡ‚Ρ€Π°Ρ†Ρ–ΡŽ - Ρ‚Π΅ΠΆ Ρ€Ρ–Π·Π½Ρ– Ρ€Π΅Ρ‡Ρ–

Π©Π΅ ΠΎΠ΄Π½Π° ΠΌΠ΅ΠΆΠ°, яку я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Π·ΠΌΡ–ΡˆΡƒΠ²Π°Ρ‚ΠΈ: Ρ„Π°ΠΊΡ‚ класифікації Ρ– Ρ€Ρ–ΡˆΠ΅Π½Π½Ρ, Ρ‰ΠΎ Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ Π· Ρ†ΠΈΠΌΠΈ Π΄Π°Π½ΠΈΠΌΠΈ.

Наприклад, сканСр-Π·Π°ΠΏΠΈΡ‚ ΠΌΠΎΠΆΠ½Π° Π½Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΠΈ Π² human views, Π°Π»Π΅ всС ΠΎΠ΄Π½ΠΎ Π·Π±Π΅Ρ€Ρ–Π³Π°Ρ‚ΠΈ ΠΎΠΊΡ€Π΅ΠΌΡƒ сканСр-статистику.

Автоматизований Π°ΠΊΠ°ΡƒΠ½Ρ‚ ΠΌΠΎΠΆΠ½Π° Π½Π΅ Ρ€Π°Ρ…ΡƒΠ²Π°Ρ‚ΠΈ Π² ΠΎΠ΄Π½Ρ–ΠΉ ΠΌΠ΅Ρ‚Ρ€ΠΈΡ†Ρ–, Π°Π»Π΅ Π²Ρ€Π°Ρ…ΠΎΠ²ΡƒΠ²Π°Ρ‚ΠΈ Π² Ρ–Π½ΡˆΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΠΌΡƒ Π·Π²Ρ–Ρ‚Ρ–.

Π’ΠΎΠΌΡƒ "ΠΌΠΈ Π²ΠΈΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ" Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΠΈ "ΠΌΠΈ Π²ΠΈΠ΄Π°Π»ΠΈΠ»ΠΈ Π°Π±ΠΎ ΠΏΡ€ΠΎΡ–Π³Π½ΠΎΡ€ΡƒΠ²Π°Π»ΠΈ всі Π΄Π°Π½Ρ–".

Π—ΠΌΡ–Π½Π° класифікації Π½Π΅ ΠΏΠΎΠ²ΠΈΠ½Π½Π° пСрСписувати історичні Π΄Ρ–Ρ— користувача

Π―ΠΊΡ‰ΠΎ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис ΠΏΡ–Π·Π½Ρ–ΡˆΠ΅ ΠΏΠΎΠ·Π½Π°Ρ‡ΠΈΠ»ΠΈ як Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ, я Π½Π΅ Ρ…ΠΎΡ‡Ρƒ Ρ„Ρ–Π·ΠΈΡ‡Π½ΠΎ видаляти ΠΉΠΎΠ³ΠΎ ΠΏΠΎΠΏΠ΅Ρ€Π΅Π΄Π½Ρ– Ρ€Π΅Π°ΠΊΡ†Ρ–Ρ—, ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Ρ– Ρ‡ΠΈ Ρ–Π½ΡˆΡƒ Ρ–ΡΡ‚ΠΎΡ€Ρ–ΡŽ лишС Ρ‡Π΅Ρ€Π΅Π· Π½ΠΎΠ²Ρƒ ΠΊΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–ΡŽ.

ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ описує, як систСма Ρ–Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΡƒΡ” суб’єкта.

А ΠΏΡ€Π°Π²ΠΈΠ»Π° звітності Π²ΠΆΠ΅ Π²ΠΈΡ€Ρ–ΡˆΡƒΡŽΡ‚ΡŒ, які Π΄Π°Π½Ρ– Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΠΈ Π΄ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΡ— ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ.

Π’Π°ΠΊ Π·ΠΌΡ–Π½Π° класифікації Π½Π΅ стає Ρ€ΡƒΠΉΠ½Ρ–Π²Π½ΠΎΡŽ ΠΌΡ–Π³Ρ€Π°Ρ†Ρ–Ρ”ΡŽ історії.

Для Π΄ΠΎΠ²Π³ΠΎΡ‚Ρ€ΠΈΠ²Π°Π»ΠΎΡ— класифікації Π²Π°ΠΆΠ»ΠΈΠ²ΠΎ Π·Π½Π°Ρ‚ΠΈ Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎ Ρ€Ρ–ΡˆΠ΅Π½Π½Ρ

PHP - ΠšΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–Ρ Ρ€Π°Π·ΠΎΠΌ Ρ–Π· Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎΠΌ
final readonly class AccountClassification{    public function __construct(        public AccountKind $kind,        public string $source,    ) {}}

Π―ΠΊΡ‰ΠΎ значСння ΠΆΠΈΠ²Π΅ Π΄ΠΎΠ²Π³ΠΎ Ρ– Π²ΠΏΠ»ΠΈΠ²Π°Ρ” Π½Π° Π·Π²Ρ–Ρ‚ΠΈ Ρ‡ΠΈ ΠΏΠΎΠ²Π΅Π΄Ρ–Π½ΠΊΡƒ систСми, корисно Π·Π½Π°Ρ‚ΠΈ, Π·Π²Ρ–Π΄ΠΊΠΈ Π²ΠΎΠ½ΠΎ взялося.

Π¦Π΅ ΠΌΠΎΠΆΠ΅ Π±ΡƒΡ‚ΠΈ явнС адміністративнС Ρ€Ρ–ΡˆΠ΅Π½Π½Ρ, Π²Ρ–Π΄ΠΎΠΌΠΈΠΉ систСмний account Π°Π±ΠΎ Ρ–Π½ΡˆΠ΅ Π½Π°Π΄Ρ–ΠΉΠ½Π΅ Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎ.

Π’Π°ΠΊΠΈΠΉ ΠΏΡ–Π΄Ρ…Ρ–Π΄ Π·Π½Π°Ρ‡Π½ΠΎ Π·Ρ€ΠΎΠ·ΡƒΠΌΡ–Π»Ρ–ΡˆΠΈΠΉ Π·Π° Π½Π΅Π²Ρ–Π΄ΠΎΠΌΠΈΠΉ is_bot=true, який колись виставила якась Свристика.

Π― Ρ„ΠΎΡ€ΠΌΡƒΡŽ ΠΎΠ±ΠΈΠ΄Π²Π° сигнали Π½Π΅Π·Π°Π»Π΅ΠΆΠ½ΠΎ

Один Π·Π°ΠΏΠΈΡ‚ ΠΌΠΎΠΆΠ΅ ΠΌΠ°Ρ‚ΠΈ Π΄Π²Π° Π½Π΅Π·Π°Π»Π΅ΠΆΠ½Ρ– контСксти
Request  |  +--> Ρ” authenticated user?  |       |  |       +--> account classification  |  +--> request classifier          |          +--> crawler?          +--> crawler family?  Π”Π°Π»Ρ– ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΠΉ consumerΠ²ΠΈΡ€Ρ–ΡˆΡƒΡ”, які сигналийому ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ–.

Π©ΠΎ я ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΡΡŽ тСстами

ΠžΡΠ½ΠΎΠ²Π½Ρ– сцСнарії
1. Guest + crawler request   -> account classification відсутня   -> request Π²ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ як сканСр  2. Π—Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ authenticated user   + Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ request   -> human account   -> Π½Π΅ сканСр  3. Automated account   + Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ request   -> automated account   -> Π½Π΅ сканСр 

Π©ΠΎ я ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΡΡŽ ΠΏΠ΅Ρ€Π΅Π΄ додаванням is_bot

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚ΠΈΠΌ як Π΄ΠΎΠ΄Π°Ρ‚ΠΈ ΠΎΠ΄Π½Π΅ ΠΏΠΎΠ»Π΅ is_bot, я ΠΏΠΈΡ‚Π°ΡŽ:

  • Π― ΠΊΠ»Π°ΡΠΈΡ„Ρ–ΠΊΡƒΡŽ ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис Ρ‡ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΠΉ Π·Π°ΠΏΠΈΡ‚?

  • Π‘ΠΊΡ–Π»ΡŒΠΊΠΈ ΠΆΠΈΠ²Π΅ Ρ†Π΅ΠΉ сигнал: ΠΎΠ΄ΠΈΠ½ request Ρ‡ΠΈ вСсь ΠΆΠΈΡ‚Ρ‚Ρ”Π²ΠΈΠΉ Ρ†ΠΈΠΊΠ» account?

  • Π—Π²Ρ–Π΄ΠΊΠΈ ΠΏΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ класифікація?

  • Π§ΠΈ Ρ†Π΅ Π½Π°Π΄Ρ–ΠΉΠ½ΠΈΠΉ Ρ„Π°ΠΊΡ‚, Ρ‡ΠΈ лишС Свристика?

  • Π§ΠΈ ΠΌΠΎΠΆΠ΅ Π³ΠΎΡΡ‚ΡŒΠΎΠ²ΠΈΠΉ сканСр існувати Π±Π΅Π· User?

  • Π§ΠΈ ΠΌΠΎΠΆΠ΅ automated account Π·Ρ€ΠΎΠ±ΠΈΡ‚ΠΈ request Π±Π΅Π· сканСр-ΠΎΠ·Π½Π°ΠΊ?

  • Π§ΠΈ ΠΏΠΎΡ‚Ρ€Ρ–Π±Π½Ρ– Π°Π½Π°Π»Ρ–Ρ‚ΠΈΡ†Ρ– ΠΎΠ±ΠΈΠ΄Π²Π° сигнали ΠΎΠΊΡ€Π΅ΠΌΠΎ?

  • Π§ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅Ρ‚Π²ΠΎΡ€ΡŽΡ” Ρ„Ρ–Π»ΡŒΡ‚Ρ€Π°Ρ†Ρ–Ρ ΠΊΠ»Π°ΡΠΈΡ„Ρ–ΠΊΠ°Ρ†Ρ–ΡŽ Π½Π° видалСння історії?

Одна Π½Π°Π·Π²Π° "bot" Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Ρ” ΠΎΠ΄Π½Ρƒ модСль

Автоматизований ΠΎΠ±Π»Ρ–ΠΊΠΎΠ²ΠΈΠΉ запис Ρ– сканСр-Π·Π°ΠΏΠΈΡ‚ ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΠΎΠ±ΠΈΠ΄Π²Π° виглядати як "Π±ΠΎΡ‚ΠΈ", Π°Π»Π΅ Π²ΠΎΠ½ΠΈ ΠΎΠΏΠΈΡΡƒΡŽΡ‚ΡŒ Ρ€Ρ–Π·Π½Ρ– Ρ€Ρ–Π²Π½Ρ– систСми.

Account classification Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” Π½Π° питання, Ρ…Ρ‚ΠΎ Π΄Ρ–Ρ”.

Request detection Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” Π½Π° питання, Ρ‰ΠΎ Π²Ρ–Π΄ΠΎΠΌΠΎ ΠΏΡ€ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈΠΉ HTTP-Π·Π°ΠΏΠΈΡ‚.

Π―ΠΊΡ‰ΠΎ звСсти Ρ—Ρ… Π΄ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ boolean, систСма Π²Ρ‚Ρ€Π°Ρ‡Π°Ρ” Π΄ΠΆΠ΅Ρ€Π΅Π»ΠΎ сигналу Ρ– Π΄ΡƒΠΆΠ΅ швидко ΠΏΠΎΡ‡ΠΈΠ½Π°Ρ” Π±ΡƒΠ΄ΡƒΠ²Π°Ρ‚ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π° Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½Π½Ρ–.

Π― ΠΊΡ€Π°Ρ‰Π΅ Π·Π±Π΅Ρ€Π΅ΠΆΡƒ Π΄Π²Π° прості сигнали Π· Ρ‡Ρ–Ρ‚ΠΊΠΎΡŽ ΡΠ΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠΎΡŽ, Π½Ρ–ΠΆ ΠΎΠ΄ΠΈΠ½ Π·Ρ€ΡƒΡ‡Π½ΠΈΠΉ is_bot, значСння якого ΠΊΠΎΠΆΠ΅Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€ΠΎΠ·ΡƒΠΌΡ–Ρ” ΠΏΠΎ-своєму.

Коли ΠΎΠ΄Π½Π΅ boolean ΠΌΠΎΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΠΈ Π΄Π²Ρ– Ρ€Ρ–Π·Π½Ρ– Ρ€Π΅Ρ‡Ρ–, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°Π·Π²ΠΈΡ‡Π°ΠΉ Π½Π΅ Π² Π½Π°Π·Π²Ρ– поля, Π° Π² Ρ‚ΠΎΠΌΡƒ, Ρ‰ΠΎ модСль Π²Ρ‚Ρ€Π°Ρ‚ΠΈΠ»Π° ΠΌΠ΅ΠΆΡƒ ΠΌΡ–ΠΆ поняттями.