پرش به محتوا
AutoValue
۶ شهریور ۱۴۰۵ · Data Quality

تابستانی که شمار آگهی‌های ما فروپاشید: خاطراتی از دل کرالر

AutoValue Editorial
تابستانی که شمار آگهی‌های ما فروپاشید: خاطراتی از دل کرالر

اکثر روزها یک تب باز دارم که فقط شمار منابع را نشان می‌دهد. نه چیز زیبایی — نه نموداری، نه فیلتری، فقط یک عدد کنار هر یک از ۱٬۳۷۵ سایتی که از آن‌ها آگهی می‌کشیم و برچسب زمانی آخرین اتصالشان. بیشتر روزها به همان شکلی که زیرساخت باید باشد، کسل‌کننده است. این تابستان این‌طور نبود، و فکر می‌کنم داستان آن‌چه اشتباه پیش رفت، برای شما به‌عنوان کسی که دنبال خرید ماشین است، مفیدتر از بیشتر توصیه‌های «چگونه ماشین دست‌دوم بخریم» باشد که می‌توانستیم به‌جایش بنویسیم. این داستان درباره‌ی این است که «داده‌ی زنده» وقتی منبع تغذیه‌اش ۱٬۳۷۵ وب‌سایت جداگانه است که هیچ تعهدی به شما ندارند، واقعاً یعنی چه.

اواسط ژوئیه: عددی که به آن افتخار می‌کردم

تا اواسط ژوئیه، رجیستری منابع را به ۱٬۱۹۰ منبع در ۷۳ منطقه رسانده بودیم — حاصل چند هفته تطبیق ورودی‌های تکراری و لینک‌های مرده‌ای که به‌آرامی شمار خودمان را متورم کرده بودند. یادم هست فکر می‌کردم ۱٬۱۹۰ منبعِ واقعی و متصل، چیزی است که باید به آن افتخار کرد. این رقم شامل تعداد زیادی سایت فروشنده‌ی مستقل، تابلوهای آگهی طبقه‌بندی‌شده، و فیدهای حراجی است که هر کدام ساختار HTML خاص خود، محدودیت نرخ خاص خود، و نظر خاص خود درباره‌ی این‌که آیا یک اسکرِیپر مشتری است یا حمله را دارند.

سپس یک کمپین عقب‌افتاده که مدت‌ها اجرایش می‌کردیم — رسیدگی به فهرست انتظار ۶۸۳ منبعی که ماه‌ها به تعویق افتاده بود، برخی مسدود و برخی صرفاً هرگز ساخته نشده — شروع به نتیجه دادن کرد. در نیمه‌ی دوم ژوئیه، ۲۷۴ تای آن‌ها ساخته و متصل شدند. تا پایان ماه، شمار منابع فعال به ۱٬۴۶۴ رسید. از آن هفته‌هایی بود که از صفحه‌اش اسکرین‌شات می‌گیری.

اوایل اوت: ۲۴۱ منبع، رفتند

بعد آن عددی رسید که کل هفته‌ات را خراب می‌کند: یک‌شبه، ۲۴۱ منبع به حالت تنزل‌یافته افتادند. نه به‌خاطر کاری که ما کرده باشیم — حساب ارائه‌دهنده‌ی پراکسیِ ما از نظر صورت‌حساب منقضی شده بود، و بخش بزرگی از ترافیک ما دقیقاً به همین دلیل از میان آی‌پی‌های چرخشی عبور می‌کند تا توسط سایت‌هایی که اسکرِیپرها را محدود می‌کنند، مسدود نشویم. بدون پراکسی، صفحه‌ی تازه‌ای نیست، آگهی تازه‌ای نیست. منابع اعلام نمی‌کنند که خراب شده‌اند؛ فقط بی‌سروصدا دست از برگرداندن داده‌ی تازه می‌کشند در حالی که آگهی‌های قدیمی‌شان همان‌جا نشسته‌اند و به‌نظر به‌روز می‌رسند.

این همان بخشی است که در شمار آگهی‌های هیچ سایت ماشینی، از جمله سایت خودمان، دیده نمی‌شود، مگر این‌که دنبالش بگردی: یک بازار «زنده» می‌تواند ردیف‌های کهنه را درست کنار ردیف‌های تازه داشته باشد و از بیرون کاملاً یکسان به‌نظر برسد. ما اجرای کرال‌های جدید را مشروط به یک بررسی واقعیِ سلامت پراکسی کردیم تا یک استخر از‌کار‌افتاده نتواند بی‌سروصدا کیفیت را بیشتر پایین بیاورد، و بخش‌هایی از زمان‌بندی را که وضعیت را بدتر می‌کرد متوقف کردیم. کار پرزرق‌وبرقی نیست. از آن کارهایی است که اگر هرگز درباره‌اش نشنوی، یعنی کسی کارش را درست انجام داده.

