سبد خرید0

هیچ محصولی در سبد خرید نیست.

کتابخانه requests در پایتون

کتابخانه یا همان پکیج ریکوست در زبان برنامه نویسی پایتون ، یکی از محبوب ترین کتاخانه های موجود محسوب می شود . شما با استفاده از این کتاخانه می توانید با درخواست های متعدد و مختلفی که از طریق وب انجام می شوند کار کنید . البته باید بدانیم که قبل از شروع کار با کتابخانه قدرتمند requests باید با یک سری مفاهیم پایه آشنا شویم تا ب استفاده از آنها بتوانیم به درک عمیقی از این پکیج برسیم .

 

درخواست با request  چیست ؟

بیایید با یک مثال ساده شروع کنیم . شما درحال حاضر درحال خواندن این مطلب هستید . یعنی شما با مرورگرخود ، در ابتدا یک درخواست به ادرس یو ار ال این صفحه ارسال کرده اید . سپس سرور سایت ما درخواست شما را دیده و متوجه شده که شما چه چیزی را می خواهید . و بعد بعنوان جواب این صفحه را برای شما برگردانده و شما با این صفحه مواجه شدید . پس چی شد ؟ شما درخواست دادی – سرور خوند منظورتو فهمید و بعد بعنوان جواب صفحه مورد نظرتو لود کرد برات . به همین سادگی.

اموزش requets در پایتون

 

