የክላውድፌር (Cloudflare) ነጻ እቅድ ላይ የመረጃ ሰብሳቢ (scraper) ጥቃት፡ የቆመው ምንድን ነው፣ የተዘጉትስ ምንድን ናቸው
ኦፕስ
አንድ ጠዋት የምርት መግለጫ (listing) ጣቢያችን መክፈት ቀመጠ። ክላውድፌር (Cloudflare) ጎብኚዎችን 524 አሳየ፣ መነሻው (origin) ለእያንዳንዱ ገጽ ከሁለት እስከ ስድስት ደቂቃ ወሰደ፣ እና ለወደ 10 ሰዓታት ማንም አልነገረንም። ምክንያቱ የመረጃ ሰብሳቢ (scraper) በመኖሪያ ፕሮክሲዎች (residential proxies) በኩል በሰከንድ ወደ 225 ጥያቄዎች ሲያካሂድ ነበር።
የጥቃቱ ቅርጽ
- ሺህዎች አድራሻዎች፣ እያንዳንዱ ከአንድ እስከ ሶስት ጥያቄዎች። በአሜሪካ፣ ስፔን፣ ፈረንሳይ፣ ብራዚል፣ ዩኬ እና በሌሎች ቦታዎች ያሉ የቤት ብሮድባንድ ግንኙነቶች፣ የመኖሪያ ፕሮክሲ መረብ የሚከራዮችው ዓይነት ትራፊክ።
- በማክ ላይ ያሉ የክሮም (Chrome) ተጠቃሚ ኤጀንቶች፣ ከ103 እስከ 151 ያሉ የስሪት ቁጥሮች ያላቸው።
- ኩኪ (cookie) ወይም ሪፈረር (Referer) በጣም አልተገኙም። በሰርቨሩ ላይ ከተመረመርንባቸው 2,697 ጥያቄዎች፣ 4 ብቻ ኩኪ ሲኖራቸው፣ 4 ብቻ ሪፈረር ነበራቸው።
- ሁለት ዓይነት ደንበኞች። ከግማሹ በላይ
Sec-Fetch-*ራስጌዎችን (headers) እና የደንበኛ ምልክቶችን (client hints) አልላኩም፡ የተቀዳ ሰውነት ተጠቃሚ ኤጀንት (user agent) ያለው ስክሪፕት። ሌላኛው ግማሽ ሙሉ የአሳሽ ራስጌዎችን ላከ፡ ራስ-ሰር (headless) አሳሽ።
ለእያንዳንዱ ጥያቄ እያንዳንዱ ገጽ ስለተሰራ (rendered)፣ እያንዳንዱ ሰራተኛ (worker) መቶዎችን የሚቆጠሩ ማቅረቦችን ወደ ወረፋ ገብቶ የCPU ገደቡን አገኘ።
ለአድራሻ የሚሰጡ ገደቦች ለምን ሊረዱ አልቻሉም
የፍጥነት ገደብ (rate limit) ጥያቄዎችን በአድራሻ ይቆጥራል። ከሺህዎች አድራሻዎች እያንዳንዱ ከአንድ እስከ ሶስት ጥያቄዎች ሲያደርግ፣ ምንም አንድ አድራሻ ወደ ገደቡ አይጠጋም። ሀገሮችን መከልከል ጎብኚዎቻችንን ይከለክላቸው ነበር። የመረጃ ሰብሳቢው በአነስተኛ ወጪ ማስመሰል ያልቻለው፣ ቀደም ሲል ወደ ጣቢያው የሄደ አሳሽ እንደሆነ መታየት ነበር።
በክላውድፌር (Cloudflare) ዳርቻ ላይ፡ ሶስት ነጻ ደንቦች
ነጻው እቅድ ለእያንዳንዱ ዞን አምስት የWAF ልዩ ደንቦችን ይፈቅዳል። ሶስቱን ተጠቀምን፣ ሁሉም ከመከልከል ይልቅ የተቆጣጠረ ፈተና (managed challenge) እንዲሆን ተደርጎ ነው፣ ስለዚህ በስህተት የተያዘ ሰው በጠቅታ ያልፋል፡
- የሐሰት አሳሽ፡ የተጠቃሚ ኤጀንቱ
Chrome/የያዘ እናSec-Fetch-Modeራስጌ (header) የሌለው GET። ከ2019 ጀምሮ ያሉት ሁሉም ክሮም (Chrome) ይላኩታል። - የመረጃ ሰብሳቢ ማዕከሎች፡ ከአሊባባ (Alibaba)፣ ቴንሴንት (Tencent) እና ሁዋዌ (Huawei) ክላውድ መረቦች የመጡ የገጽ ጥያቄዎች፣ የተፈተኑት አብዛኛዎቹ የመጡት ከእነዚህ ነበር።
- አስቸኳይ፣ በነባሪ ጠፍቶ፡ ምንም ኩኪ (cookie) ወይም ሪፈረር (Referer) የሌለው GET። ቀደም ሲል ወደ ጣቢያው የሄደ ሰው፣ ወይም በአገናኝ (link) በኩል የመጣ፣ ያለ ምንም ችግር ያልፋል፤ ኩኪዎችን ያልያዘ መረጃ ሰብሳቢ በእያንዳንዱ ጥያቄ ፈተና ይገጥመዋል። በጥቃት ጊዜ ብቻ እናብራዋለን፣ ምክንያቱም አድራሻውን በአዲስ አሳሽ ውስጥ የሚያስገባ ሰውንም ይፈትነዋል።
ሦስቱም የCloudflare የተረጋገጡ ቦቶችን፣ እንደ ሮቦት ራሳቸውን የሚገልጹ የተጠቃሚ ኤጀንቶችን፣ የእኛ አድራሻዎችን፣ የAPI እና የዌብሁክ መንገዶችን፣ እንዲሁም ገጽ ያልሆኑ ፋይሎችን ያስታል። ከሁለት ቀናት በኋላ ጎርፉ አሁንም እየተከናወነ ነበር፡ በአንድ ሰዓት ውስጥ የውሸት-አሳሽ ሕጉ ከ10,000 በላይ ጥያቄዎችን ፈተና አስገብቷል። Cloudflare በእያንዳንዱ ጥያቄ የሚመልሳቸው 10,000 ክስተቶች ከ9,627 አድራሻዎች የመጡ ሲሆን፣ ከ4 በላይ የሚያደርጉ አልነበሩም።
በመነሻው፡ በመተግበሪያው ውስጥ ያለ መስተጋብር
የራስ-ሰር ክፍሉ ሙሉ የአሳሽ ራስ-ገጾች (headers) ስላሉት፣ የድንበር ሕጎች ብቻ የአስቸኳይ ሕጉ ሲጠፋ ይይዙታል። በመተግበሪያው ውስጥ በገጽ አሳሽው ፊት ትንሽ ሚድልዌር አስቀምጠናል፡
- ያለ
Sec-Fetch-Modeእና ያለ የደንበኛ ምልክቶች (client hints) ያለው የChrome የተጠቃሚ ኤጀንት ማንኛውም ሥራ ከመሥራቱ በፊት 403 ያገኛል፤ - ያለ እኛ ኩኪዎች እና ያለ Referer የሆነ እንግዳ፣ ሠራተኞቹ ተጨማሪ አቅም ሲኖራቸው ብቻ በሰከንድ በጥቂት ገጾች ይቀርባል። ከዚያ በላይ፣ 400-ባይት 503 ገጽ ኩኪ ያስቀምጣል እና ከሁለት ሰከንዶች በኋላ እንደገና ይጫናል። ሰው በሁለተኛው ሙከራ ገጹን ያገኛል፤ ኩኪ ያልያዘ ስክሬፐር ግን ፈጽሞ አያገኝም።
በመጀመሪያው ደቂቃ መስተጋብሩ በግምት 6,700 የውሸት አሳሾችን ውድቅ አደረገ እና በግምት 6,700 እንግዶችን አባረረ፣ በሰከንድ ግን ለእንግዶች በግምት 9 ገጾችን አቀረበ። ቀርፋፋ ጥያቄዎች ወደ ዜሮ ቀነሱ፣ የሠራተኞች CPU ከገደባቸው ወደ 12 እስከ 15 በመቶ ቀነሰ፣ እና ማህደራቸው ከእያንዳንዱ 4 እስከ 5 GB ወደ 0.65 GB ቀነሰ።
የተዘጉት ነገሮች
- Bot Fight Mode። ይህ ራስ-ሰር ትራፊክን ይፈትናል፣ በFree plan ላይ በብጁ ሕግ ሊደለል አይችልም፣ እና የክፍያ አቅራቢያችንን ዌብሁኮች ያዘጋጋል።
- ለጠቅላላው ዞን Under Attack mode። ይህ እያንዳንዱን ጎብኚ፣ የAPI ደንበኛ እና ዌብሁክ በመካከለኛው ገጽ (interstitial) ያሳልፋል። የአስቸኳይ ሕጉ ተመሳሳይ ሥራ ለእንግዶች የገጽ ጥያቄዎች ብቻ ያከናውናል።
- የFree plan የፍጥነት ገደብ ሕግ። ይህ በአድራሻ ይቆጥራል፣ ይህም ጎርፉ ፈጽሞ አያነሳሳውም።
- የAI ሰብሳቢዎችን መከልከል። በAI የፍለጋ አጋዥዎች እንድንገኝ ይፈልጋል፣ እነዚህ ሰብሳቢዎች ችግሩ አልነበሩም።
ዋናው ማስተዋል
በመኖሪያ ፕሮክሲዎች የሚመጣ ጎርፍ በሌላቸው ነገሮች በቀላሉ ይታወቃል፡ የአሳሽ fetch headers፣ ኩኪዎች እና Referers። ይህንን በድንበሩ ላይ ይፈትኑ፣ እንግዶችን ሠራተኞችዎ ማቅረብ በሚችሉት ወሰን ውስጥ ያስቀርጡ፣ እና አንድ ገጽ መክፈት ሲቆም ከሰርቨሩ ውጭ ያለ ነገር እንዲያስተውል ያድርጉ። Night Watch ሦስቱንም ያሳልፋል፡ የክትትል ስርዓቱ፣ ለአስቸኳይ ሕጉ ራስ-ሰር ማብሪያ/ማጥፊያ ያላቸው ሕጎች፣ እና ለPython የዌብ መተግበሪያዎች መስተጋብሩ።