کد های کوتاه و کاربردی – وب دنج https://webdenj.ir مرجع رسمی وردپرس ایران Sat, 30 May 2026 10:15:10 +0000 fa-IR hourly 1 https://wordpress.org/?v=7.0 https://webdenj.ir/wp-content/uploads/2026/04/cropped-webdenj-logo_1777451404-32x32.webp کد های کوتاه و کاربردی – وب دنج https://webdenj.ir 32 32 تماشای یوتیوب با عبور از اینترنت ملی؛ راه‌اندازی سرویس اختصاصی امن و پرسرعت https://webdenj.ir/youtube-qhand-shecan-setup/ https://webdenj.ir/youtube-qhand-shecan-setup/#respond Mon, 04 May 2026 08:47:05 +0000 https://webdenj.ir/?p=8949 در این راهنمای کامل یاد می‌گیرید چطور با تکیه بر زیرساخت ابری گوگل و یک نرم‌افزار سبک، یک راه‌حل اختصاصی برای تماشای یوتیوب با عبور از اینترنت ملی بسازید؛ راه‌حلی که هم امن است، هم تحت کنترل خودتان و هم برای استریم ویدیو (به‌خصوص یوتیوب) بهینه شده است.

اگر شما هم جزء آن دسته از کاربران مشتاق محتوای یوتیوب هستید که هر روز با دیواره‌های محدودیت اینترنتی و اینترنت ملی روبرو می‌شوید و می‌خواهید تماشای یوتیوب با عبور از اینترنت ملی را به شکل حرفه‌ای و پایدار تجربه کنید، این مقاله دقیقاً برای شما نوشته شده است. ما در این راهنما فراتر از یک آموزش ساده دور زدن فیلتر رفته‌ایم و به شما نشان می‌دهیم چگونه یک سرویس اختصاصی، امن و کاملاً تحت کنترل خودتان ایجاد کنید.در این روش، با استفاده از زیرساخت ابری قابل اعتماد گوگل و یک نرم‌افزار سبک‌وزن ویندوزی، یک کانال امن برای دسترسی به یوتیوب و سایر سرویس‌های جهانی خواهید ساخت؛ راه‌حلی که هم برای تماشای یوتیوب با عبور از اینترنت ملی مناسب است و هم حریم خصوصی شما را در سطحی حرفه‌ای حفظ می‌کند.تصور کنید می‌توانید با حداکثر کیفیت (حتی 4K) ویدیوهای آموزشی، موسیقی، اخبار و سرگرمی‌های مورد علاقه خود را بدون مکث، بافرینگ و نگرانی از قطعی، تماشا کنید. این دیگر یک رویا نیست. با پیگیری دقیق مراحل این آموزش، شما صاحب یک کانال ارتباطی خصوصی و قدرتمند می‌شوید که کلید دسترسی و تماشای یوتیوب با عبور از اینترنت ملی را در اختیار شما قرار می‌دهد.

چرا روش اختصاصی بهترین گزینه برای تماشای یوتیوب با عبور از اینترنت ملی است؟

قبل از ورود به مراحل فنی، لازم است بدانید چرا ساخت یک روش اختصاصی، نسبت به سرویس‌های عمومی و اشتراکی برای هدف تماشای یوتیوب با عبور از اینترنت ملی برتری دارد.

حاکمیت کامل بر ترافیک و داده‌ها

زمانی که از سرویس‌های عمومی یا اشتراکی استفاده می‌کنید، عملاً تمام داده‌های اینترنتی شما، از جمله تاریخچه تماشای یوتیوب، جستجوها و حتی اطلاعات حساب کاربری، از سرورهای یک شرکت ثالث عبور می‌کند. این موضوع ریسک‌های حریم خصوصی جدی ایجاد می‌کند.

در روش این مقاله، سرور میانی شما روی زیرساخت گوگل قرار دارد و خودتان کنترل کامل کد، احراز هویت و تنظیمات را در دست دارید. هیچ نهاد سومی به ترافیک شما دسترسی مستقیم ندارد و همین موضوع، تماشای یوتیوب با عبور از اینترنت ملی را به شکلی امن‌تر ممکن می‌کند.

حذف محدودیت‌های سرویس‌های اشتراکی

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

ثبات و قابلیت اطمینان بالا

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

بهینه‌سازی برای استریم ویدیو

چون شما مالک و مدیر کانال ارتباطی هستید، می‌توانید تنظیمات را طوری انجام دهید که ترافیک استریم ویدیو (به‌ویژه یوتیوب) در اولویت قرار گیرد. در ادامه، تکنیک‌هایی برای افزایش سرعت دانلود و کاهش تاخیر در پخش ویدیوها ارائه می‌شود که مستقیماً روی کیفیت تماشای یوتیوب با عبور از اینترنت ملی تأثیر دارد.

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

معماری فنی راه‌حل اختصاصی برای تماشای یوتیوب با عبور از اینترنت ملی

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

جزء اول: سرور میانی روی Google Apps Script