این درخواست ها از طریق url ارسال می شوند. به این معنیه که شما با تنظیم یک یو ار ال و تغییر اون می تونید درخواست هاتون رو عوض کنید. مثلا وقتی من توی مروگرم — (https://owjtech.ir)  رو بزنم . به سرور یک درخواست گت زدم که بهش بگم (حاج سرور لطفا صفحه اصلی اوج تک رو برام بیار ببینم) .

 

 درخواست های post

این درخواست ها یک سری مقادیر رو حمل میکنن که به یه یو ار ال مشخص ارسال میشه ، اما با تفاوت مقادیر نتیجه متفاوتی رو میگیریم . بطور مثال میگم . وقتی ما میریم روی یک لاگین پیج ، عمدتا درخواست های post رو داریم . حالا مقادیر ما یوزرنیم و پسورد ما هستن  . با وارد کردرن یوزرپس های مختلف ما جواب های مختلفی داریم . ما حین پر کردن اون فیلد ها و زدن روی دکمه ورود ، درخواست پست رو ارسال میکنیم . حالا اگر اشتباه باشه لاگین نمیشیم . اگر یوزر پس ما درست باشه مارو میبره داخل همون اکانتی که متعلق بهمونه ، نکته جالب ینجاست که حین این کار ها و نتایج مختلف و ار ال ما عوض نمیشه و این اتفاقات داره سر همون یو ار ال ثابت در میاد !

 

متد های دیگه ای مثل (put / delete /options) داریم که فعلا نیازی نیست من توضیح بدم درموردشون ….

 

خب ، حالا خیالمون از بابت درخواست ها یکم راحت شد ، حالا بریم سراغ این موضوع که حالا کتابخونه ریکوست باهامون چیکار میکنه ، نه یعنی منظورم اینه که ما باهاش چیکار میکنیم .

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

اموزش requests

جواب یا response  در درخواست ها

وقتی ما یه درخواتس میفرستیم سرور به ما جواب میده ، جواب اون شامل یک سری موارد هست که بصورت ساده شامل بادی هدر و ریسپانس کده . بادی و هدر که فعلا حوصلشو ندارم ، اما درمورد response code

ببینید ریسپانس کد ما ، به ما میگه که درخواست ما در جه وضعیتی قرار داره ما با چند دستش اشناتون میکنیم از این لینک مینونید درمورد ریسپانس کد ها بیشتر بخونید

ریسپانس کد های 1xx

رنج ریسپانس 100 تا 199 مربوط به اطلاعات هست و یه سری اطلاعات به ما برمیگردونه

ریسپانس کد های 2xx

کدهای جوابی که بین 200 تا 299 هستن ، نشان از موفقیت آمیز بودن دارند . این رنج از ریسپانس کد همیشه خوشایند محسوب میشن .

 

ریسپانس کد های 3xx

این رنج ریسپانس که بین 300 تا 399 هست ، پیغام های مربوط به ریدایرکشن هارو میده.

ریسپانس کد های 4xx

اغلب کد های خطای توی رنج 400 نشان دهنده خطای های عدم دسترسی هست (که 404 معروف رو میشناسید که میگه اون چیزی که میخوای وجود نداره)

ریسپانس کد های 5xx

این رنج ریسپانس هم در نهایت مربوط به مشکلاتیه که از سمت سرور وجود داره .

اموزش ریکوست پایتون

انواع کاربرد کتابخانه requests  در زبان برنمه نویسی پایتون

 

دریافت اطلاعات بصورت منظم

ما با استفاده از این کتابخونه ، میتونیم بور مثال ، به پایتون بگیم که  ” داداش برو تو فلان سایت ، قیمت فلان محصولات رو برای من در بیار و بریز داخل دیتابیسی که برات ساختم ، بصورت ماهیانه هم اپدیت کن تا بدونیم حدود قیمت های محصولای فلان حوزه چقدره ” . مشخصه که ما نمیتونیم دستی این کارارو بکنیم و با این دقت پیش بریم . اما خب ما برنامه نویسیم و این کارارو به کتابخونه ریکوست و دوسه تا رفیقاش میسپاریم(مثلا bs4 \regex \prettyhtml و …) .

 

استفاده از request  برای امنیت(هکرای خوشگل توجه کنید)

 

کتابخونه requests  تقریبا یکی از حذاب ترین کتابخونه ها برای هکراست . کارای خییییلی زیادی میتونیم باهاش بکنیم .(بعنوان یک متخصص امنیت). چنتاشو مثال میزنم

 

ساخت برنامه کرکر با requests

یادتونه گفتم با متود پست اکثر لاگین ها انجام میشه؟ جالا تصور کن که ما بیایم به پایتون بگیم که “داداش این صفحه لاگین فلان سایته ، اینم یه یوزرنیم صاحب اکانته ، این هم یه لیست 9999999 تایی از پسورد ، برو همرو تست کن ، هرکدوم درست بود بیا بهم بگو “.  بووم ، حس میکنم دارید علاقمند میشید .بریم بعدی

 

ساختن برنامه برای اختلال در سرور

خودتون میدونید که اگر درخواست هایی که به سمت یک سرور میره بیش از توان سرور سنگین باشه و قابلیت پردازششون وجود نباشه ، درنهایت سرور داون میشه و در نتیجه سایت هم بال نمیاد. جالبه که بدونید ما الان با اکتابخونه ریکوست میتونیم یه برنامه نویسیم که همینطوری بطور نامحدود بیاد درخواست ارسال کنه . در نتیجه سرور پشماش میریزه و نمیتونه هندل کنه درخواست هارو ، در نتیجه داون میشه .

 

ساخت انواع اکسپلویت

البته ببینید ، اون بالایی ها هم یجورایی اکسپلویت محسوب میشن ، ولی خب درکل میتونیم کارای دیگه ای هم بکنیم با درخواست ها ، مثل بهره برداری از باگ هایی نظیر (sql injection | xss |lfi | rfi)

اموزش ریکوست python

کار کردن با api

یکی از کارای خیلی جذابی که میتونیم با این کتایخونه انجام بدیم ، همین استفاده از api هست . ما صرفا درخواستمون رو به سمت api میفرستیم و در فرمت هایی که خود کتابخونه پشتیبانی میکنه ، مثل json میتونیم اطلاعاتو بگیریم. خیلی تمیز و ساده .

 

استفاده برای خودکار کردن یا  همون اتوماسیون

مثال میزنم ، مثلا شما میخوای هرروز بره و یه چیزی رو اپدیت کنه  ، مثلا هر روز بره بنویسه الان در چه تاریخی هستیم . یا مثلا بفرستیمش بطور خودکار توی واتس اپ یه سری پیامو برای لیست شماره ما ارسال کنه ، البته برای این کار کتابخونه ی سلنیوم رو هم داریم که شدیدا حرفه ایه و ساختار ترکیبی داره.

کار کردن با  پایتونapi

روش استفاده از کتابخانه requests

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

pip install rquests

اگر نشد این یکی رو بزنید

python -m pip install requests
اگر باز هم موفق نشدید کامنت بذارید تا بهتون کمک کنیم.

 

خب بعد از نصب کتابخونه شما دیگه فقط باید کد بزنید و لذت ببرید .

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

بسیار خب برای فراخوانی این کد رو میزنید

import requests

مثلا اینطوری هم میتونید

import requests as rq

وقتی که از  as  استفاده می کنیم شما دارید میگید که ریکوستز رو با اسم فلان برام بخون … فرق زیادی نداره و برای راحتی خودتونه

 

خب حالا میخوایم یه کد ساده بزنیم که با استفاده از اون بتونیم ، یه صفحه وب رو لود کنیم و سورس اون رو هم ببینیم .

اول از همه یه متغیر تعریف میکنیم و درخواستمون رو داخل اون متغیر تعریف میکنیم (بدون متغیر هم میتونیم ، منتها ما نیاز داریم که بتونیم به درخواستمون و تمامچیز هایی که به ون مربوه دسترسی داشته باشیم …)

درخواست زدن با پایتون

برای این کار بطور مثال اینطوری پیش میریم .

import requests as rq

myrequest = rq.get(“owjtech.ir”)

خب تا اینجا فراخوانی کردیم و یه درخواست به سایت اوج تک زدیم. حالا میخوایم ببینیم که درخواستمون موفق بوده یانه . کافیه بزنیم :

print(myrequest.ststus_code)

حالا پایتون واسه ی شما یه عدد برمیگردونه که اون عدد نشون میده درخواست شما چطور بوده داستانش ، مثلا الان به من 200 داد ، یعنی که اوکیه و درخواست موفق بوده ،الان ما بریم ببینیم نوع محتوا و رمزنگاری محتوا رو ببینیم تا بتونیم نسبت به اون اقدام کنیم و محتوا رو بخونیم ، برای این کار :

print(myrequest.encoding)
print(myrequest.headers[‘content-type’])

چیزی که به من برگردوند اینا بودن :

UTF-8
text/html; charset=UTF-8

نوع محتوای html و رمزنگاری utf8 این یعنی تقریبا ساده ترین حالت

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

print(myrequest.content)
اینطوری میتونیم محتوای داخل صفحه رو داشته باشیم ، واضحه که میتونیم به جای این که پرینتش کنیم بریزیمش توی یه متغیر و بعد داخلش دنبال چیزی که میخوایم(مثلا قیمت محصول) بگردیم.

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

 

 

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

نشانی ایمیل شما منتشر نخواهد شد.