یک نکته‌ی جانبی، چون گفتنش ارزش دارد: هر سایتی که ادعا کند هر روز عدد ثابت و گردی از آگهی‌ها دارد، یا واقعاً زنده نیست، یا درباره‌ی هفته‌هایی مثل این هفته‌ی ما به شما چیزی نمی‌گوید.

یخ‌زدگی

تمدید پراکسی بیشتر مشکل را حل کرد. چیزی که انتظارش را نداشتم این بود که خودِ کرالر چند هفته بعد قفل کرد — یک بن‌بست (deadlock) در مرحله‌ی خاتمه‌دادن، هجده از نوزده رشته‌ی کارگر در حالت futex_wait نشسته بودند، صفر مصرف CPU، برای ۷۵ ساعت پیاپی. نه کرشی، نه لاگ خطایی که سر کسی داد بزند. فقط... هیچ اتفاقی نمی‌افتاد، درحالی‌که داشبورد همچنان آخرین اجرای موفق را نشان می‌داد انگار که به‌روز است. ما هنوز روی آن هاست خاص واچ‌داگ نصب نکرده بودیم، که از آن جمله‌هایی است که فقط بعد از این‌که اتفاقی که توصیف می‌کند یک‌بار برایت افتاده باشد، می‌نویسی.

واچ‌داگ را ساختیم. زمان‌بندی را متوقف کردیم تا زمانی که تمدید پراکسی به‌طور تأییدشده پایدار شد، به‌جای این‌که ریسک کنیم یک کرالِ نیمه‌تنزل‌یافته بی‌سروصدا ردیف‌های خوب را با ردیف‌های بد جایگزین کند — یک منبع کرال‌شده آگهی‌هایش را جایگزین می‌کند، نه ادغام، پس یک اجرای بد فقط در افزودن داده شکست نمی‌خورد، بلکه می‌تواند فعالانه ردیف‌های خوب را حذف کند و بدترها را جایشان بگذارد. همین عدم‌تقارن است که ترجیح می‌دهیم یک روز کهنه اجرا کنیم تا این‌که تنزل‌یافته اجرا کنیم.

عدد امروز کجا فرود آمد

این هم شمار امروز، و شکل شش هفته‌ای که ما را به این‌جا رساند:

ما در ۱٬۳۷۵ منبع در ۷۳ منطقه فرود آمدیم، که ۱٬۱۰۸٬۵۳۵ آگهی زنده را تغذیه می‌کنند، با ۱۲٬۸۲۳ آگهی که در حال حاضر به‌عنوان زیر قیمتِ هم‌گروه منطقه‌ای‌شان علامت‌گذاری شده‌اند. این رقم تقریباً ۹۰ منبع کمتر از اوج ژوئیه است — برخی از آن ۲۴۱ منبعِ تنزل‌یافته هرگز به‌طور کامل برنگشتند، تعدادی هم سایت‌هایی بودند که در این فاصله موضع ضد-ربات خود را تغییر داده بودند و به‌جای اتصال دوباره، به بازسازی نیاز داشتند. هنوز روی چند تای آن‌ها کار می‌کنیم.

این ماجرا واقعاً برای شما چه ارزشی دارد

هیچ‌کدام از این‌ها ماشینی را که باید بخرید تغییر نمی‌دهد. اما باید نحوه‌ی خواندن شما از هر عدد «موجودی زنده» در هر سایت ماشینی، نه فقط سایت ما، را تغییر دهد. فرانسه در حال حاضر با ۶۷٬۵۶۹ آگهی در صدر شمار منطقه‌ای ما قرار دارد، ژاپن با ۶۱٬۹۴۰ آگهی نزدیک پشت سرش، و این عددها حرکت می‌کنند — نه به این دلیل که بازار خودِ ماشین‌های دست‌دوم این‌قدر سریع نوسان می‌کند، بلکه چون زیرساختی که آن را رصد می‌کند نوسان می‌کند. آگهی‌ای که به‌خاطر تنزل‌یافتن یک منبع سه روز کهنه شده، دقیقاً شبیه یک آگهی تازه به‌نظر می‌رسد، مگر این‌که پلتفرم درباره‌ی این تفاوت صادق باشد.

ترجیح می‌دهیم درباره‌ی یخ‌زدگی ۷۵ ساعته به شما بگوییم تا وانمود کنیم عدد ما هرگز نمی‌لرزد. مجموعه‌داده‌ای که هرگز به یک هفته‌ی بد اعتراف نمی‌کند، مجموعه‌داده‌ای است که باید بیشتر به آن شک کنید، نه کمتر.

Data QualityWEB ScrapingMethodologyTransparencyMarket Data
اشتراک‌گذاری

مقالات مرتبط