ওয়েব ব্রাউজার

একটা ওয়েব পাতা তার ফাইল দেওয়ার আগে যা ঘটতে হবে

তুমি ভিডিওটা দেখতে পাচ্ছ। এটা চলছে, ঠিক ওখানে, ওয়েব ব্রাউজারে। তাহলে এটা রাখার কোনো উপায় নেই কেন? উত্তরটা হলো একটা ওয়েব পাতা খুব কমই একটা ফাইল হস্তান্তর করে — এটা নির্দেশনা হস্তান্তর করে, আর ব্রাউজার এগুলো থেকে যে ফাইলটা বানায় তা একটা একক জিনিস হিসেবে একদমই নাও থাকতে পারে।

6 মিনিট পড়া আপডেট ২৯ জুলাই, ২০২৬

FoxDL

একটা পাতা যে চার উপায়ে ভিডিও দেয়, শুধু একটাই একটা ফাইল

সবচেয়ে পুরনো আর সহজটা হলো একটা সরাসরি ফাইল: পাতাটা .mp4-এ শেষ হওয়া একটা ঠিকানার দিকে নির্দেশ করে আর ব্রাউজার এটা আনে। তুমি সেই ঠিকানাটা খুঁজে পেলে, তোমার কাছে ফাইলটা আছে। বেশিরভাগ ছোট সাইট, ফোরাম, নিউজ আউটলেট আর ফাইল হোস্ট এখনো এভাবেই কাজ করে।

দ্বিতীয়টা হলো অ্যাডাপ্টিভ স্ট্রিমিং — HLS বা DASH। পাতাটা একটা প্লেলিস্ট লোড করে যা একাধিক কোয়ালিটি লেভেলে কয়েকশো ছোট সেগমেন্টের তালিকা দেয়, আর প্লেয়ার যেতে যেতে এগুলো জোড়া লাগায়, তোমার কানেকশন বদলালে কোয়ালিটি বদলায়। খুঁজে পাওয়ার মতো একক কোনো ফাইল নেই। এটা সেভ করা মানে প্রতিটা সেগমেন্ট আনা আর এগুলো থেকে একটা ফাইল আবার বানানো।

