برنامه نویسیپایتون

پیدا کردن فایل Robots.txt با پایتون

پیدا کردن فایل Robots.txt با پایتون

فایل robots.txt عموما در مواردی استفاده میشود که نمی خواهیم صفحاتی از سایت مان توسط موتور های جست و جوگر بررسی و ایندکس شوند. یا ممکن است پیشتر این کار صورت گرفته باشد و اکنون تصمیم گرفتیم که آن صفحات از دسترس کاربران خارج کنیم. در این مقاله نحوه پیدا کردن فایل Robots.txt با پایتون را بررسی میکنیم.

این فایل ها عبارت است از Disallow, Allow, User-agent:

  • Disallow: بیانگر آدرس صفحه ای است که می خواهیم از ربات ها پنهان شود.
  • Allow: آدرس صفحه ای است که می خواهیم در دید ربات ها باشند.(حالت پیشفرض)
  • User-Agent: نشان دهنده نوع ربات

نصب کتابخانه های مورد نیاز

در این ابزار از کتابخانه های requests و sys استفاده شده است که sys به صورت پیشفرض نصب شده است و برای نصب requests میتوانید از دستور زیر استفاده کنید.

در مرحله اول وارد محیط command Prompt میشویم که برای این کار با زدن کلیدهای ترکیبی win + R وارد محیط RUN شده و درون آن با نوشتن CMD پنجره command Prompt اجرا می شود.

سپس دستور زیر را وارد می کنیم:

pip install requests

پس از نصب کتابخانه، برای فراخوانی آن از import استفاده میکنیم.

import sys
import requests

از کتابخانه requests برای ارسال درخواست به سایت و یا سرور استفاده میشود.

نوشتن ابزار پیدا کردن Robots.txt با پایتون

در این مرحله برای نوشتن کدهای اصلی از یک فانکشن (function) برای مدیریت برنامه و نوشتن کدهای خواناتر استفاده میکنیم.

پیدا کردن فایل Robots.txt با پایتون

در خط 4، فانکشنی با اسم robots را تعریف کردیم. سپس بلوک try را برای مدیریت خطاها ایجاد کردیم که کدهای اصلی را درون آن قرار می دهیم.

در مرحله بعد از with برای باز کردن و خواندن فایل متنی استفاده میکنیم و در خط بعد متغییری با نام search درست می کنیم و می گوییم تمام آیتم های فایل متنی را خوانده و از ()split برای تبدیل آیتم های به لیست استفاده می کنیم.

درون متغییر search عبارت txt.1 اسم فایلی است که برای پیدا کردن Robots استفاده می کنیم و از ‘r’ برای خواندن فایل متنی استفاده میشود.

def robots():
    with open('1.txt','r') as f:
        search = f.read().split()

دریافت آدرس سایت هدف

در مرحله بعد کد ها را درون بلوک try قرار میدهیم. برای کاربر پیامی را با محتویات [!] Please Enter Target Address چاپ میکنیم و در مرحله بعد ورودی را دریافت می کنیم. با گذاشتم یک دستور شرطی اعلام می کنیم که اگر در آدرس وارد شده http وجود نداشت، به صورت خودکار آن را قرار دهد.

    try:
        print(" [!] Please Enter Target Site Address \n")
        URL = input("Enter Your Target : ")
        if 'http' not in URL:
            URL = ('http://'+URL)
        else:
            pass

در ادامه از حلقه for برای پیمایش محتویات درون لیست استفاده کردیم. سپس متغییری با نام url تعریف کردیم که بعد از دریافت کلمات کلیدی، اول آدرس هدف را قرار دهد و بعد از آن یک “/” قرار و کلمات درون لیست را بعد از “/” قرار دهد. برای دریافت درخواستی که به سایت زده ایم متغییری به نام reqs تعریف میکنیم.

با استفاده از کتابخانه requests و متد get پاسخ را دریافت میکنیم و با گذاشتن دستور شرطی می گوییم اگر status_code دریافت شده ار reqs برابر بود 200 و 405 به کاربر لینک را به همراه [+] نشان بده وگرنه به همراه [-] نشان بده.

200 نشان دهنده موفقیت آمیز بودن درخواست است. کد 405 نیز نشان می دهد روش درخواست توسط سرور شناخته شده است اما توسط منبع هدف پشتیبانی نمی شود.

        for i in search:
            url = (URL+"/"+i)
            reqs = requests.get(url)
            if reqs.status_code == 200 or reqs.status_code == 405:
                print(" [+] "+ url)
            else:
                print(" [-] "+url)

بلوک try که در آخر تعریف شده است برای خارج شدن از برنامه می باشد.

        try:
            input(" [!] Press Enter... ")
        except:
            print("")
            sys.exit()

در این خط except برای بستن بلوک try می باشد که در اول فانکشن تعریف کرده ایم و در آخر نیز برای اجرای برنامه باید فانکشن ()robots را فراخوانی کنیم.

برای آشنایی با انواع status_codeها می توانید مقاله مهمترین کدهای خطا را از کالی بویز مطالعه کنید.

خیلی ممنون که تا به اینجا همراه بودید.

علی پازکی

علاقه مند به برنامه نویسی ، علم امنیت و همچنین مسائل علمی 😀 همیشه درحال یادگیری♾

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

دکمه بازگشت به بالا