כניסה לאתרים באמצעות פייתון

Logging Into Websites With Python



תכונת הכניסה היא פונקציונליות חשובה ביישומי האינטרנט של היום. תכונה זו מסייעת לשמור תוכן מיוחד מאנשים שאינם משתמשים באתר ומשמשת גם לזיהוי משתמשי פרימיום. לכן אם אתה מתכוון לגרד אתרים באינטרנט, תוכל להיתקל בתכונת הכניסה אם התוכן זמין רק למשתמשים רשומים.

הדרכות לגרידת אתרים כוסו בעבר, לכן הדרכה זו מכסה רק את ההיבט של קבלת גישה לאתרים על ידי כניסה עם קוד במקום לעשות זאת באופן ידני באמצעות הדפדפן.







כדי להבין הדרכה זו ולהיות מסוגל לכתוב סקריפטים לכניסה לאתרים, תזדקק להבנה מסוימת של HTML. אולי לא מספיק כדי לבנות אתרים מדהימים, אבל מספיק כדי להבין את המבנה של דף אינטרנט בסיסי.



זה ייעשה עם בקשות וספריות פייתון יפה. מלבד אותן ספריות פייתון, תזדקק לדפדפן טוב כגון Google Chrome או Mozilla Firefox מכיוון שהם יהיו חשובים לניתוח ראשוני לפני כתיבת קוד.



ניתן להתקין את בקשות וספריות BeautifulSoup באמצעות הפקודה pip מהמסוף כפי שניתן לראות להלן:





בקשות להתקנת pip
pip להתקין את BeautifulSoup4

כדי לאשר את הצלחת ההתקנה, הפעל את המעטפת האינטראקטיבית של פייתון המתבצעת על ידי הקלדה פִּיתוֹן לתוך הטרמינל.

לאחר מכן ייבא את שתי הספריות:



יְבוּאבקשות
מbs4יְבוּאמרק יפה

הייבוא ​​מוצלח אם אין שגיאות.

התהליך

כניסה לאתר עם סקריפטים דורשת ידע ב- HTML ורעיון כיצד פועל האינטרנט. הבה נבחן בקצרה כיצד פועל האינטרנט.

אתרי אינטרנט בנויים משני חלקים עיקריים, בצד הלקוח ובצד השרת. צד הלקוח הוא החלק של אתר אינטרנט שהמשתמש יוצר איתו אינטראקציה, בעוד צד השרת הוא החלק של האתר בו מבוצעות לוגיקה עסקית ופעולות שרת אחרות כגון גישה למסד הנתונים.

כאשר אתה מנסה לפתוח אתר באמצעות הקישור שלו, אתה פונה לצד השרת להביא לך את קבצי HTML וקבצים סטטיים אחרים כגון CSS ו- JavaScript. בקשה זו מכונה בקשת GET. אולם כאשר אתה ממלא טופס, מעלה קובץ מדיה או מסמך, יוצר פוסט ולוחץ על נניח כפתור שלח, אתה שולח מידע לצד השרת. בקשה זו מכונה בקשת POST.

הבנה של שני המושגים הללו תהיה חשובה בעת כתיבת התסריט שלנו.

בדיקת האתר

כדי לתרגל את המושגים של מאמר זה, נשתמש ב- ציטוטים לגרד אתר אינטרנט.

כניסה לאתרים דורשת מידע כגון שם המשתמש והסיסמה.

אולם מכיוון שאתר זה משמש רק כהוכחת מושג, הכל הולך. לכן היינו משתמשים מנהל כשם המשתמש ו 12345 בתור הסיסמה.

ראשית, חשוב לצפות במקור הדף מכיוון שזה ייתן סקירה כללית של מבנה דף האינטרנט. ניתן לעשות זאת על ידי לחיצה ימנית על דף האינטרנט ולחיצה על הצג את מקור הדף. לאחר מכן, אתה בודק את טופס ההתחברות. אתה עושה זאת על ידי לחיצה ימנית על אחת מתיבות ההתחברות ולחיצה על לבדוק אלמנט . בבדיקת אלמנט, אתה צריך לראות קֶלֶט תגים ולאחר מכן הורה טופס לתייג איפשהו מעליו. זה מראה כי כניסות הן בעצם צורות הודעה אד לצד השרת של האתר.

עכשיו, שימו לב ל שֵׁם התכונה של תגי הקלט לתיבות שם המשתמש והסיסמה, הם יהיו נחוצים בעת כתיבת הקוד. עבור אתר זה, שֵׁם התכונה עבור שם המשתמש והסיסמה הם שם משתמש ו סיסמה בהתאמה.

לאחר מכן, עלינו לדעת אם ישנם פרמטרים נוספים שיהיו חשובים לכניסה. הבה נסביר זאת במהירות. כדי להגביר את האבטחה של אתרים, בדרך כלל נוצרים אסימונים כדי למנוע התקפות של זיוף אתרים.

לכן, אם האסימונים האלה לא יתווספו לבקשת POST אז ההתחברות תיכשל. אז איך נדע על פרמטרים כאלה?

נצטרך להשתמש בכרטיסייה רשת. כדי לקבל כרטיסייה זו ב- Google Chrome או ב- Mozilla Firefox, פתח את כלי המפתחים ולחץ על הכרטיסייה רשת.

ברגע שאתה בכרטיסיית הרשת, נסה לרענן את הדף הנוכחי ותבחין בבקשות שנכנסות. עליך לנסות להיזהר מבקשות POST שנשלחות כאשר ננסה להיכנס.

