جاسازی robots.txt در فایل های WAV 🥖 تصادفی های جان مولر

tl;dr: می‌توانید یک فایل robots.txt را در یک فایل صوتی جاسازی کنید، و هم می‌تواند یک robots.txt معتبر و هم یک فایل صوتی معتبر باشد.

استاندارد robots.txt یک ویژگی جالب دارد: هر چیزی را که متوجه نشود نادیده می گیرد. متن تصادفی، هنر ASCII، و حتی داده های دیگر را می توان بدون نامعتبر کردن فایل robots.txt اضافه کرد.

شما می توانید یک کار ساده انجام دهید.

Roses are red
Violets are blue
user-agent: Googlebot
disallow: /foo

یا کاری انجام بده عجیب و غریب.

این به شما امکانات جالبی می دهد، مانند استفاده از یک صفحه HTML برای ارائه یک فایل robots.txt معتبر، یا جاسازی آن در هر چیز دیگری که محتوای متنی را حفظ می کند. چند اخطار وجود دارد، به دلایل عملی، همه تجزیه کننده های robots.txt اندازه فایل را محدود می کنند، بنابراین متن باید در ابتدای فایل باشد.

فایل های WAV

بسیاری از انواع فایل‌های اولیه چندان پیچیده نیستند، که شامل فرمت WAV نیز می‌شود. از یک کانتینر تکه تکه شده استفاده می‌کند، به این معنی که می‌توانید انواع مختلفی از داده‌ها را در فایل قرار دهید، مشابه اینکه چگونه می‌توانید کشوهایی در کابینت داشته باشید که حاوی چیزهای مختلف است. تکه ها دارای برچسب هستند، طول فایل را شامل می شوند و از نظر تئوری می توانند به هر ترتیبی باشند. این برای ما عالی است، ما فقط نوع جدیدی از تکه را می سازیم و robots.txt خود را در آنجا می اندازیم. همان پیکربندی تکه‌شده (“RIFF”) برای تعدادی از انواع فایل‌های دیگر، از جمله ویدئوها استفاده می‌شود (بنابراین، بله، robots.txt شما می‌تواند خزنده‌های rickroll بصری و شنیداری داشته باشد).

ساختار تکه ای RIFF

(از مشخصات مایکروسافت)

مایکروسافت مشخصاتی برای فرمت RIFF دارد، ویکی‌پدیا نمای کلی خوبی دارد، این سایت برخی از انواع تکه‌های پشتیبانی‌شده را فهرست می‌کند، و چند منبع دیگر وجود دارد که به جزئیات بیشتر می‌پردازند. فرمت WAV آنقدر قدیمی است که به خوبی قابل درک است، اما واقعاً چه کسی به یاد دارد؟ برخی از فرمت های دیگری که من پیدا کردم به طور مشابه با chunking کار می کنند، AVI، WebP، PNG و ANI (نشانگرهای متحرک) هستند. می توانید تصویری از فایل robots.txt ایجاد کنید و نسخه متنی دیگری را برای خزنده ها ارائه دهید. کد من باید برای هر فرمت مبتنی بر RIFF کار کند.

من از انواع فایل های دیگری که می توانید به این شکل ترکیب کنید تا آنها را به فایل های معتبر از هر دو نوع تبدیل کنید، اطلاعی ندارم. شما به قالبی نیاز دارید که بتواند برخی از داده های باینری اضافی را در ابتدا نادیده بگیرد، و قالبی که بتواند محتوای دلخواه از نوع دیگری را جاسازی کند. فایل‌های کد کامپیوتری AFAIK کار نمی‌کنند، کامپایلر/تجزیه‌کننده خطا از داده‌های اضافی پرتاب می‌کند. آیا ترکیب دیگری از انواع فایل وجود دارد که بتوان آنها را ترکیب کرد و هر دو هنوز معتبر باشند؟

فایل WAV را در سرویسی که فایل های صوتی را دوباره پردازش می کند، ذخیره نکنید. اگر فایل صوتی تنها جایی است که عبارت کیف پول بیت کوین متنی خود را دارید، از Spotify استفاده نکنید. (احتمالاً این سرویس ها با فشرده سازی مجدد فایل ها به شما کمک می کنند که محتوای متنی را حذف می کند.)

ترکیب ربات ها و امواج