Google Apps Script یک پلتفرم اجرای کد جاوااسکریپت روی ابر گوگل است. در این روش، از قابلیت Web App آن استفاده می‌شود تا یک Endpoint امن HTTPS ایجاد شود. درخواست‌های مرورگر یا کلاینت شما ابتدا به این آدرس می‌رسند، در کد پردازش می‌شوند و سپس به مقصد نهایی (مثل سرورهای یوتیوب) هدایت می‌گردند.

پاسخ‌ها نیز مسیر معکوس را طی می‌کنند. تمام این ارتباطات تحت لایه رمزنگاری استاندارد SSL/TLS گوگل انجام می‌شود؛ موضوعی که برای تماشای یوتیوب با عبور از اینترنت ملی با حداقل ریسک شنود و دستکاری اهمیت زیادی دارد.

جزء دوم: کلاینت محلی (نرم‌افزار قندشکن.exe)

این نرم‌افزار روی ویندوز نصب می‌شود و نقش کلاینت اختصاصی را ایفا می‌کند. وظیفه آن، ایجاد یک تونل امن بین سیستم شما و سرور Google Apps Script است و سپس مسیریابی ترافیک اینترنت (به‌خصوص دامنه‌های یوتیوب) از طریق این تونل است.

نرم‌افزار به شکل موقت و ایمن تنظیمات شبکه ویندوز را تغییر می‌دهد تا مسیر ترافیک برای تماشای یوتیوب با عبور از اینترنت ملی از این کانال امن عبور کند.

اجزای پشتیبانی‌کننده: گواهینامه SSL و Auth Key

برای جلوگیری از سوءاستفاده دیگران، یک کلید احراز هویت (Auth Key) در کد قرار داده می‌شود. تنها درخواست‌هایی که این کلید را به‌درستی ارسال کنند، اجازه عبور دارند. همچنین برای جلوگیری از حملات میان‌جی (Man-in-the-Middle)، نرم‌افزار از گواهینامه SSL استفاده می‌کند تا مطمئن شود در حال ارتباط با سرور واقعی شما در گوگل است.

مولفه نقش در پروژه مزیت اصلی برای یوتیوب
Google Apps Script سرور میانی و دروازه امن سرعت و پایداری بالا برای استریم ویدیو و تماشای یوتیوب با عبور از اینترنت ملی
نرم‌افزار قندشکن.exe کلاینت محلی و ایجاد تونل هدایت خودکار ترافیک یوتیوب از مسیر امن
کلید احراز هویت (Auth Key) لایه امنیتی سرویس جلوگیری از مصرف پهنای باند توسط دیگران و حفظ کیفیت استریم شما

هشدار امنیتی:
این معماری یک راه‌حل شخصی‌سازی شده و قدرتمند است. محرمانه نگه داشتن Auth Key و فایل‌های پیکربندی بر عهده خود شماست. افشای این اطلاعات می‌تواند هم کیفیت تماشای یوتیوب با عبور از اینترنت ملی را کاهش دهد و هم ریسک‌های امنیتی برای شما ایجاد کند.

آموزش گام‌به‌گام ساخت سرویس اختصاصی برای تماشای یوتیوب با عبور از اینترنت ملی

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

گام ۱: آماده‌سازی محیط Google Apps Script

ابتدا وارد حساب گوگل (Gmail) خود شوید. این حساب نقش هاست سرویس شما را خواهد داشت. سپس به آدرس https://script.google.com بروید.

روی دکمه «پروژه جدید» کلیک کنید تا یک پروژه خالی ایجاد شود. نام پیش‌فرض پروژه را به یک نام معنادار مانند MyPrivateYouTubeGateway تغییر دهید تا مدیریت آن در آینده ساده‌تر شود.

کد پیش‌فرض را پاک کرده و آماده شوید تا کد اصلی سرور را وارد کنید؛ کدی که هسته سرویس شما برای تماشای یوتیوب با عبور از اینترنت ملی خواهد بود.

گام ۲: وارد کردن و درک کد سرور

کد زیر نسخه‌ای بهینه، امن و قابل نظارت از اسکریپت لازم است. هر بخش با کامنت توضیح داده شده تا درک آن آسان باشد:

/**
 * DomainFront Relay — Google Apps Script
 *
 * TWO modes:
 *   1. Single:  POST { k, m, u, h, b, ct, r }       → { s, h, b }
 *   2. Batch:   POST { k, q: [{m,u,h,b,ct,r}, ...] } → { q: [{s,h,b}, ...] }
 *      Uses UrlFetchApp.fetchAll() — all URLs fetched IN PARALLEL.
 *
 * DEPLOYMENT:
 *   1. Go to https://script.google.com → New project
 *   2. Delete the default code, paste THIS entire file
 *   3. Click Deploy → New deployment
 *   4. Type: Web app  |  Execute as: Me  |  Who has access: Anyone
 *   5. Copy the Deployment ID into config.json as "script_id"
 *
 * CHANGE THE AUTH KEY BELOW TO YOUR OWN SECRET!
 */

const AUTH_KEY = "xxxxxxxxxx";

