انجمن تیم امنیتی ایران سایبر

Programming آموزش کامل ماژول Requests در پایتون | Requests Module In Python

شروع موضوع توسط JOK3R ‏1/12/17 در انجمن Python

  1. لطفا فایل های خود را جهت ماندگاری در انجمن اپلود کنید در صورت مشاهده لینک اپلود خروجی , تاپیک حذف خواهد شد .
    بستن اطلاعیه
بستن اطلاعیه


درود مهمان گرامي؛

مهمان گرامي، براي مشاهده تالار با امکانات کامل ميبايست از طريق ايــن ليـــنک ثبت نام کنيد .

شرکت امنیتی ایران سایبر - برگزار کننده دوره های آموزشی و مسابقات فتح پرچم (CTF)
  1. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    به نام خداوند مهربان
    requests-sidebar.png
    با عرض سلام و ادب خدمت کاربران عزیز امروز قصد دارم کار با ماژول Requests رو به شما یاد بدم :kolah
    میشه گفت ماژول مهمی است و تا جایی که دیدم آموزشی برای این ماژول در سایت های ایرانی قرار داده نشده [ مطمئن نیستم !]

    قبل از آموزش بیاید کمی با ماژول Requests آشنا شویم Requests یک کتابخانه HTTP مجاز ISC هست که برای زبان پایتون نوشته شده

    در پایتون به صورت پیش فرض از ماژول urllib برای ارسال درخواست و دریافت HTTP استفاده میشه که در ادامه میپردازیم به قابلیت هایی که ماژول Requests رو متمایز میکنه نسبت به ماژول urllib

    ماژول requests یکپارچگی کاملی با وبسایت ایجاد میکنه و نیازی نیست که post data خود را Encode کنید و یا query strings خود را به صورت دستی وارد کنید زیرا ماژول Requests اینکار ها رو 100% به صورت خودکار انجام میده

    چه کسانی از ماژول Requests استفاده میکنند ؟
    Native Instruments
    The Washington Post
    Twitter
    Readability
    Federal US Institutions
    و جالب است بدانید که ماژول requests بیشتر از 100,000 بار از PyPI نصب شده است!

    ویژگی های ماژول requests :
    • ماندگاری درخواست های شما به مدت زیاد
    • فشرده سازی به صورت خودکار
    • پشتیبانی از .netrc
    • ایجاد session با مقاومت زیاد به همراه Cookie
    • SSL Verification
    • Basic/Digest Authentication
    • Elegant Key/Value Cookies
    • Unicode Response Bodies
    • Multipart File Uploads
    • Connection Timeouts
    در ادامه میپردازیم به نصب ماژول requests و کار کردن باهاش رو شروع میکنیم با ما همراه باشید53.gif


     
    Und3rgr0und، Crackings، Mr_Security و 15 نفر دیگر از این ارسال تشکر کرده اند.
  2. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    به نام خداوند بخشنده مهربان

    با ادامه آموزش ماژول Requests در خدمت شما دوستان عزیز هستیم. در این قسمت با نصب این ماژول روی انواع سیستم عامل ها آشنا میشوید و سپس شروع میکنیم با کار کردن با این ماژول ! :kolah

    برای نصب ماژول Requests در Ubuntu & Debian به صورت زیر عمل میکنیم :

    HTML:
    apt-get install python-requests
    در Fedora & RedHat هم به صورت زیر عمل میکنیم :

    HTML:
    yum install python-requests
    در Windows هم ابتدا pip را نصب کرده و دستور زیر را وارد کنید :

    HTML:
    pip install requests
    برای نمایش این قسمت باید وارد سیستم شوید یا اینکه ثبت نام نمایید

    برای دانلود pip از لینک زیر استفاده کنید :
    HTML:
    https://bootstrap.pypa.io/get-pip.py
    برای نصب هم کافیه دستور زیر رو بزنید:
    HTML:
    python get-pip.py
    و در ادامه شروع میکنیم کار کردن با ماژول Requests با ما همراه باشید :kolah53.gif

     
    Crackings، Mr_Security، MOHAMAD-NOFOZI و 11 نفر دیگر از این ارسال تشکر کرده اند.
  3. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    با ادامه آموزش ماژول requests در خدمت شما دوستان هستیم سعی میکنم کاملا آسون مطالب رو برسونم که دوستانی که تازه شروع کردن به مشکلی بر نخورند !:kolah
    نکته : من از python 2.7 استفاده میکنم.!
    نکته شماره 2 : HTTP یک protocol برای ارتباط میان Client و Server هست و به صورت Request و Response عمل می‌کند و ما قراره در این آموزش از متد های Post و Get در Http استفاده کنیم. متد get برای درخواست اطلاعات از یک منبع می‌باشد و متد post یکسری اطلاعات را ثبت کرده و به یک منبع ارسال می‌کند تا پردازش شوند. ارسال اطلاعات از متد get به server با استفاده از URL صورت‌ می‌گیرد.

    بیایید اولین Request خود را ارسال کنیم تا بیشتر با ماژول requests آشنا شویم برای ارسال یک request از نوع متد get به روش زیر عمل میکنیم :
    PHP:
    import requests

    baz_kardan 
    requests.get('http://httpbin.org/'timeout=5)

    print 
    baz_kardan.cookies
    print baz_kardan.status_code
    print baz_kardan.headers
    print baz_kardan.url
    print baz_kardan.text
    print baz_kardan.content

    result.PNG

    همان طور که مشاهده میکنید توانستیم به راحتی یک درخواست از نوع متد GET ارسال کنیم بزارید تا کد بالا را برای شما مختصر توضیح دهم

    در خط اول ما ماژول Requests را فراخوانی کردیم تا از آن استفاده کنیم
    در خط بعد متغییری ساختم به نام baz_kardan و در آن مقدار requests.get(url, timeout=5) را قرار دادم
    در خط بعد گفتم که برایم مقادیری که از ارسال این درخواست برگشته را برایم چاپ کند


    • timeout = مقدار زمانی که شما منتظر می مانید تا جواب درخواست برای شما بیاید
    • baz_kardan.cookies : به شما کوکی استفاده شده را نمایش می دهد!
    • baz_kardan.status_code : به شما کد وضعیت صفحه را نمایش میدهد !
    • baz_kardan.headers : به شما برخی اطلاعات موجود در هدر را نمایش میدهد!
    • baz_kardan.url : به شما ادرسی که این درخواست به آن فرستاده شده است را نمایش میدهد !
    • baz_kardan.text : به شما کل محتوای صفحه را نمایش میدهد!
    • baz_kardan.content : به شما محتوای صفحه را نمایش میدهد مانند .text عمل میکند !
    برای نمایش این قسمت باید وارد سیستم شوید یا اینکه ثبت نام نمایید
    ادامه دارد !
     
    Crackings، Mr_Security، MOHAMAD-NOFOZI و 14 نفر دیگر از این ارسال تشکر کرده اند.
  4. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    به نام خداوند بخشنده مهربان


    درود با ادامه آموزش ماژول requests در خدمت شما دوستان عزیز هستیم در جلسه قبل با کاربرد متد GET آشنا شدیم و در این جلسه قصد داریم با متد POST آشنا بشیم !

    بزارید یک مثال کاربردی برایتان بزنم :
    ما قراره برنامه ای بسازیم که با وارد کردن نام کاربری و گذرواژه وارد یک سایت که از سیستم مدیریت محتوای وردپرس استفاده میکند بشود و کل محتوای صفحه را در یک فایل html ذخیره کند !
    شما با کاربرد session در این قسمت آشنا خواهید شد. session یک ویژگی مهم ماژول Requests هست
    PHP:
    import requests

    session 
    requests.session()

    headers = {'User-Agent''Mozilla/5.0 (Windows NT 6.1; rv:36.0) Gecko/20100101 Firefox/36.0',
               
    'Accept''*/*'}

    username raw_input('  Enter username $ ')
    password raw_input('  Enter Password $ ')

    login_go 'http://localhost/wordpress/wp-login.php'

    Check_wordpress session.get(login_gotimeout=10)
    cookies dict(Check_wordpress.cookies)
    if 
    'Powered by WordPress' in Check_wordpress.text:

        
    post_data = {'log'str(username),
                     
    'pwd'str(password),
                     
    'wp-submit''Log+In',
                     
    'redirect_to''http://localhost/wordpress/wp-admin/',
                     
    'testcookie''1'}

        
    Get_login session.post(login_godata=post_dataheaders=headerscookies=cookiestimeout=10)


        if 
    '<li id="wp-admin-bar-logout">' in Get_login.text:
            print 
    ' yeah, we login Successfully!'
            
    print cookies
            with open
    ('result.html''a') as x:
                
    x.write(Get_login.text)
        else:
            print 
    'maybe username and password is wrong! try again'
    else:
        print 
    ' wordpress login page Not Found !'


    در اولین خط ما ماژول Requests رو فراخوانی کردیم سپس یک session ایجاد کردیم تا بعد از login شدن اطلاعات پایدار باشند
    در خط بعدی یک Header تعریف کردیم سپس از کاربر خواستیم تا username و password را برای ورود به سایت وارد کند
    سپس یک متغیری با نام login_go ایجاد کردیم تا از آن برای ارسال درخواست استفاده کنیم
    در خط بعدی متغیری برای چک کردن این که آیا سایت مورد نظر Wordpress است یا خیر ایجاد کردیم با نام Check_wordpress و مقدار آن را اینگونه وارد کردیم session.get(login_go, timeout=10) سپس متغیری از نوع dict ( واژه نامه یا دیکشنری)برای دریافت کوکی ایجاد کردیم تا کوکی استفاده شده در آن ذخیره شود
    در خط بعد با یک دستور شرطی گفتیم که : اگر مقدار 'Powered by WordPress' در Check_wordpress.text بود برای ما کار های زیر را انجام بده در غیر این صورت پیام : 'wordpress login page Not Found !' را چاپ کن

    سپس برای ارسال با متد POST یک متغیری با نام post_data ایجاد کردیم تا data خودمان را در آن قرار دهیم ! ( به شما توضیح میدم چطوری data رو از source پیدا کنید )

    value.PNG

    همان طور که مشاهده میکنید ما فقط با name و value ها کار داریم به Video زیر توجه کنید :


    سپس متغیری با نام Get_login ایجاد میکنیم و مقدار session.post(login_go, data=post_data, headers=headers, cookies=cookies, timeout=10) را در آن قرار میدهیم
    در خط بعد میگویم : اگر مقدار '<li id="wp-admin-bar-logout">' در Get_login.text موجود بود کارهای زیر رو انجام بده در غیراینصورت برای ما مقدار 'maybe username and password is wrong! try again' چاپ کن.
    اگر برنامه با موفقیت به مرحله بعد برسد برای ما مقدار ' yeah, we login Successfully!' را نمایش میدهد در غیراینصورت پیام مرحله قبل نمایش داده خواهد شد,
    برای فهم بهتر من مقدار cookie استفاده شده را هم نمایش دادم تا شما بهتر متوجه شوید
    و در مرحله اخر گفتم که یک فایل با نام result.html ایجاد کنه و Get_login.text را در آن قرار دهد !

    شما با یک بار تمرین کاملا مسلط خواهید شد. :kolah
    res.PNG
     
    Crackings، root3r، Mr_Security و 11 نفر دیگر از این ارسال تشکر کرده اند.
  5. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    استفاده از Proxy در ماژول Requests

    Example one

    PHP:
    import requests
    GetSource 
    requests.get('http://google.com'proxies={'http''127.0.0.1:8080'})
    print(
    GetSource.text.encode('utf-8'))

    # ----------------------------------------

    prox = {'http''127.0.0.1:8080',
            
    'https:''127.0.0.1:80'}
    GetSource requests.get('http://google.com'proxies=prox)
    print(
    GetSource.text.encode('utf-8'))

    Example Two
    دریافت لیست پراکسی و ارسال درخواست

    PHP:
    import requests

    with open
    (raw_input('enter list proxy: '), 'r') as xx:
        
    filez xx.read().splitlines()


    for 
    proxy in filez:
        try:
            
    GetSource requests.get('http://google.com'proxies={'http'proxy})
            print 
    proxy '   ' GetSource.status_code
        except Exception
    e:
            print(
    e)
     
    آخرین ویرایش: ‏14/8/18
    Und3rgr0und، arman1386، Crackings و 9 نفر دیگر از این ارسال تشکر کرده اند.
  6. mohammadsaleh40
    کاربرتازه وارد

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏15/7/19
    ارسال ها:
    3
    تشکر شده:
    1
    جنسیت:
    Name:
    محمد صالح
    Main os:
    Windows
    سلام من کتاب خونه رو نصب کردم (تو cmd نوشتم
    pip install requests
    و اینتر رو زدم دانلود شد بعد اومدم این کد شما رو دقیق کپی و تو یه فایلی کپی کردم و اجرا کردم به کلمه "baz_kardan" اولین خط پرینت ارور می ده.
    map.jpg
     
  7. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    سلام و عرض ادب خدمت کاربر گرامی اقا محمد صالح

    شما دارید از پایتون نسخه 3 استفاده میکنید! و این اموزش برای نسخه 2 هست البته هیچ فرقی ندارن فقط یه کوچولو Syntax ها تفاوت داره
    مثلا شما توی نسخه 2 اینطوری استفاد میکنید برای دیدن کوکی ها
    print baz_kardan.cookies
    ولی توی نسخه 3 باید برای تابع print از پرانتز استفاده کنی به این صورت
    print(baz_kardan.cookies)

    موفق و پیروز باشید
     
    Reza.Black، mohammadsaleh40 و Und3rgr0und از این ارسال تشکر کرده اند.
  8. mohammadsaleh40
    کاربرتازه وارد

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏15/7/19
    ارسال ها:
    3
    تشکر شده:
    1
    جنسیت:
    Name:
    محمد صالح
    Main os:
    Windows
    ممنون بابت پاسختون
    کد رو اصلاح کردم حالا به خط اول ارور می ده.
    map.jpg
    من قبلا کد نصب این کتاب خونه رو زدم وقتی دوباره این کد رو می زنم این جوری می شه (تو یه فیلم که داشت از یه کتابخونه دیگه استفاده می کرد کدش رو دیدم که زد یه چیزای دیگه ای ردیف شد ممکنه من pip یا نصب کتاب خونم مشکل داشته باشه؟
    اینم عکس کد و اروری که موقع ران کردن می ده
    map.jpg
     
    Reza.Black از این پست تشکر کرده است.
  9. JOK3R

    وضعیت:
    Offline
    تاریخ عضویت:
    ‏22/10/14
    ارسال ها:
    444
    تشکر شده:
    2,090
    جنسیت:
    محل سکونت:
    dreams
    Name:
    james
    Main os:
    Windows
    سلام مجدد
    CMD را با run as Administrator اجرا کنید و دوباره ماژول requests رو نصب کنید
    اگر خطا گرفتید از Powershell استفاده کنید
     
    Reza.Black و blackops از این پست تشکر کرده اند.
بارگذاری...

کاربرانی که از تاپیک دیدن کرده اند (کل: 7)

  1. anonyanony
  2. DenmarkDCB
  3. Paolany
  4. Rickymitly
  5. IWHH(Mobin)
  6. DawnInAllah
  7. blackops
به انجمن تخصصی امنیت ایران سایبر خوش آمدید . برای مشاهده تمامی تالار ها و امکانات ثبت نام کنید .