טכניקות לזיהוי ולכידת בוטים חמקניים

כשתוכנה מתחברת לשרת HTTP הוא יכולה לדווח לו מי היא, באחד השדות שנקרא user-agent.
הסיבה היא שיתכן שיש לוגיקה ספציפית בצד השרת שמיועדת לדפדפן מסוים (למשל כי יש בו באג שדורש התייחסות שונה מצד השרת).
דפדפנים הם לא התוכנות היחידות שמתחברות לאתרי אינטרנט, גם בוטים (קיצור של רובוטים), הידועים גם בשמות הפחות מחמיאים עכבישים וזחלנים מתחברים.
בוטים לדוגמא הם רובוטים של מנועי חיפוש, שמאנדקסים את הדפים באתר כדי לאפשר חיפוש מהיר.
בוטים אחרים שמפועלים על ידי ספאמרים סורקים את הדפים בחיפוש אחרי כתובות אימייל, או שולחים תגובות ספאם בבלוגים ובמערכות אחרות.
אתרי אינטרנט רבים היום מייצרים את התוכן שלהם בצורה דינאמית, מה שיכול לבלבל ולהעמיס על רובוטים שמנסים לאנדקס את האתר.
בעיה נוספת היא שלפעמים יש חלקים באתר שבעלי האתר לא מעוניין שיאונדקסו על ידי בוטים, למרות שהוא רוצה לאפשר אליהם גישה חופשית לאנשים.
הפתרון לשתי הבעיות הוא קובץ בשם robots.txt, שנמצא בספריית השורש של האתר. הקובץ הזה, שלמרות שלא מוגדר בשום תקן, הפך לסטנדרט להגדרה של איזורים אסורים לבוטים.
הנה הקובץ של גוגל, שאגב יכול לחשוף שרותים מעניינים שלהם.
מטבע הדברים הבוטים הלא לגיטמיים מנסים להסתיר את הזהות שלהם כדי למנוע מהשרת מלהתגונן בפניהם, ולכן מזדהים בעזרת user-agent של דפדפנים נפוצים, בנוסף, בדרך כלל רובוטים כאלו גם לא מתייחסים לקובץ הrobots.txt, אחרי הכל – אם בעל האתר טרח לומר שאסור לבוטים להכנס לאיזור מסויים, אולי זה בדיוק האיזור שאותם בוטים ירצו לסרוק?
כמובן שיש גם בוטים לגיטימיים שפשוט כתובים רע או שמכילים באג שגורם להם להתעלם מהקובץ.
אפשר להשתמש בעובדה שרובוטים זדוניים מתעלמים מקובץ הרובוטים כדי לזהות ואפילו לחסום אותם.
נתקלתי ברעיון כאן.
הרעיון פשוט למדי:
נכניס לקובץ הרובוטים קובץ שאסור לקריאה על ידי רובוטים.
נכניס לדפים שלנו לינק בלתי נראה שמפנה אל אותו קובץ.
מכיוון שהלינק הוא בלתי נראה, אנשים לא יכנסו אליו בטעות.
כל הפעלה של הקובץ הגיעה בעצם מרובוט סורר, מה שיאפשר הוספה שלו לבסיס הנתונים של הרובוטים (הסוררים) וגם חסימה של כתובת האי-פי שלו כדי למנוע ממנו לבצע באתר את מעשיו הנלוזים.
דרך נוספת לזהות בוטים שלא מזדהים בuser-agent שלהם היא באמצעות זיהוי תבנית הכניסות שלהם לאתר.
בוטים נוטים להיות מאוד יסודיים ובדרך כלל סריקה של בוט, במיוחד כזה שלא מזדהה, תהיה בסדר גודל של כמה מאות דפים בכל פעם, בהפרשים קצרים מאוד בין כניסה לכניסה.
אפשר להשתמש בידע הזה כדי לזהות בוטים, מחפשים סדרה ארוכה של כניסות מאותה כתובת אי-פי, כאשר ההפרשים בין כניסה לכניסה קצרים מדי מכדי שזה יהיה סביר שבן אדם ביצע אותם.

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

מה לעזאזל (2)

הדיילי WTF מוציא עוד סדרה מצויינת של תצלומי מסך איכותיים, אחרי הקודמת מלפני מספר שבועות:

הנה כמה נבחרים:
תמחק היא אמרה לי, תמחק.
delete?

אמרתי לך שאני לא תומך באנגלית, מה אתה בוחר את זה שוב ושוב?
אתה לא מבין אנגלית?

זהירות, כלכל בחירתך בחוכמה!

כתוב-לי

כולם מתרגשים מכתוב-לי (Writely) של גוגל, וכמה שהוא שווה בתור עורך בלוגים.
אני באמת לא מבין למה אנשים רצים להשתמש בשרותים חיצוניים כדי לעשות דברים שהם יכולים לעשות ביעילות גדולה יותר ובפרטיות גדולה יותר באופן מקומי.
מה, אם אני אציע לכם לכתוב את הספר שלכם על נייר שלי, עם עט שלי, אבל בתנאי שאני שומר עותק של כל מה שאתם כותבים – תסכימו?
נראה לי שלא.
ומה אם זה עט נובע ונייר מהודר?
מה, עדיין לא?
אז למה כולם רצים להשתמש בכתוב-לי?

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

אסטריסק: או איך לחרפן את האוייב

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

* מענה קולי (הגעתם לתא של..)
* מרכזית טלפונים
* נתב שיחות (לחץ 101 כדי להגיע אל)
* שרת SMS, כלומר להוציא ולקבל הודעות sms, על קוי בזק (כמו בטלפונים הקויים החדשים)

    ועוד ועוד.
    להמשיך לקרוא אסטריסק: או איך לחרפן את האוייב

    חרא פוסט

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

    תוסף ההצבעה מבוסס על votio, תוסף חביב.
    שיפרתי את ההתקנה שלו, ועכשיו כבר לא צריך לערוך קוד (למי שלא רוצה משהו מיוחד), בנוסף, הכנתי אותו לi18n (תמיכה בריבוי שפות).
    אני מתכוון להציע את השיפור לכותב המקורי של התוסף, ואם הוא לא יקבל אני אציע את התוסף מכאן.
    בינתיים, אפשר להוריד מפה:
    גרסא מתורגמת ומשופרת של votio

    כדי לקבל דרוג לפוסט, הוא צריך להיות שייך לקטגוריה שהשם הידידותי שלה (slug) הוא vote באנגלית.
    אם רוצים אפשרות לדרג קטגוריות אחרות צריך לערוך את הקוד.