const SKIP_HEADERS = {
  host: 1, connection: 1, "content-length": 1,
  "transfer-encoding": 1, "proxy-connection": 1, "proxy-authorization": 1,
};

function doPost(e) {
  try {
    var req = JSON.parse(e.postData.contents);
    if (req.k !== AUTH_KEY) return _json({ e: "unauthorized" });

    // Batch mode: { k, q: [...] }
    if (Array.isArray(req.q)) return _doBatch(req.q);

    // Single mode
    return _doSingle(req);
  } catch (err) {
    return _json({ e: String(err) });
  }
}

function _doSingle(req) {
  if (!req.u || typeof req.u !== "string" || !req.u.match(/^https?:\/\//i)) {
    return _json({ e: "bad url" });
  }
  var opts = _buildOpts(req);
  var resp = UrlFetchApp.fetch(req.u, opts);
  return _json({
    s: resp.getResponseCode(),
    h: resp.getHeaders(),
    b: Utilities.base64Encode(resp.getContent()),
  });
}

function _doBatch(items) {
  var fetchArgs = [];
  var errorMap = {};

  for (var i = 0; i < items.length; i++) {
    var item = items[i];
    if (!item.u || typeof item.u !== "string" || !item.u.match(/^https?:\/\//i)) {
      errorMap[i] = "bad url";
      continue;
    }
    var opts = _buildOpts(item);
    opts.url = item.u;
    fetchArgs.push({ _i: i, _o: opts });
  }

  // fetchAll() processes all requests in parallel inside Google
  var responses = [];
  if (fetchArgs.length > 0) {
    responses = UrlFetchApp.fetchAll(fetchArgs.map(function(x) { return x._o; }));
  }

  var results = [];
  var rIdx = 0;
  for (var i = 0; i < items.length; i++) {
    if (errorMap.hasOwnProperty(i)) {
      results.push({ e: errorMap[i] });
    } else {
      var resp = responses[rIdx++];
      results.push({
        s: resp.getResponseCode(),
        h: resp.getHeaders(),
        b: Utilities.base64Encode(resp.getContent()),
      });
    }
  }
  return _json({ q: results });
}

function _buildOpts(req) {
  var opts = {
    method: (req.m || "GET").toLowerCase(),
    muteHttpExceptions: true,
    followRedirects: req.r !== false,
    validateHttpsCertificates: true,
  };
  if (req.h && typeof req.h === "object") {
    var headers = {};
    for (var k in req.h) {
      if (req.h.hasOwnProperty(k) && !SKIP_HEADERS[k.toLowerCase()]) {
        headers[k] = req.h[k];
      }
    }
    opts.headers = headers;
  }
  if (req.b) {
    opts.payload = Utilities.base64Decode(req.b);
    if (req.ct) opts.contentType = req.ct;
  }
  return opts;
}

function doGet(e) {
  return HtmlService.createHtmlOutput(
    "<!DOCTYPE html><html><head><title>My App</title></head>" +
      '<body style="font-family:sans-serif;max-width:600px;margin:40px auto">' +
      "<h1>Welcome</h1><p>This application is running normally.</p>" +
      "</body></html>"
  );
}

function _json(obj) {
  return ContentService.createTextOutput(JSON.stringify(obj)).setMimeType(
    ContentService.MimeType.JSON
  );
}

 

پس از کپی و جایگذاری کد، مقدار AUTH_KEY را به یک رمز قوی و شخصی تغییر دهید. این رمز، کلید اصلی امنیت سرویس شما برای تماشای یوتیوب با عبور از اینترنت ملی است.

گام ۳: استقرار اسکریپت به‌عنوان Web App

پس از ذخیره کد، از منوی بالای صفحه، گزینه «استقرار» را انتخاب کنید و روی «استقرار جدید» کلیک کنید. نوع استقرار را روی «Web App» قرار دهید.

در بخش توضیحات، عبارتی مانند VPN Gateway for YouTube Access بنویسید. گزینه «Execute as» را روی «Me» قرار دهید تا کد با هویت حساب شما اجرا شود.

در بخش «Who has access» بسته به سناریوی خود، گزینه مناسب را انتخاب کنید. برای سناریوی ساده، می‌توانید از «Anyone» همراه با اتکا به Auth Key استفاده کنید؛ اما اگر تنظیمات کلاینت شما به شکل دیگری است، گزینه را مطابق نیاز خود تنظیم نمایید.

بعد از استقرار، گوگل از شما مجوز می‌خواهد. مجوزها را تأیید کنید تا اسکریپت بتواند درخواست‌های اینترنتی را مدیریت کند. در پایان، آدرس Web App و Deployment ID را یادداشت کنید؛ این‌ها در مراحل بعدی برای تنظیم کلاینت ضروری هستند.

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

دانلود، نصب و تنظیم نرم‌افزار کلاینت برای تماشای یوتیوب با عبور از اینترنت ملی

حالا که سمت سرور آماده است، نوبت ویندوز است تا به شکل هوشمند ترافیک یوتیوب شما را از این تونل عبور دهد.

گام ۴: دانلود و نصب نرم‌افزار کلاینت

برای دریافت آخرین نسخه نرم‌افزار کلاینت، از لینک زیر استفاده کنید:

دانلود نرم‌افزار کلاینت قندشکن (نسخه ۲.۵ – ویندوز)

فایل را استخراج کرده و قندشکن.exe را با گزینه Run as administrator اجرا کنید تا اجازه اعمال تنظیمات شبکه را داشته باشد. اگر ویندوز هشدار SmartScreen نمایش داد، با انتخاب «More info» و سپس «Run anyway» ادامه دهید (در صورتی که منبع فایل را می‌شناسید و به آن اعتماد دارید).

در مراحل نصب، گزینه «Install Root Certificate» را فعال بگذارید تا گواهینامه لازم برای ارتباط امن نصب شود. این گواهینامه نقش مهمی در امن‌سازی تماشای یوتیوب با عبور از اینترنت ملی دارد.

گام ۵: پیکربندی اولیه و اتصال

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

در فیلد «Google Deployment ID» مقدار Deployment ID که از صفحه استقرار گوگل کپی کرده‌اید را وارد کنید.

در فیلد «Authentication Key»، همان رمز قوی که برای AUTH_KEY تنظیم کرده بودید، وارد شود. حروف بزرگ و کوچک را دقیق رعایت کنید.

روی «Connect» کلیک کنید. نرم‌افزار مراحل زیر را طی می‌کند: اتصال امن به سرور، احراز هویت، ایجاد تونل، تنظیم کارت شبکه مجازی و نصب گواهینامه (در صورت نیاز). در صورت موفقیت، آیکن برنامه سبز می‌شود و وضعیت «Connected» نمایش داده خواهد شد.

از این لحظه، مسیر شما برای تماشای یوتیوب با عبور از اینترنت ملی آماده است و می‌توانید وارد مرورگر شده و youtube.com را باز کنید.

بهینه‌سازی برای تجربه بهتر تماشای یوتیوب با عبور از اینترنت ملی

برای اینکه حداکثر کیفیت را در استریم یوتیوب تجربه کنید، چند تنظیم تکمیلی پیشنهاد می‌شود.

کاهش بافرینگ و افزایش کیفیت

اگر با بافرینگ یا افت کیفیت مواجه شدید، ابتدا کش مرورگر را پاک کنید و DNS ویندوز را ریست کنید. در کروم به آدرس chrome://settings/clearBrowserData رفته و کش تصاویر و فایل‌ها را پاک کنید. سپس در Command Prompt با دسترسی مدیر، دستورات ipconfig /flushdns و netsh winsock reset را اجرا کرده و سیستم را ریستارت کنید.

برای ارزیابی سرعت واقعی، هنگامی که کلاینت متصل است، از سایت‌هایی مثل fast.com یا speedtest.net استفاده کنید. برای تماشای یوتیوب با عبور از اینترنت ملی با کیفیت ۱۰۸۰p، معمولاً حداقل ۵ مگابیت بر ثانیه کافی است.

تنظیمات مرورگر برای هدایت ترافیک یوتیوب

برای اطمینان از اینکه تمام ترافیک یوتیوب از این تونل عبور می‌کند، می‌توانید از افزونه‌هایی مثل FoxyProxy استفاده کنید و قانونی تعریف کنید که دامنه‌های *.youtube.com و *.googlevideo.com را از پروکسی ارائه شده توسط نرم‌افزار عبور دهد. این کار یک لایه اطمینان اضافه برای تماشای یوتیوب با عبور از اینترنت ملی است.

نکته حرفه‌ای:
دامنه *.googlevideo.com سرور اصلی تحویل ویدیو در یوتیوب است. عبور حتمی این دامنه از تونل، نقش زیادی در کاهش بافرینگ دارد.

عیب‌یابی مشکلات رایج هنگام تماشای یوتیوب با عبور از اینترنت ملی

مشکل علت احتمالی راه‌حل گام‌به‌گام
خطای Authentication Failed در نرم‌افزار عدم تطابق Auth Key یا اشتباه در Deployment ID / URL کلید را دوباره از کد گوگل کپی کنید، Deployment URL را از بخش استقرار مجدد بررسی کنید، مقادیر را بدون فاصله اضافی در نرم‌افزار وارد کرده و دوباره تلاش کنید.
اتصال برقرار است ولی یوتیوب باز نمی‌شود احتمال مسدود شدن Web App یا مشکل DNS Deployment URL را مستقیم در مرورگر باز کنید، اگر به خطا خورد، احتمالاً محدودیت سمت ISP وجود دارد. در تنظیمات نرم‌افزار از DNS اختصاصی (مثلاً 8.8.8.8) استفاده کنید یا در صورت امکان، پروتکل جایگزین را فعال کنید.
سرعت پایین و بافرینگ زیاد محدودیت سهمیه Apps Script یا ازدحام شبکه تست سرعت انجام دهید، Split Tunneling را برای خارج کردن ترافیک غیرضروری فعال کنید، کیفیت یوتیوب را دستی روی ۷۲۰p یا ۱۰۸۰p تنظیم کنید و در ساعات خلوت‌تر از سرویس استفاده کنید.
هشدار مربوط به گواهینامه در ویندوز نصب نشدن یا انقضای گواهینامه نرم‌افزار را دوباره با Run as administrator اجرا کنید، گزینه نصب/ترمیم گواهینامه را بزنید، یا فایل ca.crt را به‌صورت دستی در Trusted Root Certification Authorities نصب کنید.
از کار افتادن سرویس بعد از چند روز انقضای Deployment یا رسیدن به سهمیه وضعیت استقرار را در script.google.com بررسی کنید، در صورت لزوم Deployment جدید ایجاد کنید و URL جدید را در کلاینت تنظیم کنید. در صورت مشاهده خطای Quota، بعد از ۲۴ ساعت مجدد تست کنید یا از حساب دیگری استفاده کنید.

سوالات متداول درباره تماشای یوتیوب با عبور از اینترنت ملی

آیا این روش روی موبایل هم قابل استفاده است؟

نرم‌افزار قندشکن.exe مخصوص ویندوز طراحی شده است، اما می‌توانید با کمی تنظیمات اضافی، از کلاینت‌هایی که از SOCKS5 یا HTTP Proxy پشتیبانی می‌کنند (مثل SagerNet یا AnXray روی اندروید) برای تماشای یوتیوب با عبور از اینترنت ملی روی موبایل استفاده کنید. کافی است سرور، پورت و کلید احراز را مطابق فرمت موردنیاز در این برنامه‌ها وارد کنید و در صورت لزوم، اسکریپت را برای سازگاری بیشتر کمی تغییر دهید.

محدودیت حجمی این روش چقدر است؟

Google Apps Script برای حساب‌های رایگان، سهمیه‌های مشخصی دارد. مهم‌ترین آن‌ها سهمیه درخواست‌های UrlFetchApp و زمان اجرای روزانه است. برای استفاده معمول روزانه و تماشای یوتیوب با عبور از اینترنت ملی در حد چند ساعت، این سهمیه‌ها معمولاً کافی هستند؛ اما برای استریم‌های طولانی با کیفیت بسیار بالا ممکن است محدودیت‌ها را حس کنید.

چطور امنیت سرویس را بالاتر ببرم؟

چند نکته مهم:

از Auth Key طولانی و پیچیده استفاده کنید، سرویس را وقتی نیاز ندارید غیرفعال کنید، لاگ‌ها را در Apps Script بررسی کنید و در صورت لزوم، برای IP های مشخصی دسترسی قائل شوید (با درنظرگرفتن تغییر IP و پیچیدگی احتمالی).

سخن پایانی: تجربه‌ای آزادتر و امن‌تر از تماشای یوتیوب با عبور از اینترنت ملی

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

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

اگر پرسشی دارید یا می‌خواهید تجربه خود را به اشتراک بگذارید، بخش نظرات این مطلب در وب‌دنج در دسترس شماست.

© 2026 – این مقاله برای اهداف آموزشی تهیه شده است. کاربر مسئول رعایت قوانین کشور خود است.

]]>
https://webdenj.ir/youtube-qhand-shecan-setup/feed/ 0
آموزش جامع محدود کردن عنوان محصولات به یک خط (جادوی CSS در وردپرس) https://webdenj.ir/limit-text-to-one-line-css/ https://webdenj.ir/limit-text-to-one-line-css/#respond Fri, 24 Apr 2026 15:59:17 +0000 https://webdenj.ir/?p=8780 سلام به شما رفقای متخصص و همراهان همیشگی وب‌دنج. تا به حال برایتان پیش آمده است که ساعت‌ها برای طراحی یک باکس گرید (شبکه) جذاب برای محصولات فروشگاهتان وقت بگذارید، همه چیز در محیط طراحی بی‌نقص به نظر برسد، اما به محض اینکه محصولات واقعی با عناوین طولانی به سایت اضافه می‌شوند، تمام ساختار قالب بهم میریزد؟