তৃতীয়টা হলো একটা ব্লব URL। পাতাটা ইতিমধ্যেই JavaScript দিয়ে ডেটা এনেছে আর প্লেয়ারকে ব্রাউজারের নিজের মেমরিতে থাকা কিছুর একটা রেফারেন্স দিয়েছে। তুমি দেখতে পাও এমন ঠিকানাটা (blob:https://…) সেই পাতা আর সেই সেশনের বাইরে অর্থহীন — এটা খোলা, শেয়ার বা ডাউনলোড করা যায় না, আর এটাই বেশিরভাগ সরল "ভিডিও ফাইন্ডার"-কে হোঁচট খাওয়ায়।

চতুর্থটা হলো সুরক্ষিত কনটেন্ট: একটা DRM সিস্টেমের মাধ্যমে চালানো এনক্রিপ্টেড সেগমেন্ট, যেখানে ডিক্রিপশন চাবিটা ব্রাউজারকে এমন শর্তে দেওয়া হয় যা স্পষ্টভাবে একটা কপি রাখা নিষিদ্ধ করে। এটা এড়িয়ে যাওয়ার মতো একটা বাধা না; এটা সেই ব্যবস্থা যার ওপর একটা লাইসেন্স চুক্তি বানানো, আর কোনো বৈধ টুলই এটা পরাজিত করে না।

একটা ওয়েব ব্রাউজার কীভাবে বুঝতে পারে সেভ করার মতো কিছু আছে

একটা ইন-অ্যাপ ওয়েব ব্রাউজার যা খুঁজে পায় তা সেভ করার প্রস্তাব দেয় সে একসাথে কয়েকটা কাজ করছে। প্রতিটা অন্যগুলো মিস করা একটা ক্ষেত্র ধরে।

পাতার মিডিয়া এলিমেন্ট পড়া
<video>, <audio> আর <source> ট্যাগের জন্য ডকুমেন্টটা হাঁটা আর এদের ঠিকানা পড়া। সরাসরি-ফাইল ক্ষেত্রটা তাৎক্ষণিকভাবে ধরে, পাতা লোড হওয়ার পর JavaScript দিয়ে বানানো সবকিছু মিস করে।
শ্যাডো DOM-এর ভেতরে দেখা
আধুনিক প্লেয়ার হলো কাস্টম এলিমেন্ট যাদের ভেতরটা ইচ্ছাকৃতভাবে পাতা থেকে সিল করা। সাধারণ ডকুমেন্টে থেমে যাওয়া একটা সার্চ ভিডিওটা যেখানে আছে সেখানে একটা খালি বাক্স দেখে।
পাতাটা আসলে কী রিকোয়েস্ট করেছে তা দেখা
ব্রাউজারটা একটা পাতা আনা প্রতিটা রিসোর্স জানে। লোড হওয়া একটা মিডিয়া ফাইল — কোন স্ক্রিপ্ট এটা চেয়েছে, বা কখন তা নির্বিশেষে — দৃশ্যমান পাতায় কিছু এর দিকে নির্দেশ না করলেও এখানে দেখা যায়।
রেসপন্স টাইপ স্নিফিং
.php-এ শেষ হওয়া একটা URL একটা ভিডিও ফেরত দিতে পারে, আর .mp4-এ শেষ হওয়া একটা URL একটা এরর পাতা ফেরত দিতে পারে। সার্ভার আসলে যে Content-Type পাঠিয়েছে তাই বলে দেয় কোনটা — এক্সটেনশন একটা আন্দাজ মাত্র।

একটা পাতা থেকে সেভ করাটা কাজ করলে যেমন দেখায়

ক্রমটা গুরুত্বপূর্ণ। বেশিরভাগ ব্যর্থতা দ্বিতীয় ধাপ এড়িয়ে গিয়ে একটা লগইন পাতার চার-গিগাবাইট ট্রান্সফার শুরু করা থেকে আসে।

  1. আগে মিডিয়ার এক সেকেন্ড চালাও

    অনেক পাতা প্লেব্যাক শুরু না হওয়া পর্যন্ত কিছু লোড করে না। দুই সেকেন্ড চালানো প্রায়ই প্রার্থীদের একটা খালি তালিকা আর একটা পূর্ণ তালিকার মধ্যে পার্থক্য।

  2. প্রার্থীটা আসলে কী তা যাচাই করো

    কমিট করার আগে, রিপোর্ট করা আকার আর ধরনটা দেখো। ১৪ KB-এর একটা "সিনেমা" একটা HTML পাতা। তুমি video/mp4 আশা করেছিলে এমন জায়গায় text/html টাইপ মানে তোমার কাছে ভুল লিংক।

  3. তুমি যে কোয়ালিটি চাও তা বেছে নাও

    একটা স্ট্রিম সাধারণত কয়েকটা দেয়। একটা ফোনে সবচেয়ে বেশিটা সবসময় সঠিক উত্তর না, যেখানে পার্থক্যটা অদৃশ্য কিন্তু স্টোরেজটা না।

  4. সেশনটা পার হতে দাও

    সুরক্ষিত লিংক যাচাই করে কে জিজ্ঞেস করছে: তোমার লগইন করা সেশনের কুকি, তোমাকে পাঠানো পাতা, কখনো কখনো একটা মিলে যাওয়া ব্রাউজার পরিচয়। এগুলো ছাড়া শুরু করা একটা ডাউনলোড একটা 403 পায় যদিও পাতাটা ঠিকভাবে চলেছিল।

  5. যা নেমেছে তা যাচাই করো

    এটা খোলো। দুই সেকেন্ড চলে থেমে যাওয়া একটা ফাইল ছেঁটে ফেলা হয়েছিল — সাধারণত একটা মেয়াদ শেষ হওয়া লিংক — আর রাখার বদলে আবার শুরু করার যোগ্য।

একটা ইন-অ্যাপ ওয়েব ব্রাউজারের যা ঠিক করা দরকার

মিডিয়া খুঁজে পাওয়ার বাইরে, এগুলোই ঠিক করে ডাউনলোডটা আসলেই সম্পন্ন হয় কিনা।

  • ডাউনলোড পর্যন্ত সেশনটা বহন করা

    কুকি, রেফারার আর ইউজার এজেন্ট রিকোয়েস্টের সাথেই যেতে হবে। এগুলো ছাড়া একটা সুরক্ষিত লিংক পাতায় খোলে আর ডাউনলোডারে ব্যর্থ হয়।

  • সেই ক্রেডেনশিয়ালগুলো স্টোরেজের বাইরে রাখা

    সেশন কুকি সেশনের দৈর্ঘ্যের জন্য একটা পাসওয়ার্ডের মতোই কার্যকর। এগুলোর ট্রান্সফারের সময়টুকু মেমরিতে থাকার কথা আর অন্য কোথাও না — কোনো ডেটাবেসে না, কোনো লগে না।

  • লিংকটা অন্য অ্যাপকে দিতে অস্বীকার করা

    একটা ডোমেইন দাবি করলে iOS খুশিমনে একটা ট্যাপ করা লিংক অন্য একটা অ্যাপে খুলে দেবে। মিডিয়া সেভ করার জন্য বানানো একটা ওয়েব ব্রাউজারকে নেভিগেশনটা নিজেই বাতিল আর আবার জারি করতে হবে, নাহলে তোমার চাওয়া পাতাটা অন্য কারো অ্যাপে হারিয়ে যায়।

  • পাতাটা রেন্ডার হওয়ার আগে ছেঁটে ফেলা

    এখানে একটা কনটেন্ট ব্লকার শুধু বিজ্ঞাপন নিয়ে না — কম ট্র্যাকার আর ওভারলে মানে মিডিয়া তালিকায় কম ভুয়া প্রার্থী।

  • ভিডিওর পাশাপাশি ডকুমেন্টও সামলানো

    PDF, ZIP আর Office ফাইল হলো মানুষ ওয়েব থেকে যা সেভ করে তার বাকি অর্ধেক, আর এগুলো বাকি সবকিছুর মতো একই লাইব্রেরিতে নামা উচিত।

মানুষ যা জিজ্ঞেস করে

Safari নিজে এটা কেন করতে পারে না?

Safari ফাইল ডাউনলোড করে — iOS 13 থেকেই। এটা যা করে না তা হলো লিংক করার বদলে স্ট্রিম হওয়া মিডিয়ার জন্য একটা পাতা পরীক্ষা করা, বা একটা সেগমেন্ট করা স্ট্রিমকে একটা ফাইলে আবার বানানো। এটা একটা ওয়েব ব্রাউজার, আর সেই কাজটা একটা ডাউনলোড ম্যানেজারের।

একটা ব্লব URL কী, আর আমি এটা ডাউনলোড করতে পারি না কেন?

এটা পাতার আগে থেকেই মেমরিতে ধরে রাখা ডেটার একটা হ্যান্ডেল। ওই ট্যাবের বাইরে এর কোনো অস্তিত্ব নেই, তাই এটা যেকোনো জায়গায় পেস্ট করলে কিছুই আসে না। আসল মিডিয়াটা কোথাও একটা আসল জায়গা থেকে আনা হয়েছিল, আর সেই ঠিকানাটাই — ব্লবটা না — খুঁজে বের করার যোগ্য।

পাতাটা ঠিকভাবে চলে কিন্তু ডাউনলোডটা একটা 403 পায়। কেন?

ডাউনলোড রিকোয়েস্টটা পাতার কাছে থাকা জিনিসগুলো ছাড়াই এসেছে: তোমার সেশন কুকি, রেফার করা পাতা, কখনো কখনো একটা মিলে যাওয়া ব্রাউজার পরিচয়। সার্ভার ঠিক এই সমন্বয়টাই ব্যবহার করে একজন দর্শক আর একজন স্ক্র্যাপারকে আলাদা করতে।

সবকিছু কি সেভ করা যায়?

না, আর এটা ডিজাইন অনুযায়ী। DRM দিয়ে সুরক্ষিত কনটেন্ট এমন চাবি দিয়ে এনক্রিপ্ট করা যা এটা রাখা নিষিদ্ধ করে এমন একটা লাইসেন্সের অধীনে ইস্যু করা। কিছু সাইট প্রতিটা সেগমেন্ট আলাদাভাবে স্বল্পস্থায়ী টোকেন দিয়েও সাইন করে। দুটোই যেভাবে চাওয়া হয়েছে সেভাবেই কাজ করছে।

FoxDL

FoxDL-এর ভেতরের ওয়েব ব্রাউজার

এটা একটা সাধারণ ট্যাবযুক্ত ওয়েব ব্রাউজার যার কাজ তোমার প্রতিদিনের ব্রাউজার হওয়ার বদলে জিনিসগুলো তোমার লাইব্রেরিতে আনা।

  • শ্যাডো DOM আর পাতাটা আসলে কী রিকোয়েস্ট করেছে তার রেকর্ডসহ ছয়টা শনাক্তকরণ চ্যানেল, তাই পুরোপুরি JavaScript দিয়ে বানানো একটা প্লেয়ারও দৃশ্যমান থাকে।
  • আসল ধরনটা এক্সটেনশন থেকে আন্দাজ করার বদলে রেসপন্স থেকে স্নিফ করা হয়, আর আনা যায় না এমন blob: প্রার্থীদের প্রস্তাব দিয়ে ব্যর্থ হওয়ার বদলে ফিল্টার করে বাদ দেওয়া হয়।
  • একটা সুরক্ষিত লিংক সমাধান হয় সেজন্য কুকি, রেফারার আর ইউজার এজেন্ট ডাউনলোড পর্যন্ত বহন করা হয় — আর এগুলোর কোনোটাই কখনো ডিস্কে লেখা হয় না।
  • পাতাটা রেন্ডার হওয়ার আগে একটা কনটেন্ট ব্লকার এটা ছেঁটে ফেলে।
  • এক ট্যাপে মিডিয়ার মতোই একই লাইব্রেরিতে PDF, ZIP আর ডকুমেন্ট সেভ হয়।
  • তোমার নিজের শর্টকাটের ট্যাব, বুকমার্ক আর একটা স্টার্ট পেজ

FoxDL নিজের কোনো কনটেন্ট দেয় না। তুমি যা সেভ করো তা তোমার আনা জিনিস, আর এটা রাখার অধিকার থাকার দায়িত্ব তোমার।

সাধারণ প্রশ্ন

সব প্রশ্ন

আরও পড়ুন

তোমার লাইব্রেরি, অবশেষে এক জায়গায়।

বিনামূল্যে ডাউনলোড। অ্যাকাউন্ট নেই — সব ফিচার ফ্রি ভার্সনে।

ডাউনলোড করো App Store থেকে