خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

ماشین زمان اینترنت خودم را ساختم و دیگر هیچ صفحه‌ای را از دست نمی‌دهم

من ماشینAuthorities propio Wayback Machine را ساختم و دیگر هیچ‌گاه صفحات وب را از دست نمی‌دهم
آرکایوباکس از من صفحه‌هایی را که واقعاً برایم مهمند، با تاریخ و زمان دقیق و به‌صورت کپی محلی نگه می‌دارد.

ابزارهای بایگانی صفحه‌های وب، مانند ماشین وِی‌بک، همواره مرا از دسترسی به پیوندهای ازکارافتاده نجات داده‌اند؛ اما این ابزار یک ضعف اجتناب‌ناپذیر دارد: تنها زمانی می‌تواند صفحه‌ای را بازیابی کند که پیش از ناپدیدشدن، کسی به فکر بایگانی‌کردن آن افتاده باشد.

نسخه‌ای خصوصی می‌خواستم که در آن خودم سایت‌های مناسب برای تهیهٔ عکس فوری را انتخاب کنم، آن‌ها را پیشاپیش ثبت کنم و چند قالب بازیابی‌پذیر را روی سخت‌افزاری که کنترلش در اختیار خودم است نگه دارم.

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

از یک ماشین مجازی اوبونتو، ماشین وِی‌بک شخصی خودم را ساختم

یک نشانی وب به چند نسخهٔ مستقل از همان صفحه تبدیل شد

یک ماشین مجازی تازه با اوبونتو ۲۶٫۰۴ و ۴ گیگابایت حافظهٔ رم راه‌اندازی کردم و آرکایوباکس را از طریق داکر نصب کردم. فرایند کاملاً ساده بود و در نهایت، برای دورماندن از مشکلات احتمالی، نسخهٔ پایدار ۰٫۷٫۴ را به‌جای شاخهٔ توسعه‌ای بازطراحی‌شدهٔ ۰٫۹ انتخاب کردم.

فایل Compose دانلودشده بسیار بزرگ بود؛ ۲۷۸ خط داشت و شامل جست‌وجو، زمان‌بندی، Pi-hole، Nginx، WireGuard و انبوهی مواردی بود که واقعاً به آن‌ها نیاز نداشتم. آن را با همان یک سرویسی که لازم داشتم جایگزین کردم:

services:
  archivebox:
    image: archivebox/archivebox:0.7.4
    command: server --quick-init 0.0.0.0:8000
    restart: unless-stopped
    ports:
      - "192.168.91.136:8000:8000"
    volumes:
      - ./data:/data
    environment:
      ALLOWED_HOSTS: "*"
      PUBLIC_INDEX: "False"
      PUBLIC_SNAPSHOTS: "False"

مجموعه را راه‌اندازی کردم، یک حساب مدیر ساختم و داشبورد را با این سه فرمان آغاز کردم:

docker compose run --rm archivebox init
docker compose run --rm archivebox manage createsuperuser
docker compose up -d

سپس کروم می‌توانست به رابط خصوصی و محافظت‌شده با گذرواژه روی پورت ۸۰۰۰ دسترسی پیدا کند. در پایان، گزینهٔ آرکایوباکس برای ارسال نشانی‌های وب ثبت‌شده به Archive.org را غیرفعال کردم، زیرا می‌خواستم همه‌چیز کاملاً خصوصی و روی سرور خودم بماند:

docker compose run --rm archivebox config --set SAVE_ARCHIVE_DOT_ORG=False

نخستین آزمایش من استفاده از دامنهٔ example.com بود. آرکایوباکس نشانی اصلی را نگه داشت، اما در کنار آن، عکس فوری دارای تاریخ و زمان دقیقی نیز ساخت که شامل موارد زیر بود:

  • رونوشت HTML با Wget
  • صفحهٔ تک‌فایلی مستقل با SingleFile
  • فایل PDF
  • نماگرفت
  • DOM رندرشده
  • متن استخراج‌شدهٔ مقاله با Readability
  • پروندهٔ WARC
مطلب مرتبط:   نشانک ها برای من بی معنی بودند تا اینکه این برنامه رایگان آنها را کاملاً تغییر داد