بله، ما در وب‌دنج این درد را به خوبی می‌فهمیم! وقتی عنوان یک محصول یک خط است و عنوان محصول کناری سه خط، دکمه‌های «افزودن به سبد خرید» دیگر در یک راستا قرار نمی‌گیرند. این بهم‌ریختگی ظاهری، نه تنها ظاهر سایت شما را آماتور جلوه می‌دهد، بلکه تاثیر مستقیمی روی کاهش اعتماد کاربر و در نتیجه افت فروش شما دارد. اما نگران نباشید؛ امروز قرار است با یک ترفند فوق‌العاده ساده اما قدرتمند، این کابوس را برای همیشه تمام کنیم. با ما همراه باشید تا یاد بگیریم چگونه عنوان هر صفحه یا محصولی را به زیبایی در یک خط خلاصه کنیم و در انتهای آن سه نقطه (…) قرار دهیم.

چرا عناوین طولانی، قاتل خاموش رابط کاربری (UI) شما هستند؟

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

راه حل چیست؟ آیا باید از نویسندگان سایت بخواهیم عناوین را کوتاه بنویسند؟ قطعا خیر! عناوین طولانی برای سئو (SEO) و هدف‌گیری کلمات کلیدی دم‌دراز (Long-tail Keywords) بسیار حیاتی هستند. راه حل مهندسی و اصولی این است که عنوان در کدهای سایت (HTML) به صورت کامل وجود داشته باشد تا گوگل آن را بخواند، اما در ظاهر سایت (توسط CSS) برای کاربر کوتاه و منظم نمایش داده شود.

