
បើកបន្ទះបណ្តាញនៅក្នុងឧបករណ៍អភិវឌ្ឍន៍កម្មវិធីរុករករបស់អ្នក ហើយអ្នកនឹងស្ទើរតែរកឃើញបឋមកថា User-Agent ។ វាមើលទៅដូចជាការណែនាំខ្លី: កម្មវិធីរុករកដែលកំពុងធ្វើការស្នើសុំ, ប្រព័ន្ធប្រតិបត្តិការដែលវាដំណើរការលើ, និងកំណែដែលវាអះអាងថាជា.
នោះធ្វើឱ្យវាទាក់ទាញក្នុងការចាត់ទុកបឋមកថាជាលេខសម្គាល់ឧបករណ៍ ឬសន្មត់ថាការផ្លាស់ប្តូរបន្ទាត់មួយអាចប្រែក្លាយកម្មវិធីរុករកទៅជាឧបករណ៍ផ្សេង។ គំនិតទាំងពីរគឺត្រឹមត្រូវតែមួយផ្នែកប៉ុណ្ណោះ។
ខ្សែអក្សរ User-Agent ឬ UA គឺជាព័ត៌មានភាពឆបគ្នាដែលប្រកាសដោយអតិថិជន។ វាមិនមែនជាលិខិតបញ្ជាក់អត្តសញ្ញាណដែលអាចទុកចិត្តបានទេ ហើយអតិថិជនអាចកែប្រែវាបាន។ ប៉ុន្តែវាមិនមាននៅដាច់ដោយឡែកទេ។ គេហទំព័រអាចប្រៀបធៀប UA ជាមួយ Client Hints, JavaScript APIs, screen properties, fonts, Canvas, WebGL, network context និងឥរិយាបថ។ ដូច្នេះសំណួរដែលមានប្រយោជន៍គឺមិនមែនគ្រាន់តែថាតើ UA អាចត្រូវបានផ្លាស់ប្តូរទេ ប៉ុន្តែតើវាដើរតួនាទីអ្វីនៅក្នុងផ្ទៃដែលអាចសង្កេតបានពេញលេញរបស់កម្មវិធីរុករក។
អត្ថបទនេះប្រើស្តង់ដារ HTTP និងការស្រាវជ្រាវស្នាមម្រាមដៃកម្មវិធីរុករកដើម្បីឆ្លើយសំណួរចំនួនបួន៖
- ហេតុអ្វីបានជាខ្សែអក្សរ UA មើលទៅដូចជាបំណែកនៃបុរាណវិទ្យាកម្មវិធីរុករក?
- តើ UA អាចរួមចំណែកនូវព័ត៌មានកំណត់អត្តសញ្ញាណបានប៉ុន្មាន ហើយតើយើងគួរបកស្រាយការស្រាវជ្រាវយ៉ាងដូចម្តេច?
- ហេតុអ្វីបានជាការផ្លាស់ប្តូរតែ UA អាចបង្កើតភាពមិនស្របគ្នាច្បាស់លាស់ជាងនេះ?
- តើ UA Reduction និង User-Agent Client Hints ពិតជាផ្លាស់ប្តូរអ្វីខ្លះ?
នៅក្នុងអត្ថបទនេះ UA ជាចម្បងមានន័យថាបឋមកថាសំណើ HTTP
User-Agent។ យើងក៏ពិភាក្សាអំពីnavigator.userAgentនិងnavigator.userAgentDataនៅក្នុង JavaScript ផងដែរ។ ចំណុចប្រទាក់ទាំងនេះមានទំនាក់ទំនង ប៉ុន្តែមិនដូចគ្នាជាអចិន្ត្រៃយ៍នៅគ្រប់កម្មវិធីរុករក និងបរិបទ។
1. តើ User-Agent ជាអ្វី?
ផ្នែកទី 10.1.5 នៃ RFC 9110 កំណត់ User-Agent ជាវាលដែលមានព័ត៌មានអំពីភ្នាក់ងារអ្នកប្រើប្រាស់ដែលបង្កើតសំណើ។ វេយ្យាករណ៍សាមញ្ញរបស់វាគឺ៖
User-Agent = product *( RWS ( product / comment ) )
product = token [ "/" product-version ]
នៅក្នុងភាសាធម្មតា ខ្សែអក្សរចាប់ផ្តើមដោយឈ្មោះផលិតផល ហើយអាចរួមបញ្ចូលកំណែ។ ផលិតផល ឬមតិយោបល់ជាច្រើនទៀតអាចតាមដាន។ ស្តង់ដារទទួលស្គាល់ការប្រើប្រាស់ដូចជាដំណោះស្រាយអន្តរប្រតិបត្តិការ ការធ្វើរោគវិនិច្ឆ័យ និងការវិភាគ ប៉ុន្តែវាក៏ណែនាំការអនុវត្តកុំបង្ហាញព័ត៌មានលម្អិតដែលមិនចាំបាច់៖ UA វែងជាងមុន និងជាក់លាក់ជាងបង្កើនទាំងទំហំសំណើ និងហានិភ័យស្នាមម្រាមដៃ។
UA desktop Chromium ទំនើបអាចមើលទៅដូចនេះ៖
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/145.0.0.0 Safari/537.36
ការបំបែកខ្សែអក្សរដោយចន្លោះបង្ហាញឈ្មោះជាច្រើនដែលហាក់ដូចជាមិនទាក់ទងនឹង Chrome៖
| ថូខឹន | តើវាមានន័យជាទូទៅនៅថ្ងៃនេះ | ការអានខុសទូទៅ |
|---|---|---|
Mozilla/5.0 | និមិត្តសញ្ញាភាពឆបគ្នាប្រវត្តិសាស្ត្រ | កម្មវិធីរុករកត្រូវតែជា Firefox ឬផលិតផល Mozilla |
Windows NT 10.0 | ប្រភេទវេទិកា Windows; UA ដែលកាត់បន្ថយមិនអាចបែងចែក Windows 10 ពី 11 | កុំព្យូទ័រត្រូវតែដំណើរការ Windows 10 |
Win64; x64 | តម្រុយថានេះគឺជា 64-bit Windows នៅលើស្ថាបត្យកម្ម x86-64 | វាបង្ហាញពីគំរូ CPU រាងកាយពិតប្រាកដ |
AppleWebKit/537.36 | ម៉ាស៊ីនត្រកូលនិងភាពឆបគ្នា token | Chrome នៅតែប្រើការអនុវត្តពេញលេញរបស់ Safari |
KHTML, like Gecko | ភាសាភាពឆបគ្នាប្រវត្តិសាស្រ្ត | ទាំង KHTML និង Gecko កំពុងដំណើរការ |
Chrome/145.0.0.0 | គ្រួសារ Chrome/Chromium និងកំណែសំខាន់; សមាសធាតុកំណែទាបអាចត្រូវបានកាត់បន្ថយ | វាបង្ហាញពីកំណែបំណះច្បាស់លាស់ |
Safari/537.36 | និមិត្តសញ្ញារក្សាទុកសម្រាប់ភាពឆបគ្នាជាមួយគេហទំព័រចាស់ | កម្មវិធីរុករកត្រូវតែជា Safari |
UA បានក្លាយជាពាក្យចចាមអារ៉ាមដោយសារតែគេហទំព័រដំបូងតែងតែសាខាលើឈ្មោះកម្មវិធីរុករក។ កម្មវិធីរុករកថ្មីត្រូវអះអាងថាភាពឆបគ្នាជាមួយផលិតផលចាស់ដើម្បីទទួលបានទំព័រត្រឹមត្រូវ។ សេចក្តីប្រកាសទាំងនេះបានប្រមូលផ្តុំតាមពេលវេលា បង្កើតកំណត់ត្រាប្រវត្តិសាស្ត្រដែលមិនអាចអានតាមព្យញ្ជនៈបាន។
ច្បាប់ដំបូងនៃការ UA parsing ដូច្នេះគឺសាមញ្ញ: it is a compatibility protocol, not a strict device description.
2. ហេតុអ្វីបានជាគេហទំព័រនៅតែប្រើ UA?
UA មិនត្រូវបានប្រើសម្រាប់តែការតាមដានប៉ុណ្ណោះទេ។ ការប្រើប្រាស់ស្របច្បាប់រួមមាន:
- បម្រើការត្រឡប់ទៅកម្មវិធីរុករកចាស់ដែលមានបញ្ហាភាពឆបគ្នាដែលគេស្គាល់;
- ការជ្រើសរើសកម្មវិធីដំឡើង ឬទម្រង់ទាញយកសមស្រប;
- ស្វែងរកការបរាជ័យជាក់លាក់នៅក្នុងកំណត់ហេតុរោគវិនិច្ឆ័យ;
- ការវាស់វែងទូលំទូលាយនៃកម្មវិធីរុករក-គ្រួសារ វេទិកា និងការចែកចាយកំណែធំ;
- កំណត់អត្តសញ្ញាណបន្សំដែលមិនអាចទៅរួចនៅក្នុងចរាចរណ៍ដោយស្វ័យប្រវត្តិ ឬព្យាបាល។
បញ្ហាចាប់ផ្តើមនៅពេលដែល UA sniffing ផ្លាស់ទីពីភាពឆបគ្នាតូចចង្អៀតទៅជាសមត្ថភាពទាយតាមឈ្មោះផលិតផល។ កូដអាចមើលឃើញ Chrome ហើយសន្មត់ថា API ជាក់លាក់មាន។ ការសន្មត់នោះអាចបរាជ័យនៅក្នុង WebView ដែលបានបង្កប់ កម្មវិធីរុករកដែលទទួលបានពី Chromium កម្មវិធីរុករកដែលមានគោលនយោបាយសហគ្រាស UA កក ឬម៉ាស៊ីនភ្ញៀវដែលបានផ្លាស់ប្តូរបឋមកថារបស់វា។
លំដាប់ប្រតិបត្តិការដ៏រឹងមាំជាងនេះគឺ៖
- សាកល្បង API ឬអាកប្បកិរិយាដែលត្រូវការដោយផ្ទាល់នៅពេលណាដែលការរកឃើញសមត្ថភាពអាចធ្វើទៅបាន។
- នៅពេលដែលការកំណត់អត្តសញ្ញាណកម្មវិធីរុករកមិនអាចជៀសវាងបាន សូមប្រើ parser ដែលរក្សាជាជាងកន្សោមធម្មតាអាដហុក។
- រក្សាទុកតែប្រភេទរឹងដែលផលិតផលត្រូវការពិតប្រាកដ។
- ផ្តល់ការត្រឡប់មកវិញសម្រាប់ម៉ាកដែលមិនស្គាល់ កំណែមិនស្គាល់ និងវាលដែលបាត់។
3. តើ UA ជាស្នាមម្រាមដៃកម្មវិធីរុករកមែនទេ?
កាន់តែច្បាស់ UA គឺជា ការបញ្ចូលមួយទៅស្នាមម្រាមដៃកម្មវិធីរុករក ជាធម្មតាមិនមែនជាស្នាមម្រាមដៃពេញលេញទេ។
ស្នាមម្រាមដៃកម្មវិធីរុករកមិនតម្រូវឱ្យមានលេខស៊េរីសម្ងាត់ទេ។ វាវាស់ការប្រមូលផ្តុំនៃស្ថេរភាពដែលទាក់ទងនឹងលក្ខណៈសម្បត្តិដែលបង្ហាញដោយកម្មវិធីរុករក។ UA រួមចំណែកតម្រុយអំពីគ្រួសារកម្មវិធីរុករក កំណែ និងវេទិកា។ វិមាត្រអេក្រង់ ពុម្ពអក្សរ តំបន់ពេលវេលា Canvas WebGL AudioContext និងចំណុចប្រទាក់ផ្សេងទៀតបន្ថែមព័ត៌មានបន្ថែម។
ការស្ទង់មតិដោយ Laperdrix និងសហការី Browser Fingerprinting: A Survey ពិភាក្សាអំពីបច្ចេកទេសទាំងនេះជាទម្រង់នៃការទទួលស្គាល់គ្មានរដ្ឋ។ គេហទំព័រមិនចាំបាច់ត្រូវសរសេរ Cookie ជាមុនសិន; វាអាចព្យាយាមភ្ជាប់ការចូលមើលពីគុណលក្ខណៈដែលកម្មវិធីរុករកបង្ហាញ។ "Stateless" មិនមានន័យថា server រក្សាទុកអ្វីទេ។ វាមានន័យថាសម្ភារៈទទួលស្គាល់មិនអាស្រ័យលើអត្តសញ្ញាណផ្នែកខាងអតិថិជនជាប់លាប់។
1. តើលទ្ធផល 10 ប៊ីតរបស់ក្រដាសមានន័យដូចម្តេច?
នៅក្នុងការសិក្សាឆ្នាំ 2010 Panopticlick How Unique Is Your Web Browser? Peter Eckersley បានវិភាគស្នាមម្រាមដៃកម្មវិធីរុករកប្រហែល 470,000 ។ កាសែតបានរាយការណ៍ថា:
- ស្នាមម្រាមដៃពេញលេញមានជាមធ្យមប្រហែល 18.1 ប៊ីត នៃព័ត៌មានកំណត់អត្តសញ្ញាណនៅក្នុងគំរូនោះ;
- ដាក់វិចារណញាណ ស្នាមម្រាមដៃជាមធ្យមបានកើតឡើងប្រហែលម្តងក្នុងកម្មវិធីរុករក 286,777;
- តារាងបានរាយការណ៍អំពី 10.0 ប៊ីត នៃព័ត៌មានជាមធ្យមសម្រាប់ខ្សែអក្សរ UA តែម្នាក់ឯង;
- ក្នុងចំណោមកម្មវិធីរុករកដែលមាន Flash ឬ Java បានបើក 94.2% នៃស្នាមម្រាមដៃពេញលេញគឺមានតែមួយគត់។
ព័ត៌មានខ្លួនឯងជាទូទៅត្រូវបានសរសេរជា៖
I(x) = -log₂ P(x)
ប្រសិនបើ UA ជាក់លាក់មួយកើតឡើងជាមួយនឹងប្រូបាប៊ីលីតេ 1/1024 នៅក្នុងប្រជាជន ការសង្កេតវាផ្តល់នូវព័ត៌មាន 10 ប៊ីត។ នេះមិនមានន័យថា UA មានតម្លៃពិតប្រាកដ 1,024 ឬថាវាកំណត់អត្តសញ្ញាណមនុស្សម្នាក់តែមួយគត់។ វាពិពណ៌នាអំពីភាពមិនច្បាស់លាស់ដែលការសង្កេតយកចេញជាមធ្យម។
2. ហេតុអ្វីបានជាលទ្ធផលឆ្នាំ 2010 មិនថេរសម្រាប់គេហទំព័រសព្វថ្ងៃនេះ?
លទ្ធផលនៅតែមានសារៈសំខាន់, ប៉ុន្តែវាត្រូវការយ៉ាងហោចណាស់គុណវុឌ្ឍិបី:
- អ្នកទស្សនាទំព័រសាកល្បងឯកជនភាពមិនមែនជាគំរូចៃដន្យនៃអ្នកប្រើប្រាស់អ៊ីនធឺណិតទាំងអស់នោះទេ;
- កម្មវិធីរុករក កម្មវិធីជំនួយ និងភាពចម្រុះនៃកំណែ UA ក្នុងឆ្នាំ 2010 ខុសគ្នាយ៉ាងខ្លាំងពីប្រព័ន្ធអេកូឡូស៊ីនាពេលបច្ចុប្បន្ននេះ;
- UA Reduction ការធ្លាក់ចុះផ្ទៃកម្មវិធីជំនួយ និងការការពារប្រឆាំងនឹងស្នាមម្រាមដៃបានផ្លាស់ប្តូរការចែកចាយគុណលក្ខណៈដែលអាចសង្កេតបាន។
ការសិក្សានេះគាំទ្រការអះអាងថា UA និងគុណលក្ខណៈផ្សេងទៀតអាចរួមចំណែកព័ត៌មានបែងចែកដែលអាចវាស់វែងបាន។ វាមិនគាំទ្រការនិយាយថា UA តែងតែមានពិតប្រាកដ 10 ប៊ីតនៃ entropy សព្វថ្ងៃនេះទេ។ ថាមពលស្នាមម្រាមដៃអាស្រ័យលើចំនួនប្រជាជន បង្អួចពេលវេលា គោលនយោបាយកម្មវិធីរុករក និងការរួមបញ្ចូលគ្នានៃសញ្ញា។
4. ហេតុអ្វីបានជាការផ្លាស់ប្តូរតែ UA អាចផ្ទុយទៅវិញ?
UA គឺជាសេចក្តីប្រកាសរបស់អតិថិជនដោយគ្មានភស្តុតាងគ្រីប។ ម៉ាស៊ីនមេមិនអាចអានការពិតរោងចក្ររបស់ឧបករណ៍ពីបឋមកថានេះបានទេ។ វាអាច, ទោះជាយ៉ាងណា, ពិនិត្យមើលថាតើការសង្កេតផ្សេងគ្នាគឺឆបគ្នាសមហេតុផល.
ឧបមាថា UA អះអាងថាជាកម្មវិធីរុករកតាមអ៊ីនធឺណិត ប៉ុន្តែទំព័រសង្កេតឃើញមិនមានចំណុចប៉ះទេ បង្អួចដែលស្រដៀងនឹងការបង្ហាញផ្ទៃតុ និង Client Hints ដែលរាយការណ៍ពីវេទិកាកុំព្យូទ័រ។ ការសង្កេតមួយណាមួយអាចមានករណីលើកលែងស្របច្បាប់។ ផ្ទុយគ្នាដែលមានស្ថេរភាពជាច្រើនរួមគ្នានៅតែអាចបង្កើតជាលំនាំដែលអាចចាត់ថ្នាក់បាន។
ក្រដាស Panopticlick បានចងក្រងករណីប្រៀបធៀបរួចហើយ៖ កម្មវិធីរុករកមួយចំនួនបានអះអាងថាជា iPhone ខណៈពេលដែលគាំទ្រ Flash ហើយ Firefox UAs មួយចំនួនបានបង្ហាញខ្លួនរួមជាមួយនឹងមុខងារផ្ទុកដែលមានតែនៅក្នុង Internet Explorer ប៉ុណ្ណោះ។ ឆ្នាំ 2018 FP-Scanner study បានពិនិត្យមើលបញ្ហានេះជាប្រព័ន្ធ។ ផ្នែកបន្ថែមប្រឆាំងនឹងស្នាមម្រាមដៃ និងឧបករណ៍ក្លែងបន្លំមួយចំនួនបានណែនាំភាពមិនស៊ីសង្វាក់គ្នានៅទូទាំងចំណុចប្រទាក់ អនុញ្ញាតឱ្យឧបករណ៍ចាប់សញ្ញាកំណត់គុណលក្ខណៈដែលបានកែប្រែ ហើយក្នុងករណីខ្លះ សន្និដ្ឋានកម្មវិធីរុករកដើម ឬគ្រួសារប្រព័ន្ធប្រតិបត្តិការ។
មិនមែនរាល់ភាពមិនស្របគ្នាគឺមានគ្រោះថ្នាក់ទេ។ Remote desktops, accessibility tools, enterprise policies, compatibility layers, and uncommon hardware សុទ្ធតែអាចបង្កើតបន្សំមិនធម្មតា។ ប្រព័ន្ធហានិភ័យប្រុងប្រយ័ត្នគួរតែចាត់ទុកភាពមិនស្របគ្នាជាភស្តុតាងប្រហែលជាមិនមែនជាហេតុផលដោយស្វ័យប្រវត្តិដើម្បីរារាំងអ្នកប្រើប្រាស់។
សម្រាប់ការគ្រប់គ្រង browser-profile លក្ខណៈសម្បត្តិបីមានសារៈសំខាន់៖
- ភាពស៊ីសង្វាក់គ្នាខាងក្នុង៖ UA, Client Hints, platform, architecture, touch, and screen signals មិនគួរផ្ទុយគ្នាដោយផ្ទាល់ទេ។
- ស្ថេរភាពតាមពេលវេលា៖ ទម្រង់ដែលមានអាយុកាលយូរមិនគួរផ្លាស់ប្តូរយ៉ាងខ្លាំងនៅរាល់ការបាញ់បង្ហោះដោយគ្មានហេតុផល។
- ភាពចម្រុះដែលគួរឱ្យទុកចិត្ត: ទម្រង់អាចខុសគ្នា ប៉ុន្តែការរួមបញ្ចូលគ្នាដែលបង្កើតដោយមេកានិចដ៏កម្រមិនចាំបាច់មានសុវត្ថិភាពទេ។
ការសិក្សា FP-STALKER ក៏បានបង្ហាញផងដែរថា ការផ្លាស់ប្តូរគុណលក្ខណៈមិនរារាំងការភ្ជាប់ដោយស្វ័យប្រវត្តិទេ។ គំរូអាចប្រើគុណលក្ខណៈដែលមានស្ថេរភាព និងការផ្លាស់ប្តូរកំណែដែលគួរឱ្យទុកចិត្តដើម្បីភ្ជាប់ស្នាមម្រាមដៃមុន និងក្រោយ។
5. តើ UA Reduction ដោះស្រាយបញ្ហាអ្វីខ្លះ?
UA ប្រពៃណីត្រូវបានផ្ញើជាមួយស្ទើរតែគ្រប់សំណើ។ ចំណុចបញ្ចប់ភាគីទីមួយ ឬភាគីទីបីណាមួយដែលទទួលបានសំណើអាចអានវាដោយអកម្ម។ ខ្សែអក្សរកាន់តែច្បាស់លាស់ ព័ត៌មានប្លែកៗដែលអ្នកទទួលគ្រប់រូបទទួលបានតាមលំនាំដើម។
User-Agent Reduction plan របស់ Chromium កាត់បន្ថយ granularity លំនាំដើមនេះ៖
- ចាប់ផ្តើមជាមួយ Chrome 101 កំណែ desktop minor, build និង patch ត្រូវបានកាត់បន្ថយមកត្រឹម
0.0.0; - ដំណាក់កាលក្រោយបង្រួបបង្រួមកំណែប្រព័ន្ធប្រតិបត្តិការផ្ទៃតុ ព័ត៌មានលម្អិត CPU និងព័ត៌មានឧបករណ៍ Android;
- ការកាត់បន្ថយ Android UA ប្រើវេទិកាថេរ និងតម្លៃគំរូដូចជា
Android 10; K; - គេហទំព័រដែលពិតជាត្រូវការព័ត៌មានលម្អិតបន្ថែមអាចស្នើសុំ User-Agent Client Hints.
ទម្រង់ដែលបានកាត់បន្ថយអាចត្រូវបានសង្ខេបជា:
Mozilla/5.0 (<unified platform information>)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/<major version>.0.0.0 Safari/537.36
ការកាត់បន្ថយកាត់បន្ថយផ្ទៃស្នាមម្រាមដៃអកម្មនៃ UA កេរ្តិ៍ដំណែល។ វាមិនលុបបំបាត់ស្នាមម្រាមដៃកម្មវិធីរុករកទេ។ កំណែសំខាន់ វេទិកាទូលំទូលាយ និងស្ថានភាពចល័តអាចនៅតែអាចមើលឃើញ ខណៈពេលដែល API ផ្សេងទៀត លក្ខណៈសម្បត្តិបណ្តាញ និងឥរិយាបថនៅតែអាចផ្តល់ព័ត៌មានបាន។
6. តើ User-Agent Client Hints ដំណើរការយ៉ាងដូចម្តេច?
យន្តការទូទៅត្រូវបានកំណត់នៅក្នុង RFC 8942 ខណៈពេលដែល WICG User-Agent Client Hints draft ពិពណ៌នាអំពីវាលជាក់លាក់ UA ។ វិធីសាស្រ្តនេះបំបែកព័ត៌មានដែលធ្លាប់រស់នៅក្នុងខ្សែអក្សរដែលមិនមានរចនាសម្ព័ន្ធទៅជាវាលដែលមានរចនាសម្ព័ន្ធ ដោយបែងចែកការណែនាំ entropy ទាបដែលអាចត្រូវបានផ្ញើតាមលំនាំដើមពីការណែនាំ entropy ខ្ពស់ដែលគេហទំព័រជាធម្មតាស្នើសុំយ៉ាងច្បាស់លាស់។
សំណើដំបូងសាមញ្ញអាចមើលទៅដូចនេះ៖
GET /download HTTP/1.1
User-Agent: Mozilla/5.0 (...) Chrome/145.0.0.0 Safari/537.36
Sec-CH-UA: "Chromium";v="145", "Not_A Brand";v="99"
Sec-CH-UA-Mobile: ?0
Sec-CH-UA-Platform: "Windows"
ប្រសិនបើម៉ាស៊ីនមេពិតជាត្រូវការស្ថាបត្យកម្ម និងប៊ីតដើម្បីជ្រើសរើសកម្មវិធីដំឡើង វាអាចឆ្លើយតបជាមួយ៖
HTTP/1.1 200 OK
Accept-CH: Sec-CH-UA-Arch, Sec-CH-UA-Bitness
Vary: Sec-CH-UA-Arch, Sec-CH-UA-Bitness
នៅពេលដែលកម្មវិធីរុករកគាំទ្រយន្តការ ហើយតម្រូវការសុវត្ថិភាព និងគោលនយោបាយត្រូវបានបំពេញ សំណើនៅពេលក្រោយអាចរួមមាន:
Sec-CH-UA-Arch: "x86"
Sec-CH-UA-Bitness: "64"
UA Client Hints ទូទៅរួមមាន:
| វាល | គោលបំណងធម្មតា | កម្រិតព័ត៌មាន |
|---|---|---|
Sec-CH-UA | បញ្ជីម៉ាក និងកំណែធំ | ជាធម្មតា entropy ទាប |
Sec-CH-UA-Mobile | ថាតើអតិថិជនចូលចិត្តបទពិសោធន៍ទូរស័ព្ទឬអត់ | ជាធម្មតា entropy ទាប |
Sec-CH-UA-Platform | ប្រភេទវេទិកាទូលំទូលាយ | ជាធម្មតា entropy ទាប |
Sec-CH-UA-Arch | ស្ថាបត្យកម្មស៊ីភីយូ | entropy ខ្ពស់; ស្នើសុំនៅពេលចាំបាច់ |
Sec-CH-UA-Bitness | ប៊ីតស្ថាបត្យកម្ម | entropy ខ្ពស់; ស្នើសុំនៅពេលចាំបាច់ |
Sec-CH-UA-Platform-Version | កំណែវេទិកា | entropy ខ្ពស់; ស្នើសុំនៅពេលចាំបាច់ |
Sec-CH-UA-Full-Version-List | កំណែពេញលេញសម្រាប់ម៉ាកដែលបានរាយការណ៍ | entropy ខ្ពស់; ស្នើសុំនៅពេលចាំបាច់ |
Sec-CH-UA-Model | ម៉ូដែលឧបករណ៍ | entropy ខ្ពស់; ស្នើសុំនៅពេលចាំបាច់ |
ព័ត៌មានលម្អិតវិស្វកម្មបីគឺងាយនឹងខកខាន.
1. Client Hints មិនមែនទាំងអស់ផ្ញើដោយស្វ័យប្រវត្តិ
ការណែនាំ entropy ទាបអាចលេចឡើងតាមលំនាំដើម។ ការណែនាំ entropy ខ្ពស់ជាធម្មតាតម្រូវឱ្យមានការឆ្លើយតប Accept-CH ។ ការរុករកដំបូង ធនធានរង គោលនយោបាយការអនុញ្ញាត ការដឹកជញ្ជូនសុវត្ថិភាព និងការគាំទ្រកម្មវិធីរុករកទាំងអស់អាចប៉ះពាល់ដល់អ្វីដែលមកដល់។ ម៉ាស៊ីនមេត្រូវតែអនុញ្ញាតឱ្យរាល់វាលស្រេចចិត្តអវត្តមាន។
2. បញ្ជីម៉ាកដោយចេតនាសាកល្បងភាពរឹងមាំរបស់ parser
Sec-CH-UA អាចមានម៉ាកជាច្រើន និងម៉ាកសំយោគដែលប្រើដើម្បីសាកល្បងភាពឆបគ្នា។ កូដមិនត្រូវសន្មត់ថាធាតុដំបូងតែងតែជាឈ្មោះផលិតផល ហើយវាមិនត្រូវបរាជ័យនៅពេលដែលម៉ាកមិនស្គាល់លេចឡើង។ Parse the structured field, មិនអើពើធាតុដែលអ្នកមិនស្គាល់, and leave room for future brands.
3. ការឆ្លើយតបដែលប្រែប្រួលលើការណែនាំត្រូវការការគ្រប់គ្រងឃ្លាំងសម្ងាត់ត្រឹមត្រូវ
ប្រសិនបើស្ថាបត្យកម្ម វេទិកា ឬការណែនាំផ្សេងទៀតផ្លាស់ប្តូរការឆ្លើយតប សូមកំណត់រចនាសម្ព័ន្ធ Vary ឬយុទ្ធសាស្រ្តឃ្លាំងសម្ងាត់សមមូលឱ្យបានត្រឹមត្រូវ។ បើមិនដូច្នេះទេ ឃ្លាំងសម្ងាត់ដែលបានចែករំលែកអាចបម្រើមាតិកាដែលបានបង្កើតសម្រាប់ថ្នាក់ឧបករណ៍មួយទៅថ្នាក់មួយទៀត។
7. តើ Client Hints ឯកជនជាង UA បែបប្រពៃណីទេ?
ពួកគេធ្វើអោយប្រសើរឡើងនូវរបៀបដែលព័ត៌មានត្រូវបានលាតត្រដាង ប៉ុន្តែពួកគេមិនផ្តល់អភ័យឯកសិទ្ធិពីស្នាមម្រាមដៃទេ។
UA ប្រពៃណីបង្ហាញពីបាច់ធំដែលមិនមានរចនាសម្ព័ន្ធអកម្ម និងតាមលំនាំដើម។ Client Hints បំបែកបាច់នោះទៅជាវាល ធ្វើឱ្យសំណើសុំព័ត៌មាន entropy ខ្ពស់កាន់តែច្បាស់លាស់ និងផ្តល់ឱ្យកម្មវិធីរុករកនូវឱកាសដើម្បីអនុវត្តគោលនយោបាយ ការអនុញ្ញាត ឬការគ្រប់គ្រងថវិកាឯកជនភាព។
ទោះជាយ៉ាងណាក៏ដោយ ស្ថាបត្យកម្ម កំណែពេញលេញ កំណែវេទិកា និងម៉ូដែលឧបករណ៍នៅតែអាចបង្កើនការបែងចែកបាន។ RFC 8942 ចាត់ទុកភាពឯកជន និងការអនុវត្តយ៉ាងច្បាស់លាស់ជាឧបសគ្គនៃការរចនា។ អ្នកអភិវឌ្ឍន៍គួរសួរ៖
- តើលក្ខណៈពិសេសនេះពិតជាទាមទារវាលមែនទេ?
- តើការរកឃើញសមត្ថភាព ឬជម្រើសអ្នកប្រើប្រាស់អាចជំនួសវាបានទេ?
- តើកម្មវិធីអាចរក្សាទុកតែប្រភេទ coarse បានទេ?
- តើតម្លៃឆៅត្រូវបានរក្សាទុករយៈពេលប៉ុន្មាន ហើយអ្នកណាអាចចូលប្រើបាន?
- តើធនធានភាគីទីបីនឹងទទួលបានការណែនាំដូចគ្នាដែរឬទេ?
8. ការណែនាំផ្នែកវិស្វកម្មសម្រាប់ការគ្រប់គ្រង UA ផ្នែកខាងម៉ាស៊ីនមេ
1. កុំប្រើ UA ជាភស្តុតាងនៃអត្តសញ្ញាណ ឬសិទ្ធិអំណាច
UA អាចគាំទ្រជម្រើសបទបង្ហាញ និងភាពឆបគ្នា។ វាមិនគួរកំណត់អត្តសញ្ញាណ ការអនុញ្ញាត ការជឿទុកចិត្តលើការទូទាត់ ឬព្រំដែនសុវត្ថិភាព។ តម្លៃដែលគ្រប់គ្រងដោយអតិថិជនមិនអាចបម្រើជាលិខិតបញ្ជាក់ការគ្រប់គ្រងការចូលប្រើបានទេ។
2. ចូលចិត្តការរកឃើញសមត្ថភាពទៅបញ្ជីកម្មវិធីរុករក
នៅពេលដែល front end ត្រូវការ API សូមសាកល្បងសម្រាប់សមត្ថភាពនោះដោយផ្ទាល់៖
if ('share' in navigator) {
// Offer the system share feature.
} else {
// Fall back to copying a link.
}
ការរកឃើញសមត្ថភាពដោះស្រាយកម្មវិធីរុករកដែលបានមក លក្ខណៈពិសេសពិសោធន៍ គោលនយោបាយសហគ្រាស និងការចេញផ្សាយនាពេលអនាគតប្រសើរជាងច្បាប់ដូចជា "បើកវាសម្រាប់ Chrome 145"។
3. ទទួលយកកេរ្តិ៍ដំណែល UA, Client Hints និងរដ្ឋដែលមិនស្គាល់
ក្នុងអំឡុងពេលផ្ទេរ server អាចទទួលបានតែ UA ចាស់ ទាំង UA និង Client Hints ឬទម្រង់កាត់បន្ថយខ្ពស់នៃទាំងពីរ។ គំរូទិន្នន័យគួរតែអនុញ្ញាតឱ្យ unknown ជាជាងទាយប្រព័ន្ធប្រតិបត្តិការ ឬគំរូឧបករណ៍ពិតប្រាកដដើម្បីបំពេញគ្រប់វាល។
4. កាត់បន្ថយ granularity កំណត់ហេតុ
ប្រសិនបើការវិភាគត្រូវការតែកុំព្យូទ័រលើតុធៀបនឹងទូរស័ព្ទ, គ្រួសារកម្មវិធីរុករក, និងកំណែធំ, កុំរក្សាខ្សែអក្សរ UA ឆៅនិងរាល់ការណែនាំ entropy ខ្ពស់គ្មានកំណត់. ការកាត់បន្ថយទិន្នន័យកាត់បន្ថយហានិភ័យឯកជនភាព និងការពារបំពង់វិភាគពីការព្យាបាលការប្រែប្រួលតិចតួចជាវិមាត្រដ៏មានន័យ។
5. ចាត់ទុកភាពមិនប្រក្រតីជាភស្តុតាង មិនមែនសាលក្រម
UA ដែលអះអាងថា Windows ខណៈពេលដែល API មួយមានឥរិយាបថខុសគ្នាគឺច្រើនបំផុតសញ្ញាហានិភ័យមួយ។ បរិយាកាសសហគ្រាស និម្មិត វគ្គពីចម្ងាយ ស្រទាប់ភាពឆបគ្នា និងបច្ចេកវិទ្យាជំនួយអាចបង្កើតភាពមិនប្រក្រតីស្របច្បាប់។ ការប្រែក្លាយការមិនផ្គូផ្គងមួយទៅជាការសម្រេចចិត្តក្លែងបន្លំដោយស្វ័យប្រវត្តិបង្កើតវិជ្ជមានក្លែងក្លាយ។
9. តើ UA គួរត្រូវបានកំណត់រចនាសម្ព័ន្ធយ៉ាងដូចម្តេចនៅក្នុងបរិយាកាសពហុទម្រង់?
សម្រាប់ការធ្វើតេស្តឆ្លងតំបន់ ការមើលជាមុននៃការផ្សាយពាណិជ្ជកម្ម ប្រតិបត្តិការគណនី និងការដាច់ដោយឡែកឯកជនភាព គោលដៅមិនគួរបង្កើត UA មិនធម្មតាបំផុតនោះទេ។ ទម្រង់គួរតែអាចពន្យល់បាន ស្ថេរភាព និងឆបគ្នាជាមួយបរិស្ថានជុំវិញរបស់វា។
ពិនិត្យដូចខាងក្រោមតាមលំដាប់:
- កំណែកម្មវិធីរុករក: កំណែសំខាន់ UA គួរតែសមហេតុផលសម្រាប់ម៉ាស៊ីនពិតប្រាកដ និងសមត្ថភាពរបស់វា។
- ប្រព័ន្ធប្រតិបត្តិការ៖ វេទិកា UA វេទិកា Client Hints និងប្រភេទវេទិកាដែលអាចមើលឃើញ JavaScript គួរតែត្រូវគ្នា។
- ស្ថាបត្យកម្មនិងប៊ីត: UA, Client Hints, and the executable environment should not make direct conflicting claims.
- កត្តាទម្រង់ឧបករណ៍៖ ការប្រកាសទូរស័ព្ទគួរតែមានសមត្ថភាពរួមជាមួយនឹងការគាំទ្រការប៉ះ ទិដ្ឋភាព សមាមាត្រភីកសែល និងលំនាំអន្តរកម្ម។
- បរិបទតំបន់: ភាសា តំបន់ពេលវេលា ទីតាំងភូមិសាស្ត្រ និងប្រូកស៊ីចេញមិនចាំបាច់ផ្គូផ្គងមេកានិចទេ ប៉ុន្តែពួកគេគួរតែសមហេតុផលសម្រាប់លំហូរការងារពិតប្រាកដ។
- ស្ថេរភាពប្រវត្តិរូប៖ នៅពេលដែលគណនីមួយ ឬអត្តសញ្ញាណសាកល្បងប្រើទម្រង់ដែលមានអាយុកាលយូរឡើងវិញ សូមជៀសវាងការប្តូរវេទិកា និងកំណែសំខាន់ដោយគ្មានហេតុផល។
ការបំប្លែងទម្រង់បច្ចុប្បន្នរបស់ PurpleMark ផែនទីប្រព័ន្ធប្រតិបត្តិការដែលបានជ្រើសរើសទៅកាន់វេទិកា UA ហើយដំបូងព្យាយាមទាញយកកំណែកម្មវិធីរុករកពីនិមិត្តសញ្ញា Chrome/ ឬ CriOS/ ដែលបានកំណត់រចនាសម្ព័ន្ធ។ នៅពេលដែលមិនមានកំណែដែលអាចប្រើបាន វាទទួលបានការត្រឡប់មកវិញដែលសមហេតុផលពីកំណែសំខាន់របស់ម៉ាស៊ីនបច្ចុប្បន្ន។ គោលបំណងគឺមិនមែនដើម្បីក្លែងបន្លំខ្សែអក្សរដាច់ស្រយាលមួយទេ ប៉ុន្តែដើម្បីដាក់ការកំណត់រចនាសម្ព័ន្ធ UA នៅខាងក្នុងគំរូ browser-profile ស្របគ្នា។
Profile isolation and parameter consistency អាចកាត់បន្ថយទំនាក់ទំនងបច្ចេកទេស និងភាពលំអៀងនៃការធ្វើតេស្ត។ ពួកគេមិនអាចធានាថាគណនីនឹងមិនត្រូវបានភ្ជាប់ទេ ហើយពួកគេមិនជំនួសច្បាប់វេទិកា ទិន្នន័យគណនី ព័ត៌មានទូទាត់ ឬការអនុវត្តប្រតិបត្តិការប្រកបដោយការទទួលខុសត្រូវ។ ប្រើសមត្ថភាពទាំងនេះសម្រាប់តែការការពារឯកជនភាពស្របច្បាប់ ការធ្វើតេស្តអនុញ្ញាត និងសកម្មភាពអាជីវកម្មដែលអនុលោមតាមច្បាប់។
10. សំណួរដែលគេសួរញឹកញាប់
សំណួរទី 1: តើការផ្លាស់ប្តូរ UA ប្រែក្លាយកម្មវិធីរុករកទៅជាកម្មវិធីរុករកផ្សេងទៀតទេ?
ទេ. វាផ្លាស់ប្តូរផ្នែកមួយនៃអ្វីដែលអតិថិជនប្រកាស។ វាមិនជំនួសម៉ាស៊ីន JavaScript បំពង់បង្ហាញ ជង់បណ្តាញ ឬ Web APIs ដែលគាំទ្រទេ។
សំណួរទី 2: តើគេហទំព័រអាចអាន "real UA" បានទេ?
មិនមានកម្រិតផ្នែករឹងជាសកល "real UA" ដែលគេហទំព័រនីមួយៗអាចឆ្លងកាត់កម្មវិធីរុករកដើម្បីអាន. ទោះជាយ៉ាងណាក៏ដោយ គេហទំព័រអាចប្រៀបធៀប Client Hints ការធ្វើតេស្តសមត្ថភាព និងសញ្ញាស្នាមម្រាមដៃផ្សេងទៀត ស្វែងរកការអះអាងដែលមិនត្រូវគ្នា និងធ្វើការសន្និដ្ឋានប្រហែលជា។
សំណួរទី 3: តើ UA ដែលកាត់បន្ថយអាចបែងចែក Windows 10 ពី Windows 11 បានទេ?
ការកាត់បន្ថយកេរ្តិ៍ដំណែល UA ជាធម្មតាមិនអាចធ្វើដូច្នេះបានទេព្រោះទាំងពីរអាចរាយការណ៍ Windows NT 10.0. កម្មវិធីរុករកដែលគាំទ្រ UA Client Hints អាចផ្តល់ព័ត៌មានកំណែវេទិកាលម្អិតបន្ថែមទៀតបន្ទាប់ពីគេហទំព័រស្នើសុំវា។ ម៉ាស៊ីនមេត្រូវតែដោះស្រាយវាលដែលបាត់ និងភាពខុសគ្នានៃផែនទី។
Q4: តើការបិទ JavaScript បញ្ឈប់ការប៉ះពាល់ UA ដែរឬទេ?
មិនទាំងស្រុង. HTTP User-Agent គឺជាបឋមកថាសំណើ ហើយអាចត្រូវបានផ្ញើជាមួយសំណើទំព័រមុនពេលទំព័រ JavaScript ដំណើរការ។ ការបិទ JavaScript លុបផ្ទៃប្រមូលមួយចំនួន ប៉ុន្តែក៏បំបែកផ្នែកសំខាន់នៃគេហទំព័រទំនើបផងដែរ។
សំណួរទី 5: តើ Client Hints នឹងជំនួស User-Agent ទាំងស្រុងដែរឬទេ?
កុំសន្មត់ថាក្នុងរយៈពេលដ៏ខ្លី។ អតិថិជន និងម៉ាស៊ីនមេជាច្រើននៅតែពឹងផ្អែកលើ UA កេរ្តិ៍ដំណែល ខណៈពេលដែលការគាំទ្រ UA Client Hints ប្រែប្រួល។ ចាត់ទុក Client Hints ជាការពង្រឹងរីកចម្រើន៖ ចូលចិត្តព័ត៌មានដែលមានរចនាសម្ព័ន្ធនៅពេលមាន ប៉ុន្តែរក្សាការថយក្រោយសម្រាប់ UA និងស្ថានភាពមិនស្គាល់។
សំណួរទី 6: តើ UA ដែលបង្កើតដោយចៃដន្យធ្វើអោយប្រសើរឡើងនូវអនាមិកដែរឬទេ?
មិនចាំបាច់ទេ។ ការចៃដន្យវាលមួយអាចបង្កើតភាពផ្ទុយគ្នាជាមួយនឹង version, platform, touch, and rendering signals. សម្រាប់ទម្រង់ដែលមានអាយុកាលយូរ ការកំណត់រចនាសម្ព័ន្ធទូទៅ ស្ថេរភាព និងត្រូវគ្នាខាងក្នុងជាធម្មតាអាចការពារបានជាងការផ្លាស់ប្តូរចៃដន្យញឹកញាប់។
11. សេចក្តីសន្និដ្ឋាន
User-Agent មិនមែនជាលិខិតបញ្ជាក់អត្តសញ្ញាណដែលគួរឱ្យទុកចិត្ត ឬខ្សែអក្សរដែលមិនពាក់ព័ន្ធនោះទេ។ វាស្ថិតនៅចំនុចប្រសព្វនៃភាពឆបគ្នានៃគេហទំព័រ ភាពឯកជន និងការវិភាគហានិភ័យ។ សម្រាប់អ្នកអភិវឌ្ឍន៍, វាគឺជាការបញ្ចូលភាពឆបគ្នាដែលមានបន្ទុកដោយប្រវត្តិសាស្រ្ត. សម្រាប់អ្នកស្រាវជ្រាវស្នាមម្រាមដៃ វាគឺជាគុណលក្ខណៈដែលមានព័ត៌មានស្ថិតិដែលអាចវាស់វែងបាន។ សម្រាប់អ្នកលក់កម្មវិធីរុករក វាគឺជាផ្ទៃការប៉ះពាល់លំនាំដើមដែលត្រូវការកាត់បន្ថយ។
គំនិតសំខាន់ៗសមនឹងសេចក្តីថ្លែងការណ៍បី:
- កុំអាន UA ព្យញ្ជនៈ; វាមានសញ្ញាសម្ងាត់ភាពឆបគ្នាប្រវត្តិសាស្រ្តជាច្រើន។
- កុំវាយតម្លៃ UA ដាច់ដោយឡែក; ការទទួលស្គាល់ជាក់ស្តែងមកពីការរួមបញ្ចូលគ្នានៃសញ្ញា និងការវិវត្តន៍របស់ពួកគេតាមពេលវេលា។
- កុំគិតថា Client Hints គ្រាន់តែជា "វាល UA ច្រើនទៀត"; តម្លៃរបស់ពួកគេស្ថិតនៅក្នុងការបង្ហាញដែលមានរចនាសម្ព័ន្ធ សំណើរជំរុញ និងអាចគ្រប់គ្រងបាន។
នៅពេលដែលប្រព័ន្ធផ្លាស់ប្តូរពីការកំណត់អត្តសញ្ញាណឈ្មោះកម្មវិធីរុករកទៅសាកល្បងសមត្ថភាពដែលវាត្រូវការ និងពីការប្រមូលរាល់ព័ត៌មានលម្អិតដែលមានដើម្បីស្នើសុំតែអ្វីដែលចាំបាច់ UA ត្រឡប់ទៅតួនាទីត្រឹមត្រូវរបស់វាវិញ៖ តម្រុយភាពឆបគ្នា មិនមែនជាការពិតអត្តសញ្ញាណ។
ឯកសារយោងនិងស្តង់ដារ
- Peter Eckersley. How Unique Is Your Web Browser?. Privacy Enhancing Technologies Symposium, 2010.
- Pierre Laperdrix, Nataliia Bielova, Benoit Baudry, Gildas Avoine. Browser Fingerprinting: A Survey. ACM Transactions on the Web, 2020.
- Antoine Vastel, Pierre Laperdrix, Walter Rudametkin, Romain Rouvoy. FP-Scanner: The Privacy Implications of Browser Fingerprint Inconsistencies. USENIX Security Symposium, 2018.
- Antoine Vastel, Pierre Laperdrix, Walter Rudametkin, Romain Rouvoy. FP-STALKER: Tracking Browser Fingerprint Evolutions. IEEE Symposium on Security and Privacy, 2018.
- IETF. RFC 9110: HTTP Semantics, 2022.
- IETF. RFC 8942: HTTP Client Hints, 2021.
- WICG. User-Agent Client Hints, Draft Community Group Report.
- Chromium. User-Agent Reduction.
- Chrome for Developers. Improve user privacy and developer experience with User-Agent Client Hints.