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

#1 2016-01-18 16:23:19

ehsan_faal
عضو
از : تهران
ثبت شده: 2015-10-02
ارسال ها: 270

wget- هرآنچه که یک تازه کار باید بداند.

تمام دستوراتی که از Wget  باید بدانید:

چگونه تمام یک وبسایت را برای مشاهده آفلاین دانلود کنم؟
چگونه تمام فایلهای mp3 را از یک وب سایت در پوشهای خاص از کامپیوترم ذخیره کنم؟
چگونه فایلهایی را که پشت یک فرم لاگین هستند ، دانلود کنم؟
چگونه یک گوگل کوچک برای خودم داشته باشم؟
    Wget ابزاری رایگان، قابل استفاده در مک، ویندوز و لینوکس(به صورت پیشفرض) است که میتواند تمامیِ این خواسته ها را تحقق بخشد. آنچه wget را از سایر مدیر دانلودها متمایز میکند این است که wget میتواند لینکهای HTML موجود در یک صفحه را دنبال کند تا تمام فایلها را به صورت بازگشتی دانلود کند.
    این همان ابزاری است که یک سرباز میبایست برای دانلود هزاران سند محرمانه از اینترنت ارتش آمریکا  که بعدها به بیرون درز میکند، استفاده کند lol

     aUnwZlg.png

Spider Websites با Wget – بیست مثال کاربردی:(برای درک مفهوم Spider به man-page ابزار wget مراجعه کنید)
    wget فوق العاده قدرتمند است اما مثل بیشتر ابزارهای محیط متنی، ازدیاد تنظیماتی که Wget  از آنها پشتیبانی میکند میتواند باعث ترس کاربران تازه وارد شود، بنابراین آنچه که در این مقاله ارائه میشود کلکسیونی از دستورات wget به منظور به انجام رسانیدن امور متداولی از دانلود یک فایل گرفته تا ذخیره کل یک وبسایت میباشد. مسلما مطالعه راهنمای wget سودمندتر خواهد بود اما برای افراد پر مشغله این دستورات آماده اجرا هستند.
۱- دانلود یک فایل از اینترنت:

wget http://example.com/file.iso

۲-دانلود یک فایل و ذخیره آن با نامی متفاوت:

 wget ‐‐output-document=filename.html example.com

۳-دانلود یک فایل و ذخیره آن در یک پوشه مخصوص:

 wget ‐‐directory-prefix=folder/subfolder example.com

۴-ادامه ی یک دانلود قطع شده که قبلا با خود wget  شروع شده بود:

 wget ‐‐continue example.com/big.file.iso

۵-دانلود یک فایل تنها به شرطی که ورژن روی سرور جدیدتر از ورژنی باشد که شما دارید:

 wget ‐‐continue ‐‐timestamping wordpress.org/latest.zip

۶-دانلود چندین لینک با wget. فقط کافیست لینکها را در یک فایل نوشتاری در خطوط جداگانه ذخیره کنید و آن را به  wget پاس دهید:

 wget ‐‐input list-of-file-urls.txt

۷-دانلود لیستی از فایلهایی که به ترتیب شماره گذاری شده اند:

wget http://example.com/images/{1..20}.jpg

۸-دانلود یک Webpage با همه ی ملحقات آن – چیزهایی مثل  Stylesheet  و تصاویر که برای نمایش مناسب Webpage به طور Offline به آنها نیاز داریم:

wget --page-requisites --span-hosts --convert-links --adjust-extension http://example.com/dir/file

Mirror کردن وبسایت ها با  Wget:

۹-دانلود کل یک وبسایت شامل تمام لینک ها و فایل ها:

wget --execute robots=off --recursive --no-parent --continue --no-clobber http://example.com/

۱۰-دانلود تمام فایل های mp3 از یک زیر پوشه:

wget --level=1 --recursive --no-parent --accept mp3,MP3 http://example.com/mp3/

۱۱-دانلود تمام تصاویر یک وبسایت در یک پوشه مشترک:

wget --directory-prefix=files/pictures --no-directories --recursive --no-clobber --accept jpg,gif,png,jpeg http://example.come/images/

۱۲-دانلود تمام اسناد PDF از یک وبسایت به صورت بازگشتی ولی در همان Domain (منظور این است که از Domain اصلی خارج نشود)

wget --mirror --domains=abc.com,files.abc.com,ocs.abc.com --accept=pdf http://abc.com/

۱۳-دانلود تمام فایلهای یک وبسایت به جز چند پوشه ی خاص:

wget --recursive --no-clobber --no-parent --exclude-directories /forums,/support http://example.com