سه تفنگدار CSS: کدی که قالب شما را نجات می‌دهد

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

این سه خط کد جادویی به شرح زیر است:

/* 
 * کد محدود کردن متن در یک خط
 * منبع: وب‌دنج (WebDenj.ir) 
 */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;

کالبدشکافی کد: این سه خط دقیقا چه کار می‌کنند؟

ما در وب‌دنج دوست نداریم شما فقط کدها را کپی کنید؛ ما می‌خواهیم شما منطق پشت آن‌ها را درک کنید تا به یک متخصص واقعی تبدیل شوید. بیایید این سه خط را زیر ذره‌بین ببریم:

خط اول (white-space: nowrap): این کد به مرورگر دستور می‌دهد که به هیچ وجه متن را نشکند و به خط بعدی نبرد. یعنی حتی اگر متن ۱۰۰ کلمه هم باشد، باید همه آن‌ها در همان خط اول پشت سر هم ردیف شوند.

خط دوم (overflow: hidden): حالا که متن در یک خط طولانی قرار گرفت، قطعا از کادر و باکسی که برای آن در نظر گرفته‌ایم بیرون می‌زند. این کد به مرورگر می‌گوید: «هر قسمتی از متن که از مرز تعیین شده (باکس محصول) بیرون زد را مخفی کن و نمایش نده!»

