זחלן רשת

זחלן רשת (Web crawler), רובוט חיפוש, רובוט רשת או עכביש רשת הוא בוט או תוכנה לסריקת הרשת הכלל עולמית, באופן אוטומטי, שיטתי וסדרתי. אתרים רבים, בייחוד מנועי חיפוש, משתמשים בזחלנים כדי לקבל תמונה עדכנית של הרשת. הזחלן שומר עותק של האתרים כדי שניתן יהיה לעדכן אותם מאוחר יותר באינדקס של מנוע החיפוש ובכך מאפשר למנוע החיפוש מתן תוצאות מהירות. כמו כן, תוכנות זחלן יכולות לאתר קישורים שבורים בדפי אינטרנט או לאסוף כתובות דואר אלקטרוני (בדרך כלל לשם משלוח דואר זבל ופרסומים שונים). התהליך אותו עושה התוכנה נקרא "הזדחלות אינטרנטית". בדרך כלל הזחלן מתחיל לסרוק דף מתוך רשימה נתונה של דפים (למשל האינדקס של מנוע החיפוש) ומשם הוא מתקדם באופן רקורסיבי דרך הקישורים בדף, לדפים נוספים. הזחלן מתחיל את פעולתו ברשימת אתרים אותם עליו לבקר, אתרים אלו נקראים בשם "זרעים" (seeds), כאשר הזחלן מבקר באתרים אלו הוא מזהה את הקישורים שיש בדף אינטרנט מסוים ומצרף אותם לרשימת האתרים שבהם עליו לבקר. הכמות הרבה של האתרים בהם הזחלן מבקר מחייבת את התוכנה לדעת לסדר את האתרים בסדר עדיפויות, אך אין אפשרות לדעת בביטחון כי האתר בו הזחלן מבקר לא נסרק כבר קודם לכן. לכן, השגת מידע ראשוני בכל הפעלה של התוכנה היא דבר כמעט בלתי אפשרי. התנהגותו של הזחלן היא תוצאה של צירוף מספר קווי מדיניות: מדיניות של בחירה אשר מגדירה איזה עמוד להוריד. מדיניות של ביקור חוזר אשר מגדירה מתי לבדוק שינויים בדפים. מדיניות נימוס אשר מגדירה איך להימנע מעומס יתר של אתרים ולגרום להפלה של שרתים. מדיניות של מקבילות אשר מגדירה איך לתאם בין פעולתם של הזחלנים השונים. בהינתן הגודל של האינטרנט, גם מנועי חיפוש גדולים מכסים בחיפושם רק חלק קטן מהנתונים. מחקרים הראו כי המידע המתקבל על ידי אתרים אלו עומד על 40%-70% מכלל ההיצע האינטרנטי. מכיוון שהזחלן מוריד רק חלק קטן מדפי האינטרנט, התוצאה הרצויה היא שדפים אלו יכילו בתוכם את המידע הרלוונטי ביותר ולא רק דגימה מקרית. זה דורש מדד לחשיבות ולתעדוף דפי אינטרנט. החשיבות של דף היא פונקציה של האיכות הפנימית שלו, הפופולריות שלו במונחים של קישורים או ביקורים, ואפילו של כתובת האתר שלו. לעיצוב מדיניות בחירה טובה יש קושי נוסף: היא חייבת לעבוד עם מידע חלקי, מכיוון שהסט המלא של דפי האינטרנט אינו ידוע במהלך הסריקה. לכן, כאשר מגדירים מדיניות בחירה של דפי אינטרנט צריך לקחת בחשבון כי על הזחלן לעבוד עם מידע חלקי וכי המידע השלם שקיים ברשת לא יופיע במהלך הרצת התוכנה. ישנן מספר דרכים להריץ תוכנה זו באינטרנט: על פי מספר הביקורים באתר מסוים (הסתבר כי לא מניב תוצאות טובות, ובעיקר מועיל במקרים של דפי אינטרנט יחידים ולא במקרים של אתרים שלמים). דרך שנייה להרצת התוכנה היא הרצה של התוכנה לפי עיקרון "breadth-first", אסטרטגיה שבה הזחלן מתחיל בחקירת דפים שנמצאים במרחק קרוב יותר (מבחינת קישורים) לעמוד ה-Seed הראשוני לפני שהוא נכנס עמוק יותר למבנה הקישורים. דרך זו מניבה תוצאות יותר טובות מכיוון שהאתרים שזוכים ליותר ביקורים מופיעים גבוה יותר בתוצאות החיפוש. הסיבה לכך היא כי הדפים החשובים יותר הם דפים שאליהם יש קישורים רבים יותר מתוך דפים אחרים, ולכן גם קל יותר לאתר אותם. ישנן תוכנות מבוססות אלגוריתמים אשר מחלקות את הדפים לפי דירוג, כאשר הדפים בעלי "הדירוג" (אשר נקבע לפי האלגוריתם) הגבוה יותר מאותרים מיידית וסימולטנית על ידי התוכנה. דרך זו של חיפוש לא הועלתה מעולם לאינטרנט ועל כן לא ניתן להוכיח את אמינותה. כאשר מריצים תוכנה כמו הזחלן, דבר חשוב שצריך לבצע הוא התאמה בין דמיון של עמוד מסוים לנושא החיפוש. הבעייתיות המרכזית אשר עולה מהזחלן היא שרוצים לדעת את מידת ההתאמה של הערך לנושא החיפוש לפני הורדת העמוד. דרך טובה לנבא זאת היא עוגן הטקסטים בלינק, זוהי שיטה שפותחה על ידי פינקרטון באחד מהזחלנים הראשונים שקמו באינטרנט. הפוקוס של החיפוש תלוי בכמות הלינקים בנושא שמחפשים והישענות על מנוע חיפוש אשר נותן נקודת התחלה טובה. לאינטרנט יש טבע דינמי, ועל כן, הרצת זחלן יכולה לקחת שבועות ואפילו חודשים. בזמן זה דברים יוכלו להשתנות ולהיות לא רלוונטיים. ולכן כאשר אנו מריצים תוכנה, ערכי הבסיס שהתוצאות אמורות לעמוד בהם הם: טריות וגיל התוצאות. טריות: מתבצעת בדרך בינארית אשר מראה אם העותק המקורי הוא מדויק או לא. זמן: מדד הזמן קובע כמה ישן העותק המבוקש. המטרה העיקרית של הזחלן היא לשמור על ממוצע טריות דפיו גבוה ככל האפשר וזאת תוך כדי שמירה על גיל הדפים נמוך ככל האפשר. לכן, הזחלן צריך לעשות עבודה כפולה: ראשית, עליו לבדוק את כמות הדפים המיושנים באתר מסוים ושנית, עליו לדאוג כמה ישנים הם. על הזחל לבקר מספר פעמים את כל הדפים באוסף, תוך נתינת דגש וביקור חוזר של דפים המשתנים בצורה יותר תכופה. כדי להבטיח את העלאת הדפים החדשים ביותר, על הזחל "לקנוס" אתרים המשתנים בתכיפות גבוהה יותר, ובסופו של דבר להתעלם מדפים אלו. תוכנות הזחל יכולות למצוא מידע בצורה הרבה יותר מהירה ועמוקה מאשר בני אנוש. המהירות והאופן בו פועלים הזחלים משפיע רבות על השרתים, ועל כן מספר זחלים הפועלים בו זמנית יכולים להפיל שרת. הפעלה של זחלים יכולה להיות אפקטיבית למספר משימות אך גם יכולה להוות בעיה לאוכלוסייה ממספר סיבות: הזחלנים תופסים את הרשת ועל כן משתקים חלקים של הרשת לפרק זמן ממושך. לפעמים הכניסה לאתרים בהם הזחל פועל באותה עת היא בלתי אפשרית מכיוון שהזחל יוצר עומס רב על האתר. תוכנות אשר מתוכנתות בצורה לא מספקת יכולים להפיל שרתים וראוטרים ולהוריד דפים איתם הם לא יודעים איך להתמודד. זחלים יכולים להפיל שרתים שלמים ואתרים. פתרון חלקי לבעיות אלו הוא "פרוטוקול מניעת הרובוטים" אשר מהווה סטנדרט למנהלי אתרים ומראה להם איזה חלק מהאתר לא נחשף לזחל. שיטה זו היא היעילה ביותר למניעת הפלות של אתרים מעומס יתר של תוכנות זחלים. הדפים אותם מנהלי האתרים קבעו שתוכנות הזחל לא ייסרקו, מפורטים בדרך כלל בעמוד Robots.txt. זחלן מקביל הוא זחלן אשר מבצע כמה תהליכי זחילה במקביל, מטרה של תוכנה זו היא למקסם את כמות הערכים שמורידים תוך שמירה על מינימליות הכפילות. על הזחלן לזהות שתי כתובות זהות ובכך למנוע כפילות של העלאת אתרים. בכלי התקיפה המפורסם Metasploit נמצא גם זחלן רשת אשר ניתן להשתמש בו על ידי הקשת הפקודות הבאות use auxiliary/crawler/msfcrawler msf auxiliary(msfcrawler) > set rhosts www.example.com msf auxiliary(msfcrawler) > exploit Httrack הוא הוא סורק אינטרנט בחינם וקוד פתוח ודפדפן לא מקוון, שפותח על ידי Xavier Roche. הכלי מאפשר לך להוריד אתר אינטרנט לספרייה מקומית, לבנות באופן רקורסיבי את כל הספריות, לקבל HTML, תמונות וקבצים אחרים מהשרת למחשב. כדי להשתמש בו דרך שורת הפקודה של Kali Linux ניתן להקיש את הפקודה הבאה: httrack http://tptl.in –O /root/Desktop/file כלי זה מזהה ומציג מידע מפורט עבור דף אינטרנט שנבחר על ידי המשתמש, והוא מציע כלים אחרים של דפי אינטרנט. גם בכלי הנפוץ Burp Suite ניתן להשתמש בזחלן על מנת לגלות את תוכן האתר. קישור קישור שבור Edwards, J.; McCurley, K. S.; and Tomlin, J. A, "An adaptive model for optimizing performance of an incremental web crawler", Conference proceedings / the Tenth International World Wide Web Conference: Hong Kong, May 1 - 5, 2001, New York, NY: Association for Computing Machinery, 2001, עמ' pp. 106–113, ISBN 978-1-58113-348-6 Marc Najork, Janet L. Wiener, Breadth-first crawling yields high-quality pages, Proceedings of the 10th international conference on World Wide Web, WWW '01, Association for Computing Machinery, 2001-04-01, עמ' 114–118 doi: 10.1145/371920.371965