القائمة الرئيسية

الصفحات

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

 

python

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

من هذه المكتبات :
urllib, requests, selenium, BeautifulSoup

لكن بدرسنا هذا سوف نتكلم عن اول هذه المكتبات و هي 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

000

شرح ما سبق

في البداية استدعينا المكتبة المطلوبة 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 كما بالصورة

10

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

لعرض الكوكيز هنا نستخدم الامر 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')]
>>>

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

down-ar-300-1

هل اعجبك الموضوع :

تعليقات

التنقل السريع