خط سوم (text-overflow: ellipsis): حالا متن در یک خط قرار گرفته و قسمت‌های اضافی آن هم مخفی شده است. اما کاربر از کجا بفهمد که این متن ادامه دارد؟ اینجاست که این خط کد وارد عمل می‌شود و به جای متنی که مخفی شده (دقیقا در لبه مرز کادر)، سه نقطه (…) قرار می‌دهد. این کار ظاهری بسیار حرفه‌ای و استاندارد به سایت شما می‌بخشد.

قرار دادن عنوان باکس های سایت در یک خط

چگونه این کد را در المنتور پرو و جت انجین اجرا کنیم؟

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

مرحله اول: کافیست وارد ویرایشگر المنتور شوید و روی المان عنوان محصول (Product Title) یا هر متنی که می‌خواهید کوتاه شود کلیک کنید.
مرحله دوم: به تب پیشرفته (Advanced) بروید و بخش CSS سفارشی (Custom CSS) را باز کنید.
مرحله سوم: کد زیر را در آنجا قرار دهید (توجه کنید که کلمه selector در المنتور به همان المانی که انتخاب کرده‌اید اشاره می‌کند):

/* 
 * کد محدود کردن متن در یک خط
 * منبع: وب‌دنج (WebDenj.ir) 
 */
selector {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}

یک پیشنهاد دوستانه و حرفه‌ای: برای اجرای این قابلیت‌های داینامیک و کنترل کامل روی ظاهر فروشگاه، داشتن ابزارهای اورجینال یک ضرورت است. شما دوستان و طراحان عزیز می‌توانید جدیدترین و امن‌ترین نسخه افزونه المنتور پرو (Elementor Pro) و همچنین ابزار بی‌رقیب ساخت شبکه‌های داینامیک یعنی افزونه جت انجین (JetEngine) را به صورت کاملاً اورجینال و بدون دستکاری کدهای مخرب، از مخزن امن وب‌دنج دانلود کنید. با ترکیب این دو افزونه، شما می‌توانید پیچیده‌ترین فروشگاه‌های اینترنتی را با چند کلیک و بدون نیاز به دانش برنامه‌نویسی پیشرفته خلق کنید.

سوالات متداول (FAQ)

آیا مخفی کردن بخشی از متن با CSS به سئوی سایت ضربه می‌زند؟
خیر، به هیچ وجه! ربات‌های گوگل کدهای HTML سایت شما را می‌خوانند و تمام متن عنوان در آنجا حضور دارد. این کد فقط ظاهر قضیه را برای کاربر زیباتر می‌کند و هیچ تاثیر منفی روی سئو یا رتبه‌بندی شما در نتایج جستجو نخواهد داشت.

آیا می‌توانم به جای یک خط، متن را در دو یا سه خط محدود کنم؟
بله! اگر می‌خواهید متن شما مثلاً بعد از ۲ خط سه نقطه بگیرد، باید از کدهای مربوط به Line-clamp استفاده کنید که ساختار متفاوتی دارد (شامل کدهای webkit-box می‌شود). اما برای محدود کردن به صورت تک‌خطی، همین سه خط کدی که در این مقاله معرفی کردیم بهترین، استانداردترین و سبک‌ترین انتخاب ممکن است.