להלן מה היינו עושים הלאה, בעוד הכרטיסייה רשת פתוחה. הכנס את פרטי הכניסה ונסה להיכנס, הבקשה הראשונה שתראה צריכה להיות בקשת ה- POST.

לחץ על בקשת ה- POST וצפה בפרמטרי הטופס. היית שם לב שלאתר יש csrf_token פרמטר עם ערך. ערך זה הוא ערך דינאמי, לכן נצטרך ללכוד ערכים כאלה באמצעות לקבל לבקש תחילה לפני השימוש ב- הודעה בַּקָשָׁה.

באתרים אחרים שעליהם אתה עובד, סביר להניח שלא תראה את csrf_token אך ייתכנו אסימונים אחרים שנוצרים באופן דינמי. עם הזמן, היית משתפר בידיעת הפרמטרים החשובים באמת בניסיון התחברות.

הקוד

ראשית, עלינו להשתמש בבקשות וב- BeautifulSoup כדי לקבל גישה לתוכן העמוד של דף הכניסה.

מבקשותיְבוּאמוֹשָׁב
מbs4יְבוּאמרק יפהכפי שbs

עםמוֹשָׁב() כפי שש:
אֲתַר =ש.לקבל('http://quotes.toscrape.com/login')
הדפס(אֲתַר.תוֹכֶן)

פעולה זו תדפיס את תוכן דף הכניסה לפני שנכנס ואם אתה מחפש את מילת המפתח להתחברות. מילת המפתח תמצא בתוכן הדף המראה שעדיין לא התחברנו.

לאחר מכן, היינו מחפשים את csrf_token מילת המפתח שנמצאה כאחד הפרמטרים בעת שימוש בכרטיסיית הרשת קודם לכן. אם מילת המפתח מציגה התאמה עם קֶלֶט tag, ניתן לחלץ את הערך בכל פעם שאתה מריץ את הסקריפט באמצעות BeautifulSoup.

מבקשותיְבוּאמוֹשָׁב
מbs4יְבוּאמרק יפהכפי שbs

עםמוֹשָׁב() כפי שש:
אֲתַר =ש.לקבל('http://quotes.toscrape.com/login')
bs_content=bs(אֲתַר.תוֹכֶן, 'html.parser')
אֲסִימוֹן =bs_content.למצוא('קֶלֶט', {'שֵׁם':'csrf_token'})['ערך']
נתוני כניסה= {'שם משתמש':'מנהל','סיסמה':'12345', 'csrf_token':אֲסִימוֹן}
ש.הודעה('http://quotes.toscrape.com/login',נתוני כניסה)
דף הבית=ש.לקבל('http://quotes.toscrape.com')
הדפס(דף הבית.תוֹכֶן)

פעולה זו תדפיס את תוכן הדף לאחר הכניסה, ואם תחפש את מילת המפתח יציאה. מילת המפתח תמצא בתוכן הדף המראה כי הצלחנו להיכנס בהצלחה.

בואו נסתכל על כל שורת קוד.

מבקשותיְבוּאמוֹשָׁב
מbs4יְבוּאמרק יפהכפי שbs

שורות הקוד למעלה משמשות לייבוא ​​אובייקט ה- Session מספריית הבקשות ואת האובייקט BeautifulSoup מספריית bs4 באמצעות כינוי של bs .

עםמוֹשָׁב() כפי שש:

הפעלת בקשות משמשת כאשר אתה מתכוון לשמור על הקשר של בקשה, כך שניתן לאחסן את קובצי ה- Cookie ואת כל המידע של אותה בקשה.

bs_content=bs(אֲתַר.תוֹכֶן, 'html.parser')
אֲסִימוֹן =bs_content.למצוא('קֶלֶט', {'שֵׁם':'csrf_token'})['ערך']

הקוד הזה משתמש בספריית BeautifulSoup כך csrf_token ניתן לחלץ מדף האינטרנט ולאחר מכן להקצות אותו למשתנה האסימון. אתה יכול ללמוד על חילוץ נתונים מצמתים באמצעות BeautifulSoup.

נתוני כניסה= {'שם משתמש':'מנהל','סיסמה':'12345', 'csrf_token':אֲסִימוֹן}
ש.הודעה('http://quotes.toscrape.com/login',נתוני כניסה)

הקוד כאן יוצר מילון של הפרמטרים שישמשו אותם לכניסה. המפתחות של המילונים הם שֵׁם התכונות של תגי הקלט והערכים הם ערך התכונות של תגי הקלט.

ה הודעה שיטה משמשת לשלוח בקשת פוסט עם הפרמטרים וכניסה אלינו.

דף הבית=ש.לקבל('http://quotes.toscrape.com')
הדפס(דף הבית.תוֹכֶן)

לאחר כניסה, שורות קוד אלה למעלה פשוט חולצות את המידע מהדף כדי להראות שהתחברות הצליחה.

סיכום

תהליך הכניסה לאתרים באמצעות Python הוא די קל, אולם התקנת האתרים אינה זהה, ולכן חלק מהאתרים יתקשו להיות כניסים יותר מאשר אחרים. יש עוד מה לעשות כדי להתגבר על כל אתגרי הכניסה שיש לך.

הדבר החשוב ביותר בכל זה הוא הידע ב- HTML, בקשות, BeautifulSoup והיכולת להבין את המידע שהתקבל מהכרטיסייה רשת של כלי המפתחים של דפדפן האינטרנט שלך.