- نصب و مقدمات
- دانلود پایهای و مدیریت خروجی
- ادامه دانلود و فایلهای بزرگ
- دانلود بازگشتی و mirror
- کار با REST APIها با wget
- اسکریپتینگ، retry و backoff
- پراکسی، TLS و گواهینامهها
- نکات عملکردی برای سرورهای ابری و لوکیشنها
- مقایسه wget و curl و ابزارهای دیگر
- امنیت و بهترین شیوهها
- نتیجهگیری
- اطلاعات پلنها و پشتیبانی
- سؤالات متداول
نصب و مقدمات
در بسیاری از توزیعهای لینوکس، wget از پیش نصب شده است. در صورت نیاز به نصب میتوانید از دستورهای زیر استفاده کنید. برای بررسی نسخه نیز از دستور wget --version بهره ببرید.
apt update
apt install -y wget
yum install -y wget
brew install wget
wget --version
دانلود پایهای و مدیریت خروجی
برای دانلود فایل ساده از آدرس مشخص از wget استفاده کنید. میتوانید نام فایل ذخیره شده را تغییر دهید یا خروجی verbose را کاهش دهید.
wget https://example.com/file.tar.gz
wget -O custom-name.tar.gz https://example.com/file.tar.gz
wget -q https://example.com/file.tar.gz
wget -nv https://example.com/file.tar.gz
wget -o /var/log/wget-download.log https://example.com/file.tar.gz
ادامه دانلود و فایلهای بزرگ
برای دانلود فایلهای حجیم یا در صورت قطع و وصل شبکه از گزینه -c برای resume استفاده کنید. همچنین کنترل سرعت و تعداد تلاشها میتواند برای سرورهای اشتراکی مفید باشد.
wget -c https://example.com/large.iso
wget --limit-rate=1m https://example.com/large.iso
wget --tries=10 --timeout=30 --retry-connrefused https://example.com/large.iso
دانلود بازگشتی و mirror
برای دانلود بازگشتی یک مسیر یا ساخت mirror از سایت از گزینههای بازگشتی استفاده کنید. -np جلوگیری از صعود به مسیر والد را انجام میدهد و -k لینکها را برای دسترسی محلی تبدیل میکند.
wget -r -np -k https://example.com/some/path/
wget --mirror -p --convert-links -P ./localdir https://example.com/
کار با REST APIها با wget
اگرچه curl برای کار با APIها انعطافپذیری بیشتری دارد، wget برای تعاملات ساده مانند GET و POST و ارسال هدرها کاربردی است. در ادامه نمونههای متداول آورده شده است.
ارسال هدرها (Headers)
برای اضافه کردن هدرهای دلخواه از گزینه --header استفاده کنید.
wget --header="X-API-Version: 2" --header="Accept: application/json" -O response.json "https://api.example.com/resource?id=10"نمونههای رایج احراز هویت با wget به شکل زیر هستند.
wget --http-user=USERNAME --http-password='PASSWORD' -O resp.json "https://api.example.com/secure"
wget --header="Authorization: Bearer YOUR_TOKEN" -O resp.json "https://api.example.com/protected"
wget --save-cookies cookies.txt --keep-session-cookies --post-data='username=me&password=secret' https://example.com/login
wget --load-cookies cookies.txt -O dashboard.html https://example.com/dashboardارسال JSON و POST
برای ارسال payload JSON میتوانید از --post-data یا --post-file استفاده کنید. برای payloadهای بزرگ توصیه میشود داده را در فایل قرار دهید.
wget --header="Content-Type: application/json" --post-data='{"name":"test","value":42}' -O resp.json "https://api.example.com/items"
echo '{"name":"big","value":123}' > payload.json
wget --header="Content-Type: application/json" --post-file=payload.json -O resp.json "https://api.example.com/items"محدودیتها و جایگزینها
به خاطر داشته باشید که wget برای متدهای HTTP بجز GET و POST محدودیت دارد. برای متدهای PUT، PATCH، DELETE یا فرمهای multipart بهتر است از curl استفاده کنید.
برای دانلود موازی یا تقسیم فایل از ابزارهایی مانند aria2 بهره ببرید.
اسکریپتینگ، retry و backoff
برای تعامل پایدار با APIها و مقابله با محدودیت نرخ، الگوریتم retry با exponential backoff مناسب است. نمونه اسکریپت bash ساده زیر قابل استفاده است.
#!/bin/bash
URL="https://api.example.com/data"
OUT="resp.json"
TOKEN="YOUR_TOKEN"
attempt=0
max=5
sleep_time=1
while [ $attempt -lt $max ]; do
wget --header="Authorization: Bearer $TOKEN" -O "$OUT" "$URL"
code=$?
if [ $code -eq 0 ]; then
echo "Success"
exit 0
fi
attempt=$((attempt+1))
echo "Attempt $attempt failed, sleeping $sleep_time"
sleep $sleep_time
sleep_time=$((sleep_time * 2))
done
exit 1برای زمانبندی منظم دانلودها از cron یا systemd timers استفاده کنید تا روی سرورهای VPS یا ابری در لوکیشنهای مختلف وظایف به صورت خودکار اجرا شوند.
پراکسی، TLS و گواهینامهها
اگر پشت پراکسی قرار دارید، wget از متغیرهای محیطی پشتیبانی میکند. برای کنترل تایید گواهی میتوانید مسیر فایل CA را مشخص کنید.
export http_proxy="http://proxy.example:3128"
export https_proxy="http://proxy.example:3128"گزینههای مربوط به گواهی:
--ca-certificate=/path/to/ca.pem--no-check-certificate(استفاده نکنید مگر در محیطهای تست)
نکات عملکردی برای سرورهای ابری و لوکیشنها
انتخاب لوکیشن مناسب میتواند RTT و پینگ را کاهش دهد. برای کاربردهای حساس مانند ترید، گیمینگ، رندرینگ یا هوش مصنوعی با سرورهای GPU، نزدیک بودن به سرویس مقصد اهمیت دارد — شرکت مورد نظر امکان ارائه خدمات در ۸۵+ لوکیشن را دارد.
- انتخاب لوکیشن: نزدیکترین دیتاسنتر به مقصد را انتخاب کنید تا latency کاهش یابد.
- دانلود مدلهای AI و رندر: از
-cبرای resume و--limit-rateهنگام پردازش سنگین استفاده کنید. - امنیت شبکه: از سرورهای با حفاظت DDoS برای میزبانی فایلهای پرترافیک بهره ببرید.
- CDN و BGP: ترکیب wget برای تست نقطهبهنقطه و CDN برای توزیع نهایی توصیه میشود.
مثال عملی دانلود مدل بزرگ روی سرور GPU:
wget -c https://models.example.com/large-model.tar.gz -O /mnt/nvme/models/large-model.tar.gz --limit-rate=5m --tries=20
مقایسه wget و curl و ابزارهای دیگر
خلاصهای از مزایا و کاربرد هر ابزار:
- wget: مناسب دانلود فایلها، mirror کردن سایت، دانلود بازگشتی؛ ساده و مناسب اسکریپتها.
- curl: انعطافپذیری بالا برای REST APIها، پشتیبانی کامل از متدهای HTTP و multipart.
- aria2: دانلود موازی و چند کانکشن برای شتابدهی دانلود.
- rsync / scp: همگامسازی امن سرور به سرور (SSH/SFTP).
امنیت و بهترین شیوهها
چند توصیه کلیدی برای استفاده امن از wget و مدیریت اسرار:
- نگهداری توکنها: فایلهای حاوی توکن را محدود کنید و از secret manager استفاده کنید.
- TLS: تایید گواهی را فعال نگه دارید و از
--no-check-certificateتنها در تست استفاده کنید. - محدود کردن نرخ: برای جلوگیری از بلاک شدن از headerهای Rate-Limit و الگوریتم backoff استفاده کنید.
- حفاظت شبکه: از سرورهای ضد DDoS و CDN برای میزبانی فایلهای پراستفاده استفاده نمایید.
نتیجهگیری
در پاسخ به پرسش اصلی، wget ابزاری ساده و پایدار برای دانلود فایلها، mirror کردن و تعاملات پایه با REST APIها است. برای نیازهای پیچیدهتر HTTP و تعاملات متنوعتر، curl گزینه بهتری است. در محیطهای ابری، انتخاب لوکیشن مناسب، استفاده از سرورهای دارای حفاظت و کانفیگ شبکه مناسب میتواند تجربه کاری را بهطور چشمگیری بهبود بخشد.
اطلاعات پلنها و پشتیبانی
پلنها در بیش از ۸۵ لوکیشن جهانی در دسترس قرار دارند و برای کاربریهای خاص مانند سرورهای GPU، سرورهای کملاتنسی برای ترید، یا سرورهای مناسب گیم و میزبانی پرترافیک، گزینههای متفاوتی ارائه میشود.
برای مشاهده جزئیات پلنها یا دریافت اطلاعات تکمیلی میتوانید به پنل وب مراجعه کرده یا از طریق پشتیبانی اطلاعات بیشتری دریافت کنید.