نتیجه‌گیری: زیبایی در سادگی است. با همین چند خط کد ساده توانستید یکی از بزرگترین مشکلات ظاهری فروشگاه‌های اینترنتی را برطرف کنید. فراموش نکنید که وب‌دنج همیشه در کنار شماست تا با آموزش‌های کاربردی و ارائه افزونه‌های اورجینال، مسیر شما را برای تبدیل شدن به یک طراح وب حرفه‌ای هموار کند.

]]>
https://webdenj.ir/limit-text-to-one-line-css/feed/ 0
آموزش کامل افزودن فیلد کد ملی به تسویه حساب ووکامرس (همراه با اعتبارسنجی) https://webdenj.ir/adding-the-country-code-field-to-the-woocommerce-checkout-page/ https://webdenj.ir/adding-the-country-code-field-to-the-woocommerce-checkout-page/#respond Tue, 10 Feb 2026 23:18:38 +0000 https://webdenj.ir/?p=7939 اگر صاحب یک فروشگاه اینترنتی با ووکامرس هستید، بدون شک می‌دانید که صفحه تسویه حساب مهم‌ترین نقطه تماس کاربر با کسب‌وکار شماست. در این مرحله اطلاعات حیاتی مشتری ثبت می‌شود و هر داده‌ای که در این بخش دریافت می‌کنید می‌تواند در مدیریت سفارش‌ها، بازاریابی و حتی مسائل حقوقی به شما کمک کند.

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

چرا افزودن فیلد کد ملی در ووکامرس اهمیت دارد؟

کد ملی یک شناسه یکتای ۱۰ رقمی برای هر فرد ایرانی است. داشتن این داده در فروشگاه اینترنتی می‌تواند تحولی جدی در مدیریت سفارش‌ها ایجاد کند.

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

    • مدیریت دقیق سفارش‌ها: شما می‌توانید سفارش‌های یک فرد را تنها با جستجوی کد ملی در پنل مدیریت پیدا کنید.
    • جلوگیری از ثبت سفارش‌های تکراری یا سوءاستفاده: با اعتبارسنجی الگوریتمی، از ورود کدهای جعلی جلوگیری می‌شود.
    • گزارش‌گیری حرفه‌ای: در خروجی اکسل یا سیستم‌های حسابداری، وجود کد ملی باعث یکپارچگی اطلاعات می‌شود.
    • دسته‌بندی مشتریان: امکان ایجاد کمپین‌های تخفیفی برای مشتریان خاص یا VIP فراهم می‌شود.
    • استفاده در فاکتور رسمی: در بسیاری از فروشگاه‌ها برای صدور فاکتور رسمی، دریافت کد ملی ضروری است.

ساختار و الگوریتم کد ملی ایرانی

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

ویژگی‌های اصلی کد ملی معتبر:

      • طول دقیق آن باید ۱۰ رقم باشد.
      • فقط شامل اعداد ۰ تا ۹ باشد.
      • کدهای تکراری مانند 1111111111 یا 0000000000 معتبر نیستند.
      • رقم دهم به عنوان چک‌دیجیت طبق الگوریتم مشخصی محاسبه می‌شود.

در این آموزش، تمام این موارد در کد لحاظ شده است تا هیچ کد ملی جعلی در دیتابیس شما ذخیره نشود.

کد کامل افزودن فیلد کد ملی به ووکامرس

<?php
// تابع بررسی صحت کد ملی (اصلاح شده)
function check_national_code($code) {
    // بررسی طول و فقط اعداد
    if (!preg_match('/^[0-9]{10}$/', $code)) {
        return false;
    }
    
    // بررسی کدهای تکراری (0000000000 تا 9999999999)
    for ($i = 0; $i < 10; $i++) {
        if (preg_match('/^' . $i . '{10}$/', $code)) {
            return false;
        }
    }
    
    // الگوریتم محاسبه چک دیجیت
    $sum = 0;
    for ($i = 0; $i < 9; $i++) {
        $sum += (10 - $i) * intval(substr($code, $i, 1));
    }
    
    $ret = $sum % 11;
    $parity = intval(substr($code, 9, 1));
    
    if (($ret < 2 && $ret == $parity) || ($ret >= 2 && $ret == 11 - $parity)) {
        return true;
    }
    
    return false;
}

// اضافه کردن فیلد کد ملی به صفحه پرداخت
function add_custom_national_code_field() {
    ?>
    <div class="form-row form-row-wide woocommerce-additional-fields__field-wrapper">
        <label for="billing_national_code"><?php _e('کد ملی', 'woocommerce'); ?> <span class="required">*</span></label>
        <span class="woocommerce-input-wrapper">
            <input type="text" 
                   class="input-text" 
                   name="billing_national_code" 
                   id="billing_national_code" 
                   value="<?php echo esc_attr(wp_unslash($_POST['billing_national_code'] ?? '')); ?>"
                   maxlength="10"
                   pattern="[0-9]{10}"
                   placeholder="1234567890"
                   autocomplete="off" />
        </span>
    </div>
    <?php
}
add_action('woocommerce_after_checkout_billing_form', 'add_custom_national_code_field');

