Skip to main content

Command Palette

Search for a command to run...

دانلود تمام عکس‌های SimpleDesktop با سه خط در Bash!

Published
2 min read
http://simpledesktops.com/download/?desktop=301

همهٔ آدرس جز عدد ۳۰۱ در انتهایش ثابتند و آن عدد از ۱ یکی‌‌یکی زیاد می‌شود‌. هر کدام از این عکس‌ها پس از درخواست شدنشان به آدرس یکی از عکس‌های روی سرور اشاره می‌کنند‌. خوب دیگر داستان از این هم ساده‌تر می‌شود؟ کافیست که اراده کنیم و با یک حلقهٔ for اعداد را تولید کنیم و جلوی آدرس ثابتمان بنویسیم‌. پس می‌شود این:

#!/usr/bin/bash



for i in {1..5000}

do

echo "http://simpledesktops.com/download/?desktop=$i"

done

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

...

http://simpledesktops.com/download/?desktop=4995

http://simpledesktops.com/download/?desktop=4996

http://simpledesktops.com/download/?desktop=4997

http://simpledesktops.com/download/?desktop=4998

http://simpledesktops.com/download/?desktop=4999

http://simpledesktops.com/download/?desktop=5000

حالا کافیست در اسکریپت به جای echo که هر چه جلویش باشد را در خروجی استاندارد چاپ می‌کند یک wget بنویسیم تا آدرس‌های جلویش را دانلود کند‌. اما نه‌! در اولین اقدام تیرمان خطا رفت‌! در سرور‌های Apache یک فایلی هست به اسم ‎.htaccess و همان‌طور که از نامش معلوم است کارش این است که کنترل کند چه کسی به کجا دسترسی دارد‌. هر نرم‌افزاری هم که به یکی از این سرور‌ها درخواست بدهد موظف است اول خودش را معرفی کند‌. خوب wget که از نامش فساد می‌بارد عموما از طرف چنین سایت‌هایی مسدود می‌شود‌.

این است که باید به wget بگوییم نقابش را به صورت بزند و دوباره اقدام کند‌. اینبار اسکریپتمان این شکلی می‌شود‌:

#!/usr/bin/bash



for i in {100..5000}

do

wget -U "Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2" "http://simpledesktops.com/download/?desktop=$i"

done

و بعله‌! ران می‌کنیم و خیلی خوشکل اقدام به دانلود عکس‌ها می‌کنیم ;-)

پی‌نوشت: در حین جستجو برای نوشتن این اسکریپت کشف کردم که قبلا اسکریپت‌هایی با Python یا PHP هم برای شیره‌کشی از این سایت نوشته شده‌. ولی این اسکریپت از همه‌شان کوتاه‌تر بود و خوب سادگی زیبـــــاست ;-)

پی‌نوشت ۲: دیگر خودتان حواستان باشد که ‎#!‎/‎usr/bin/bash آدرس bash سیستم من است و می‌توانید با یک whereis bash پیدا کنید که مال شما کجاست‌!

پی‌نوشت ۳: ممکنه بعد از دانلود متوجه بشین که فایل‌های دانلودی با یه همچین اسمایی ذخیره می‌شن index.html?desktop=100 اتفاقی که برای من روی سرور آرچ افتاد‌. عجیب بود که اسم فایل درست رو می‌دید ولی خودش از رو این Querystring ساخته شده اسم رو می‌نوشت‌. پس از جستجو کشف کردم که باید آپشن زیر هم به wget اضافه بشه:



--content-disposition

More from this blog

معجون بهشتی Selenium, PhantomJS و Requests برای web scraping

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

Oct 15, 20168 min read

ورژن کنترل اختیاری نیست!

حقیقتش انتظار داشتم این موضوع خیلی وقت پیش حل شده باشد. حتی پیش خودم فکر می‌کردم که ورژن کنترل یک جورهایی جزء غرایض جامعه‌ی نرم‌افزاری است‌، آن هم با درجه‌ی اهمیتی مثل نفس کشیدن. دوستی دارم که حدوداً دو سال پیش روی دیوار فیس‌بوک‌اش از پاک شدن اتفاقی ...

Dec 27, 20154 min read

خوبی‌های جاوا اسکریپت؟

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

Jul 8, 20153 min read

کدنویسی بازی جاوااسکریپت به صورت زنده توسط Mary Rose

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

Oct 8, 20141 min read

برنامه نویسی کرنل لینوکس با راهنمایی The Eudyptula Challenge

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

Oct 1, 20143 min read

وبلاگ شاهین

221 posts