recent
أخبار ساخنة

مكتبة urllib و التعامل معها الجزء الأول في بايثون Python الدرس |24|

الصفحة الرئيسية
urllib library python

مكتبة urllib للتعامل مع الويب في بايثون

مكتبة urllib هي مكتبة تمكننا في التعامل مع الويب, سوف نتكلم اليوم عن المكتبات التي تُستخدم للتعامل مع الويب التي نستفيد منها في إختبار الإختراق penetration testing.

توجد الكثير من المكتبات التي نتعامل بها مع الويب لكن سوف نشرح اشهرها في عدة دروس قادمة, و أشهر هذه المكتبات هي :

  1. مكتبة urllib.
  2. مكتبة requests.
  3. مكتبة selenium.
  4. مكتبة BeautifulSoup أو bs4.

لكن بدرسنا هذا سوف نتكلم عن اول هذه المكتبات و هي urllib سوف نقسم هذه المكتبة على اكثر من درس للأستيعاب اكثر.

 

ما هي مكتبة urllib Library

يقصد بهذا مثلاً نتكلم مع الطلبات الذي نتعامل بها مع الويب مثل get request, مثل طلب معلومات من موقع معيّن website او اي شي خاص داخل الويب.

>>> import urllib.request
>>> url = "https://www.programmer-tech.com"
>>> request = urllib.request.urlopen(url)
>>> request.read()[0:40]
b">!DOCTYPE html>\n<html class='v2' dir='rt"
>>> request = urllib.request.urlopen(url)
>>> request.read()[0:100]
b"<!DOCTYPE html>\n<html class='v2' dir='rtl' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www."
>>> request = urllib.request.urlopen(url)
>>> len(request.read())
254513

في البداية استدعينا المكتبة المطلوبة request و ثم استدعينا رابط موقعنا عبر url و قرأنا من السورس كود من 0 حتى 40 من الاندكس و بعده قرأنا من 0 حتى 100 و من ثم قرأنا اللينس len الخاص بسورس الموقع.

 

إرجاع الأخطاء urllib.error في بايثون

نستخدم هذا في exception ونستخدمه في حال كتابتنا لكود ضخم إذا انوجد به أي خطأ يتم ارجاعه لنا بطريقة سهله و معرفة مكان الخطاً.

ويوجد نوعين من الاخطاء error و هي URLEerror و HTTPError لذلك نستدعي مكتبة urllib.error.

و الفرق بين النوعين هو في URLEerror هو اخطاء الذي تظهر مثل 403 و 404 و غيرها, أما HTTPError في حال كتبنا نحن الرابط بشكل خاطئ او غير موجود ينبهنا بهذا.

import urllib.request
import urllib.error
try:
   url = "https://www.yahoo.com/"
   response = urllib.request.urlopen(url)
   print(response.read(100))
except urllib.error.URLError as e:
   print(e)
except urllib.error.HTTPError as e:
   print(e.code)
   print(e.url)
   print(e.reasone)

في البداية عملنا import استدعاء للمكتبات urllib.request و urllib.error و بعدها قلنا له عبر try افتح لنا موقع ياهو و معنى الاخطاء ذكرناها سابقا و خزنناها في متغير و طبعناها عبر دالة الطبع print.

 

عرض الهيدرز للموقع HTTP header

يتم إستخدامه لمعرفة الهيدرز الخاص بموقع ما

>>> import urllib.request
>>> re = urllib.request.urlopen("https://www.google.com")
>>> re.getheaders()

عند الضغط على زر Enter سوف يعرض لنا الهيدرز header كما بالصورة

مكتبة بايثون urllib و عرض header

ستكون كل هذه بيانات النتيجة مهمة و منها الكوكيز و الدومين ....الخ.

لعرض الكوكيز هنا نستخدم الامر re.getheader('Set-Cookie').

>>> re.getheader('Set-Cookie')
'1P_JAR=2020-05-12-16; expires=Thu, 11-Jun-2020 16:07:30 GMT; path=/; domain=.google.com; Secure, NID=204=eB_QyCFSqN5tpl56kzfPQBc5LCJ37WqvYqUBeREGbepvZy0xjNmmu8OuvbOKMzHTyTcy0fwmuIWYflDL10X_RDtjT3n-EWFwNb6Zl1YRLOYOC_yZyj0Hyf0tViF3-2tSK-t-vdpww9zy5TfxsY6sXGvfmh_CEaorInSz1rGM34A; expires=Wed, 11-Nov-2020 16:07:30 GMT; path=/; domain=.google.com; HttpOnly'


إرسال الطلبات send requests

يلزمنا هنا فقط request لكن سنعدل قليلا بها و نستخدم User-Agent هي المتصفحات الذي ندخل بها اي متصفح بايثون لكن نحن نريد ان نستخدم موثوق مثل فيرفوكس سنستخدم User-Agent و نغيره.

>>> import urllib.request
>>> request = urllib.request.Request("https://www.google.com/",headers={'User-Agent':'Mozilla/5.0'})
>>> request.header_items()
[('User-agent', 'Mozilla/5.0')]

لتحميل كتاب بصفحات قليلة يوضح لنا هذا الدرس بشكل افضل مع امثلة اكثر اضغط على رز التحميل الآتي:

google-playkhamsatmostaqltradent