برای ساخت فایل WAV خود از Google Colab و Audacity استفاده کردم. من از Audacity برای ضبط صدا و فشرده سازی آن استفاده کردم. فایل صوتی باید نسبتا کوتاه باشد، من 1.5 مگابایت را هدف قرار دادم. توجه داشته باشید که برخی از انواع فشرده سازی در برخی از مرورگرها / رایانه ها کار نمی کنند – متوجه شدم که GSM و ADPCM هر دو کار نمی کنند.

برای فایل robots.txt، با یک خط نظر شروع کنید (“# comment…”). در غیر این صورت، هر دستور اولیه ای که ممکن است داشته باشید، ممکن است توسط داده های باینری که قبل از آن آمده است، شکسته شود. شروع با یک خط نظر در robots.txt به هر حال تمرین خوبی است، این اطمینان را ایجاد می کند که BOM های اضافی UTF-8 خط اول را شکسته نشوند. به طور مشابه، من دوست دارم با یک خط نظر ببندم تا داده های باینری پس از آن به عنوان بخشی از آخرین دستورالعمل دیده نشوند.

فایل Google Colab مخزن من در Github است.

کد بسیار ساده است، اما خواندن فایل های باینری با پایتون کمی عجیب است. در سطح بالا، آن:

  1. هم محتویات robots.txt و هم فایل صوتی را دریافت می کند
  2. فایل صوتی را به قطعات تقسیم می کند
  3. یک تکه برای محتویات robots.txt ایجاد می کند
  4. فایل صوتی جدید را ایجاد و ذخیره می کند
  5. به شما امکان می دهد فایل صوتی را برای یک آزمایش ساده در مرورگر پخش کنید

میزبانی robots.txt به عنوان یک WAV

متأسفانه، اگر فایل صوتی را فقط به عنوان robots.txt ذخیره کنید و آن را روی سرور خود قرار دهید، اکثر مرورگرها به جای پخش، محتوای باینری را نشان می دهند. برای حل این مشکل (اگر کاربران نتوانند فوراً آن را بازی کنند چه لذتی دارد؟)، هدر سرور را تنظیم کردم. من از سرصفحه‌های پاسخ سرور زیر برای /robots.txt استفاده کردم:

Content-Type: audio/wav
Content-Disposition: inline
X-Content-Type-Options: nosniff

یا در من firebase.json فایل:

{
  "hosting": { // ...
    "headers": ( {
      "source": "robots.txt",
      "headers": ( {
        "key": "Content-Type",
        "value": "audio/wav"
      }, {
        "key": "Content-Disposition",
        "value": "inline"
      }, {
        "key": "X-Content-Type-Options",
        "value": "nosniff"
      } ) 
    }, // ...
    )
  }
}

این برای اکثر مرورگرها کار می کند، اما برخی همچنان محتوای باینری را نشان می دهند.

انطباق تست

فقط با باز کردن آن در یک ویرایشگر متن می‌توانید فایل را برای محتوای متن بررسی کنید (که کمی ناراحت می‌شود، اما بیایید، کامپیوتر، کار خود را انجام دهید).

robots.txt در یک ویرایشگر متن

می‌توانید انطباق فایل robots.txt خود را با کنسول جستجوی Google یا تجزیه‌کننده منبع باز آزمایش کنید. در کروم، به طور عجیبی، view-source نیز کار می کند.

افکار آینده

همه اینها می تواند خودکار باشد. APIهای ابری متن به گفتار وجود دارند که می توانند یک فایل متنی را بگیرند و یک نسخه صوتی بسازند. سپس می توانید فایل ها را با هم ترکیب کنید. یا، از یک LLM استفاده کنید تا داستانی را بر اساس فایل robots.txt شما تعریف کند و از آن استفاده کنید (من سعی کردم، حتی برای من خیلی عجیب بود). بله، فایل robots.txt شما می‌تواند Doom را نیز پخش کند.

در نتیجه

چی بگم. این ایده بدی بود و من دوباره این کار را انجام خواهم داد.

نظرات / سوالات

در حال حاضر هیچ قابلیت نظر دادن در اینجا وجود ندارد. اگر می‌خواهید نظر بدهید، لطفاً از Bluesky استفاده کنید و من را در آنجا ذکر کنید: @johnmu.com. با تشکر

صفحات مرتبط

Source link