באחד האתרים שאני מפעיל, מישהו החליט להתחכם ולנסות ולשכפל את כל התוכן של האתר באמצעות wget (תוכנה להורדת קבצים באמצעות פרוטוקולים HTTP או FTP),
אז הוספתי הגדרה ב-Nginx שיחסום כל בקשה שמגיעה מ-User Agent:
if ($http_user_agent ~* (Wget) ) {
return 403;
}
כל בקשה שתגיע מ-User Agent שמכיל Wget תתקבל בשגיאה 403 (הבקשה אסורה), שימו לב שאת if ניתן למקם גם ב-location (כדי לחסום תיקייה ספציפית) וגם ב-server, כדי לחסום את כל השרת ל-Wget.
מילון -> מזהה משתמש (User Agent):
כל פעם שנוצר קשר בין דפדפן לבין שרת, הדפדפן שולח בקשה ובה הוא מגדיר מהי סוג הבקשה:
Header לדוגמא של דפדפן Chrome ב-Windows 7.
הדפדפן בעצם "אומר לשרת: "אני רוצה את קובץ X, מהאתר Y אני יודע לדבר בפרוטוקול Z, הגולש יודע עברית ואנגלית, אך מעדיף עברית" ועוד.
כחלק מהבקשה, הדפדפן ישלח מזהה משתמש שכולל את שם וגרסת הדפדפן, ובחלק מהדפדפנים גם את מערכת ההפעלה (כמו ב-iPhone ו-Android). לפי מזהה המשתמש השרת יודע באיזה מכשיר משתמש הגולש ולכן ידע איזה עיצוב מתאים לגולש, עיצוב שתואם ל-PC או ל-iPhone וכו'.
החסימה הזו מיותרת.
בעזרת הפרמטר -U ניתן לעקוף בקלות.
-U, --user-agent=AGENT identify as AGENT instead of Wget/VERSION.
אתה צודק. באמצעות curl אפשר לדלג על החסימה הזאת (באמצעות wget אי אפשר).
אבל, הקוד הזה עדיין יסנן סקריפט קידז שמעולם לא קראו את הManual.
אפשר לזייף בשנייה UA, מיותר לטעמי, ה-UA צריך לשמש עבור זיהוי סלולרי חוץ מזה אין מה לגוע שם, זה לא עוזר בשום מצב.