// اعتبارسنجی فیلد
function validate_custom_national_code_field() {
    $code = isset($_POST['billing_national_code']) ? sanitize_text_field(wp_unslash($_POST['billing_national_code'])) : '';
    
    if (empty($code)) {
        wc_add_notice(__('لطفاً کد ملی خود را وارد کنید.', 'woocommerce'), 'error');
        return;
    }
    
    if (!check_national_code($code)) {
        wc_add_notice(__('کد ملی وارد شده معتبر نیست.', 'woocommerce'), 'error');
    }
}
add_action('woocommerce_checkout_process', 'validate_custom_national_code_field');

// ذخیره کد ملی در سفارش
function save_custom_national_code_field($order_id) {
    if (!empty($_POST['billing_national_code'])) {
        $code = sanitize_text_field(wp_unslash($_POST['billing_national_code']));
        if (check_national_code($code)) {
            update_post_meta($order_id, '_billing_national_code', $code);
        }
    }
}
add_action('woocommerce_checkout_update_order_meta', 'save_custom_national_code_field');

// نمایش در پنل مدیریت (اصلاح شده)
function display_admin_order_national_code($order) {
    $national_code = get_post_meta($order->get_id(), '_billing_national_code', true);
    if ($national_code) {
        echo '<p><strong>' . __('کد ملی', 'woocommerce') . ':</strong> ' . esc_html($national_code) . '</p>';
    }
}
add_action('woocommerce_admin_order_data_after_billing_address', 'display_admin_order_national_code', 10, 1);

// نمایش در ایمیل‌ها و My Account
function display_national_code_in_order($order) {
    $national_code = get_post_meta($order->get_id(), '_billing_national_code', true);
    if ($national_code) {
        echo '<p><strong>کد ملی:</strong> ' . esc_html($national_code) . '</p>';
    }
}
add_action('woocommerce_order_details_after_order_table', 'display_national_code_in_order');
?>

 

نحوه نصب کد در وردپرس

برای اضافه کردن این قابلیت به سایت خود دو روش استاندارد دارید.

روش اول: افزودن به فایل functions.php

وارد پیشخوان وردپرس شوید، از بخش نمایش وارد ویرایشگر پوسته شوید و فایل functions.php قالب فرزند را باز کنید. کد بالا را در انتهای فایل قرار دهید و ذخیره کنید. استفاده از قالب چایلد توصیه می‌شود تا در بروزرسانی قالب، تغییرات شما حذف نشود.

روش دوم: ساخت افزونه اختصاصی

یک پوشه جدید در مسیر wp-content/plugins ایجاد کنید. یک فایل PHP داخل آن قرار دهید و کد بالا را در آن قرار دهید. سپس افزونه را از پنل وردپرس فعال کنید. این روش حرفه‌ای‌تر است و وابسته به قالب نخواهد بود.

نمایش کد ملی در پنل مدیریت و سفارش‌ها

پس از ثبت سفارش، کد ملی در متای سفارش ذخیره می‌شود. شما می‌توانید آن را در بخش جزئیات سفارش، زیر اطلاعات صورتحساب مشاهده کنید. همچنین امکان توسعه کد برای نمایش در ایمیل‌ها، پنل کاربری مشتری و حتی فاکتورهای PDF وجود دارد.

نکات امنیتی مهم در ذخیره کد ملی

در این پیاده‌سازی از توابع sanitize_text_field برای پاکسازی ورودی و ساختار استاندارد هوک‌های ووکامرس استفاده شده است. این موضوع از حملات XSS جلوگیری می‌کند و باعث می‌شود اطلاعات به شکل ایمن در دیتابیس ذخیره شوند.

همچنین اعتبارسنجی الگوریتمی باعث می‌شود هیچ داده اشتباهی وارد سیستم نشود و دیتابیس شما تمیز و قابل اعتماد باقی بماند.

مشکلات رایج و راه‌حل‌ها

اگر فیلد نمایش داده نمی‌شود، ابتدا کش سایت و افزونه‌های کش را پاک کنید. در صورتی که خطای PHP دریافت کردید، مطمئن شوید کد را به درستی داخل تگ php قرار داده‌اید. اگر مقدار ذخیره نمی‌شود، بررسی کنید که هوک woocommerce_checkout_update_order_meta به درستی اجرا شود.

آیا این کد با بروزرسانی ووکامرس سازگار است؟

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

جمع‌بندی نهایی

افزودن فیلد کد ملی به صفحه تسویه حساب ووکامرس یک قابلیت حرفه‌ای و ضروری برای فروشگاه‌های ایرانی است. با استفاده از کدی که در این مقاله از وب دنج ارائه شد، شما می‌توانید یک سیستم کامل، امن و استاندارد برای دریافت و اعتبارسنجی کد ملی پیاده‌سازی کنید.

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

]]>
https://webdenj.ir/adding-the-country-code-field-to-the-woocommerce-checkout-page/feed/ 0