ការឆ្លងកាត់ទិន្នន័យដោយ Scraper លើគម្រោងឥតគិតថ្លៃរបស់ Cloudflare៖ អ្វីដែលបានបញ្ឈប់វា និងអ្វីដែលយើងបានបិទចោល
ប្រតិបត្តិការ
នៅព្រឹកមួយ គេហទំព័រលក់ទំនិញមួយរបស់យើងបានឈប់បើក។ Cloudflare បានបង្ហាញភ្ញៀវទស្សនាទំព័រកំហុស 524 ប្រភពដើម (origin) ចំណាយពេលពីពីរទៅប្រាំមួយនាទីក្នុងការបង្កើតទំព័រមួយ ហើយគ្មានអ្វីមកជូនដំណឹងយើងអស់រយៈពេលប្រហែលដប់ម៉ោង។ មូលហេតុគឺស្ថិតនៅលើ scraper មួយដែលកំពុងធ្វើការតាមរយៈ residential proxies ក្នុងអត្រាប្រហែល 225 សំណើក្នុងមួយវិនាទី។
រូបរាងនៃការឆ្លងកាត់ទិន្នន័យ
- អាសយដ្ឋានរាប់ពាន់ ដោយសំណើមួយទៅបីក្នុងមួយអាសយដ្ឋាន។ ការតភ្ជាប់អ៊ីនធឺណិតផ្ទាល់ខ្លួននៅសហរដ្ឋអាមេរិក ស្ពាន់ធ័រ បារាំង ប្រេស៊ីល អង់គ្លេស និងទីកន្លែងផ្សេងៗទៀត ដែលជាប្រភេទចរាចរណ៍ដែលបណ្តាញ residential proxy ជួលចេញ។
- Chrome user agents នៅលើ Mac ដោយមានលេខកំណែពី 103 ដល់ 151។
- ស្ទើរតែគ្មាន cookie ឬ Referer។ ក្នុងចំណោមសំណើចំនួន 2,697 ដែលយើងបានសាកល្បងនៅលើ server មានតែ 4 ប៉ុណ្ណោះដែលមាន cookie និង 4 ដែលមាន Referer។
- ប្រភេទអតិថិជនពីរ។ ប្រហែលពាក់កណ្តាលមិនបានផ្ញើ header
Sec-Fetch-*និង client hints ទេ៖ វាជា script ដែលបានចម្លង user agent string។ ពាក់កណ្តាលទៀតបានផ្ញើ browser headers ពេញលេញ៖ វាជា headless browser។
គ្រប់ទំព័រត្រូវបាន render សម្រាប់គ្រប់សំណើ ដូច្នេះ worker នីមួយៗបានដាក់ render រាប់រយចូលក្នុងជួរ ហើយបានប៉ះនឹងដែនកំណត់ CPU របស់វា។
ហេតុអ្វីបានជាដែនកំណត់តាមអាសយដ្ឋានមិនអាចជួយបាន
ដែនកំណត់អត្រា (rate limit) រាប់សំណើតាមអាសយដ្ឋាន។ ដោយសំណើមួយទៅបីពីអាសយដ្ឋានរាប់ពាន់ គ្មានអាសយដ្ឋានណាមួយដែលចូលជិតដែនកំណត់ទេ។ ការបិទប្រទេសនឹងបិទទាំងភ្ញៀវទស្សនារបស់យើង។ អ្វីដែល scraper មិនអាចបន្លំបានដោយថ្លៃថោក គឺការធ្វើឱ្យដូចជា browser ដែលធ្លាប់មកទស្សនាគេហទំព័រពីមុន។
នៅត្រឹម Cloudflare's edge៖ ច្បាប់ឥតគិតថ្លៃបី
គម្រោងឥតគិតថ្លៃអនុញ្ញាតឱ្យមាន WAF custom rules ចំនួនប្រាំក្នុងមួយ zone។ យើងបានប្រើបី ដោយទាំងអស់ប្រើ managed challenge ជំនួសឱ្យការបិទ (block) ដូច្នេះបុគ្គលដែលត្រូវបានចាប់ខុស អាចចុចបន្តបាន៖
- Browser ក្លែងក្លាយ៖ សំណើ GET ដែល user agent មាន
Chrome/ហើយគ្មាន headerSec-Fetch-Mode។ Chrome គ្រប់កំណែតាំងពីឆ្នាំ 2019 ផ្ញើវា។ - Scraper clouds៖ សំណើទំព័រពីបណ្តាញរបស់ Alibaba, Tencent និង Huawei Cloud ដែលជាប្រភពនៃការបញ្ជាក់អត្តសញ្ញាណ (challenge) ភាគច្រើនរបស់យើង។
- បន្ទាន់ បិទដោយលំនាំដើម៖ សំណើ GET ដែលគ្មាន cookie សោះ និងគ្មាន Referer។ បុគ្គលដែលធ្លាប់មកទស្សនាគេហទំព័រ ឬដែលមកតាមតំណភ្ជាប់ ឆ្លងកាត់ដោយមិនត្រូវបានប៉ះពាល់; ចំណែកឯ scraper ដែលមិនរក្សាទុក cookie នឹងជួបប្រទះការបញ្ជាក់អត្តសញ្ញាណ (challenge) គ្រប់សំណើ។ យើងបើកវាតែពេលមានការឆ្លងកាត់ទិន្នន័យប៉ុណ្ណោះ ព្រោះវាក៏បញ្ជាក់អត្តសញ្ញាណ (challenge) អ្នកដែលវាយអាសយដ្ឋានចូលក្នុង browser ថ្មីផងដែរ។
ទាំងបីនេះអនុញ្ញាតឱ្យ Cloudflare ឆ្លងកាត់ bot ដែលបានផ្ទៀងផ្ទាត់, user agent ដែលបញ្ជាក់ខ្លួនឯងថាជា robot, អាសយដ្ឋានរបស់យើង, ផ្លូវ API និង webhook, ព្រមទាំងឯកសារដែលមិនមែនជាទំព័រ។ ពីរថ្ងៃក្រោយមក ទឹកជំនន់នៅតែបន្ត៖ ក្នុងរយៈពេលមួយម៉ោង ច្បាប់ប្រឆាំងក្បៀសក្បាល-browser បានបញ្ជូនសំណួរទៅផ្ទៀងផ្ទាត់ជាង 10,000 ដង។ ព្រឹត្តិការណ៍ 10,000 ដែល Cloudflare ប្រគល់ឱ្យក្នុងមួយសំណួរ មកពីអាសយដ្ឋាន 9,627 គ្មានអាសយដ្ឋានណាមួយមានលើសពី 4។
នៅប្រភពដើម៖ ទ្វារមួយនៅក្នុងកម្មវិធី
ផ្នែក headless មាន header ពេញលេញរបស់ browser ដូច្នេះច្បាប់នៅ edge តែមួយមុខមិនអាចចាប់វាបានទេ ខណៈដែលច្បាប់បន្ទាន់ត្រូវបានបិទ។ នៅក្នុងកម្មវិធីខ្លួនឯង យើងដាក់ middleware តូចមួយនៅពីមុខកម្មវិធីបង្កើតទំព័រ៖
- user agent របស់ Chrome ដែលគ្មានទាំង
Sec-Fetch-Modeនិង client hints នឹងទទួលបាន 403 មុនពេលធ្វើការណាមួយ; - អ្នកចូលមិនស្គាល់មុខ ដែលគ្មាន cookie របស់យើង និងគ្មាន Referer ត្រូវបានបម្រើតែនៅពេលដែល worker មានសមត្ថភាពសល់ ក្នុងអត្រាប៉ុន្មានទំព័រក្នុងមួយវិនាទី។ លើសពីនេះ ទំព័រ 503 ទំហំ 400-byte នឹងកំណត់ cookie មួយ និងផ្ទុកឡើងវិញបន្ទាប់ពីពីរវិនាទី។ មនុស្សម្នាក់នឹងទទួលបានទំព័រនៅព្យាយាមលើកទីពីរ; កម្មវិធី scraper ដែលមិនរក្សាទុក cookie នឹងមិនដែលទទួលបានទេ។
ក្នុងនាទីដំបូងរបស់វា ទ្វារបានបដិសេធក្បៀសក្បាល-browser ក្លែងក្លាយប្រហែល 6,700 និងបានបណ្តេញអ្នកចូលមិនស្គាល់មុខប្រហែល 6,700 ខណៈដែលបម្រើអ្នកចូលមិនស្គាល់មុខប្រហែល 9 ទំព័រក្នុងមួយវិនាទី។ សំណើយឈប់ធ្លាក់ចុះដល់សូន្យ, CPU របស់ workers ធ្លាក់ចុះពីកម្រិតកំពូលរបស់វាមកត្រឹម 12 ទៅ 15 ភាគរយ, និងអនុស្សាវរីយ៍របស់វាពី 4 ទៅ 5 GB ក្នុងមួយគ្រឿង មកត្រឹម 0.65 GB។
អ្វីដែលយើងបានបិទទុក
- Bot Fight Mode។ វាបញ្ជូនសំណួរទៅផ្ទៀងផ្ទាត់ចរាចរណ៍ស្វ័យប្រវត្តិ និងមិនអាចលើកលែងបានដោយច្បាប់ផ្ទាល់ខ្លួននៅលើគម្ម៉ង់ Free ទេ ហើយវាបានចាប់យក webhook របស់អ្នកផ្តល់សេវាបង់ប្រាក់របស់យើង។
- Under Attack mode សម្រាប់ zone ទាំងមូល។ វាបញ្ជូនអ្នកចូលទស្សនា, API client និង webhook ទាំងអស់ឆ្លងកាត់ interstitial។ ច្បាប់បន្ទាន់ធ្វើការងារដូចគ្នាសម្រាប់តែសំណើទំព័ររបស់អ្នកចូលមិនស្គាល់មុខ។
- ច្បាប់កំណត់អត្រា (rate-limiting) នៃគម្ម៉ង់ Free។ វាគិតគូរតាមអាសយដ្ឋាន ដែលទឹកជំនន់នេះមិនដែលធ្វើឱ្យវាដំណើរការ។
- ការបិទ AI crawler។ យើងចង់ត្រូវបានរកឃើញដោយ AI search assistant ហើយ crawler ទាំងនោះមិនមែនជាបញ្ហាទេ។
ចំណុចសំខាន់
ទឹកជំនន់តាមរយៈ residential proxy ងាយស្រួលក្នុងការចាប់អារម្មណ៍តាមរយៈអ្វីដែលវាខ្វះខាត៖ header របស់ browser fetch, cookie និង Referer។ បញ្ជូនសំណួរទៅផ្ទៀងផ្ទាត់វានៅ edge, រក្សាអ្នកចូលមិនស្គាល់មុខនៅក្នុងកម្រិតដែល workers របស់អ្នកអាចបង្កើតទំព័របាន, និងធានាថាអ្វីមួយនៅក្រៅ server ត្រូវបានគេសង្កេតឃើញនៅពេលដែលទំព័រមួយឈប់បើក។ Night Watch ប្រមូលផ្តុំទាំងបីនេះ៖ ការត្រួតពិនិត្យ, ច្បាប់ជាមួយកុងតាក់ស្វ័យប្រវត្តិសម្រាប់ច្បាប់បន្ទាន់, និងទ្វារសម្រាប់កម្មវិធីគេហទំព័រ Python។