Wget برای دانلود محتوای محصور شده:
    wget میتواند برای دانلود محتواهایی از سایت ها که در پس یک فرم ورود قرار دارند یا حتی سایتهایی که به منظور جلوگیری از ورود روباتها، ارجاع دهنده ی HTTP را چک میکنند، نیز به کار گرفته شود:

۱۴-دانلود از وبسایتهایی که User Agent و ارجاع دهنده ی HTTP را چک میکنند:

wget --refer=http://google.com --user-agent=”Mozilla/5.0 Firefoz/4.0.1” http://nytimes.com

۱۵-دانلود از سایتهایی که نیاز به پسورد دارند:

wget --http-user=labnol --http-password=hello123 http:/example.com/secret/file.zip

۱۶-Fetch کردن صفحات پشت یک صفحه ورود. دقت داشته باشید که بایستی username  و password ای را که در فرم ورود وارد میکردید در این قسمت نیز اعمال کنید:

wget --cookies=on --save-cookies cookies.txt --keep-session-cookies --post-data 'user=labnol&password=123' http://example.com/login.php
wget --cookies=on --load-cookies cookies.txt --keep-session-cookies http://example.com/paywall

دریافت اطلاعات فایل با Wget :

۱۷-نمایش سایز فایل بدون نیاز به دانلود کردن آن ( در خروجی به دنبال Length بگردید، سایز بر حسب بایت نمایش داده شده است)

wget --spider --server-response http://example.com/file.iso

اسکریپتی نیز برای راحت تر کردن این عمل در زیر آورده شده است:

#!/bin/bash
    #In this case instead of using PIPESTATUS Array for checking previous command exit code,I try this method:
    PC=$(wget --spider "$1" 2>&1)
    if [ $? -ne 0 ];then
    	echo -e "\033[1m The Interested File Doesn't Exist.\033[0m"
    	exit 1
    else 
    	awk '/^Length/ {L=$3;gsub(/\(|\)/,"",L);print "Size: ",L}' <<< "$PC"
    	exit 0
    fi

۱۸- دانلود یک فایل و نمایش محتویات آن در stdout بدون ذخیره آن:

wget --output-document - --quite google.com/humans.txt

۱۹- فهمیدن زمان آخرین تغییرات یک صفحه( تگ مربوط به HTTP header چک شود):

wget --server-response --spider http://www.labnol.org/

۲۰- لینکهای روی وب سایتتان را چک کنید تا مطمئن شوید آنها به درستی کار میکنند.استفاده از Spider سبب میشود که صفحه را ذخیره نکنید:

wget --output-file=logfile.txt --recursive --spider http://example.com

Wget – چگونه با سرور مهربان تر باشیمlol
    wget  ذاتاً یک عنکبوتی است که همه ی مجراهای یک وبسایت را میمکد ولی بعضی از هاست ها ممکن است با فایلی به نام  robots.txt سد راه این عنکبوت شوند. هم چنین wget قابلیت دنبال کردن لینکهایی که ویژگی rel=nofollow دارند را ندارد.
اما شما میتوانید wget را  با اضافه کردن

--execute robots=off

به همه دستوراتتان مجبور به نادیده گرفتن robots.txt و لینک های غیر قابل ردگیری کنید.
اگر یک وب هاست مانع از دسترسی wget با استفاده از بررسی رشته مربوط به User Agent شود شما به راحتی میتوانید آن رشته را با :

--user-agent=Mozilla

جعل کنید.
    دستور wget فشار زیادی را به سرور سایت وارد میکند چرا که مدام از لینک ها عبور کرده و فایل دانلود میکند. یک Scarper (شاید بد نباشه مکنده ترجمه اش کنیم lol ) خوب نرخ عبور از لینک ها را محدود میکند و همچنین بین درخواست های Fetch متوالی ای که برای سایت میفرستد یک وقفه ی زمانی قرار میدهد تا کمی از بار سرور بکاهد.(مطمئن نیستم این قسمتش به دردِ اینترنت ایران هم بخوره)

wget --limit-rate=20k --wait=60 --random-wait --mirror example.com

در مثال بالا ما نرخ پهنای باند دانلود را به 20K محدود کردهایم و wget  هر کجا که باشد بین ۳۰ تا ۹۰ ثانیه تا دریافت منبع بعدی صبر میکند.

و البته یه کار باحال دیگه که اینو از جادی یاد گرفتم و خودم هم یه سری دستور awk بهش اضافه کردم، اینه که لیست فایل های قابل دانلود یک وب سایت رو دربیاریم، باحاله نه؟(واسه کسایی که زیاد فیلم دانلود میکنن عالیه)
مثال:

wget --spider -r -l5 --force-html --no-parent  "http://dl2.my98music.com/Data/Serial/Scorpion/S02/" 1>links 2>&1