پس از تهیهٔ عکس فوری، صفحهٔ نتایج بیشتر به فهرست بازیابی شباهت داشت تا ابزار نشانک‌گذاری. می‌توانستم صفحه را جست‌وجو کنم و سپس چندین نسخه از سایت را در قالب‌های گوناگون باز کنم. قالب SingleFile صفحه را قابل‌مرور و نزدیک به نسخهٔ اصلی نگه می‌داشت، Readability آن را به متنی خالص تقلیل می‌داد و نسخهٔ PDF نیز آماده بود تا اگر قالب‌های دیگر از کار افتادند، به کار آید.

یک صفحهٔ وب را حذف کردم و باز هم آن را به گذشته بازگرداندم

منبع ناپدید شد، اما بایگانی خصوصی من همچنان همه‌چیز را در خود داشت

دامنهٔ نمونه برای بررسی سریع مفید بود، اما به این زودی‌ها در معرض حذف‌شدن از اینترنت نیست. می‌خواستم آزمایش کنم که آیا آرکایوباکس واقعاً می‌تواند صفحه‌ای را که کاملاً ناپدید شده است، به‌درستی نگه دارد. چون نمی‌توانستم بدانم یک سایت واقعی چه زمانی، یا اصلاً آیا، از دسترس خارج می‌شود، ترجیح دادم خودم سایتی بسازم و روی همان سرور میزبانی‌اش کنم.

بر اساس پیکربندی چند-WAN در OpenWrt خودم، وب‌سایت کوچکی ساختم که شامل یک تصویر، چند یادداشت پایه برای بازیابی و یک پروندهٔ پیکربندی کوچکِ قابل‌دانلود بود که با پایتون نوشته شده بود. همچنین یک نشانهٔ یکتای COPPER-FINCH-۸۲۴۷ را در کد قرار دادم تا چیزی برای جست‌وجو در نسخه‌های بایگانی‌شده داشته باشم.

صفحه را از همان سرور اوبونتویی که آرکایوباکس روی آن اجرا می‌شد، روی پورت ۸۰۸۱ میزبانی کردم. از آرکایوباکس خواستم در عمق ۱ از آن عکس فوری بگیرد تا پروندهٔ پیکربندی، صفحهٔ HTML و تصویر را دانلود و نگه‌داری کند.

به‌محض پایان کار، صفحهٔ وب را کاملاً از دسترس خارج کردم. سرور پایتون را متوقف کردم و پوشهٔ منبع آن را نیز حذف کردم. هنگام بازخوانی مرورگر، نشانی آی‌پی خطای اتصال می‌داد، در حالی که آرکایوباکس همچنان روی پورت ۸۰۰۰ کار می‌کرد.

مطلب مرتبط:   نحوه استفاده از ویژگی Read Aloud در Microsoft Word

هم SingleFile و هم Wget صفحه را همراه با سبک و تصویرهایش نگه داشتند. PDF، نماگرفت، DOM رندرشده و متن استخراج‌شدهٔ صفحه نیز نسخه‌های پشتیبان دقیق و قابل‌بررسی در اختیارم گذاشتند و همهٔ آن‌ها نشانهٔ COPPER-FINCH-۸۲۴۷ را در خود داشتند.

پیش از بایگانی صفحه، درهم‌سازی SHA-۲۵۶ پروندهٔ پیکربندی اصلیِ قابل‌دانلود را محاسبه کردم:

sha256sum openwrt-failover.conf

که این نتیجه را بازگرداند:

8c2557843c18f429543c74a5c136958d729c0c4ae33d002cf2972fb513bfb117

پس از بایگانی صفحه، نسخهٔ Wget از پروندهٔ .conf را مقایسه کردم و تأیید کردم که درهم‌سازی‌ها کاملاً یکسان‌اند. این لحظهٔ ماشین زمان من بود. صفحه‌ای را بایگانی کرده، عمداً از دسترس خارج کرده و همچنان چیدمان، تصاویر محلی، محتوای خوانا و نسخه‌ای دقیق تا سطح بایت از محتوای قابل‌دانلودش را بازیابی کرده بودم.

ماشین زمان من حالا در فایرفاکس زندگی می‌کند

افزونهٔ مرورگر، حفظ صفحه‌ها را بیرون از محیط آزمایش عملی کرد

داشبورد ArchiveBox بهتر از انتظارم کار کرد، اما بازکردن آن و واردکردن یک نشانی در هر نوبت بایگانی، ثانیه‌های ارزشمندی را هدر می‌داد. خوشبختانه ArchiveBox افزونهٔ رسمی فایرفاکس دارد؛ آن را نصب کردم و محل اجرای نسخهٔ محلی‌ام را به آن معرفی کردم:

http://192.168.91.136:8000

از آنجا که پیش‌تر در فایرفاکس به ArchiveBox وارد شده بودم، افزونه از همان نشست تأیید هویت‌شده استفاده کرد. حالا می‌توانستم با یک کلیک، صفحه‌ای را که همان لحظه در مرورگرم باز بود بایگانی کنم.

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

ArchiveBox توانست نسخه‌های دقیق و قابل‌استفاده‌ای در قالب‌های SingleFile، Wget، PDF، نماگرفت، DOM رندرشده و متن استخراج‌شدهٔ مقاله تولید کند. می‌توانستم مقالهٔ بایگانی‌شده را از بخشی پایین‌تر از مقدمه باز کنم و ببینم که همهٔ قالب‌بندی‌ها و تصاویر سالم مانده‌اند.

مطلب مرتبط:   نحوه اضافه کردن یادداشت شخصی به نمایه خود در تیم های مایکروسافت

تنها قالبی که کار نکرد، Original بود و فایرفاکس برای آن هشدار نمایش داد. دلیلش این بود که صفحهٔ MUO، احتمالاً به دلایل امنیتی، اجازه نداد نسخهٔ زندهٔ خود در ArchiveBox نمایش داده شود. جز این، همهٔ نسخه‌هایی که واقعاً به آن‌ها تکیه می‌کردم، حتی در حالت آفلاین نیز به‌صورت محلی قابل‌دسترسی ماندند.

اجرای ماشین زمان شخصی، اما با یک شرط

من آرشیو را کنترل می‌کنم؛ پس مسئولیتش هم با من است

پیشخوان ArchiveBox که همه وب‌سایت‌های بایگانی‌شدهٔ فعلی را نمایش می‌دهد

هرکس که حتی زیرساختی نیمه‌مهم را خود میزبانی کرده باشد، می‌داند که جاودانه نیست. اگر این ماشین مجازی پیش از پشتیبان‌گیری از پوشهٔ داده‌هایش خراب شود، باید با همهٔ آن نماگرفت‌ها خداحافظی کنم.

ArchiveBox همچنین نمی‌تواند بازپخش بی‌نقص هر ورود به سامانه، پخش‌کنندهٔ ویدیو یا رابط کاربری پویایی را تضمین کند. افزونگی نیز فضا می‌طلبد. دامنهٔ example.com تنها ۳۸۴ کیلوبایت در ۱۷ پرونده اشغال کرد. آزمایش کنترل‌شدهٔ من این مجموعه را به ۱٫۵ مگابایت و ۵۲ پرونده رساند. افزودن مقالهٔ MUO نیز آن را به ۳۴ مگابایت و ۱۵۸ پرونده افزایش داد.

کمتر از ۴۰ مگابایت برای سه وب‌سایت مرا به فکر تغییر اندازه و گسترش پارتیشن‌ها نمی‌اندازد، اما وقتی بایگانی سایت‌های بیشتر را آغاز کنم، قطعاً حجم آن انباشته خواهد شد. دلیلش این است که نشانک‌ها تنها نشانی‌اند، در حالی که ArchiveBox صفحات HTML، تصاویر، PDFها، نماگرفت‌ها، داده‌های WARC و فراداده را ذخیره می‌کند.

با این حال، به‌نظرم این هزینه ارزشش را دارد؛ زیرا قرار نیست هر صفحه‌ای را که بی‌هدف باز می‌کنم حفظ کنم. چنین کاری خیلی زود یک بایگانی مفید را به انباری تبدیل می‌کند. مستندات، منابع پژوهش، خریدهای آنلاین، راه‌حل‌های قدیمی برای مشکلات خاص و هر آنچه ممکن است روزی به ارجاعش نیاز داشته باشم، جایگاهی در این بایگانی دارند.

در نهایت، فضای ذخیره‌سازی در برابر ازدست‌دادن یک راه‌حل فنی نامعمول، منبع پژوهشی یا پاسخی مدفون در یک گفت‌وگوی Stack Overflow، بسیار ارزان‌تر است.

منبع: این مطلب ترجمه و بومی‌سازی مقاله‌ای از MakeUseOf به قلم Gregory Gibson است. مشاهده مقاله اصلی