که محتویات فایل links اینجوریه:

>>>head links 
Spider mode enabled. Check if remote file exists.
--2016-01-17 12:53:18--  http://dl2.my98music.com/Data/Serial/Scorpion/S02/
Resolving dl2.my98music.com (dl2.my98music.com)... 31.207.5.20
Connecting to dl2.my98music.com (dl2.my98music.com)|31.207.5.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4350 (4.2K) [text/html]
Remote file exists and could contain links to other resources -- retrieving.

--2016-01-17 12:53:19--  http://dl2.my98music.com/Data/Serial/Scorpion/S02/
Reusing existing connection to dl2.my98music.com:80.

و حالا کار نهایی اینه که اون لینک هایی که واقعا وجود داره روجدا کنیم(که این توی حیطه وظایف awk میباشد)

>>>awk '/^--/ && /mkv$/{$1="";$2="";gsub(/^ */,"",$0);print $0}' links 
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E01%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E02%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E03%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E04%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E05%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E06%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E07%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E08%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E09%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E10%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E11%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E12%20480p%20%5bFilmia%5d.mkv
http://dl2.my98music.com/Data/Serial/Scorpion/S02/Scorpion%20S02E13%20480p%20%5bFilmia%5d.mkv

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

wget --span-hosts --level=inf --recursive dmoz.org

منبع

آخرین ویرایش توسط ehsan_faal (2016-01-18 17:18:23)


Mahatma Gandhi - The weak can never forgive. Forgiveness is the attribute of the strong

آفلاین

#2 2016-01-18 17:50:43

silver
عضو
از : اصفهان
ثبت شده: 2015-12-03
ارسال ها: 187
وب سایت

پاسخ: wget- هرآنچه که یک تازه کار باید بداند.

ممنون احسان عزیز. کوتاه و عالی smile


بِسْمِ اللَّهِ الرَّحْمَنِ الرَّحِيمِ (1).اقُلْ هُوَ اللَّهُ أَحَدٌ(2). اللَّهُ الصَّمَدُ (3).لمْ يَلِدْ وَلَمْ يُولَدْ(4). وَلَمْ يَكُن لَّهُ كُفُوًا أَحَدٌ(5)
http://lidora.blog.ir
علیرضا پژوهش

آفلاین

#3 2016-01-18 18:42:17

بهروز رمضانی
عضو
از : اصفهان
ثبت شده: 2015-09-16
ارسال ها: 189
وب سایت

پاسخ: wget- هرآنچه که یک تازه کار باید بداند.

بسیار عالی و کاربردی بود.


در یادگیری و استفاده از خط فرمان کوشا باشید چرا که رستگاری شما در آن است.

آفلاین

#4 2016-01-19 07:18:35

حسین حیدری
عضو
از : اصفهان
ثبت شده: 2015-09-16
ارسال ها: 367
وب سایت

پاسخ: wget- هرآنچه که یک تازه کار باید بداند.

آقا خسته نباشی عالی بود smile
بذارش توی ویکی smile


وبسایت شخصی من: http://hosseinws.ir

آفلاین

#5 2016-03-28 13:49:47

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 729
وب سایت

پاسخ: wget- هرآنچه که یک تازه کار باید بداند.

احسان جان عالی بود..فقط یه سوال..اگه بخوایم دانلودهامونو از پروکسی رد بدیم باید چکار کنیم؟


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آنلاین

#6 2016-03-28 15:16:38

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 729
وب سایت

پاسخ: wget- هرآنچه که یک تازه کار باید بداند.

stackoverflow نوشته است که:

احسان جان عالی بود..فقط یه سوال..اگه بخوایم دانلودهامونو از پروکسی رد بدیم باید چکار کنیم؟

جواب رو پیدا کردم.
اینجاست


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آنلاین

#7 2016-10-20 22:25:57

LinArcX
عضو
ثبت شده: 2015-09-18
ارسال ها: 729
وب سایت

پاسخ: wget- هرآنچه که یک تازه کار باید بداند.

احسان جان یه سوال فنی.
واسه دانلود فایلی که پشت یه لاگین پیجی خوابیده و به صورت مستقیم بهش دسترسی نداری باید چکار کنی؟
مثلا رفتی یه سایتی که واسه دانلود فایل هاش پول میخواد ازت.چجوری باید دورش بزنی؟اصلا میشه با wget اینکارو کرد یا باید از ابزارهای دیگه استفاده کرد؟

آخرین ویرایش توسط LinArcX (2016-10-20 22:26:26)


"Enough!!!Don't Use "DEFAULTS" Any More..."make it simple stupid

آنلاین

پانوشت انجمن

پشتیبانی توسط تیم آرچ لینوکس ایران و نیرو گرفته با FluxBB