אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » זהירות! אינטרנט אקספלורר 11 שינה את ה-User Agent String שלו

זהירות! אינטרנט אקספלורר 11 שינה את ה-User Agent String שלו

רן בר-זיק נובמבר 24, 2013 10:37 am אין תגובות

כתבתם סקריפט שבודק אם מדובר באינטרנט אקספלורר? הוא לא יעבוד בגרסה 11 של דפדפן הגיהנום

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

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

הנך משתמש בדפדפן לא מוכר. אנא עבור לאינטרנט אקספלורר 7 ומעלה או כרום/פיירפוקס. אבל הגולש השתמש באקספלורר 11.
הנך משתמש בדפדפן לא מוכר. אנא עבור לאינטרנט אקספלורר 7 ומעלה או כרום/פיירפוקס. אבל הגולש השתמש באקספלורר 11.

מה קרה כאן?

המתכנתים שבנו את האתר של לאומי כארד השתמשו ב-User Agent detection. מה זה בדיוק? מדובר במחרוזת טקסט קטנה שניתן לקרוא אותה עם JavaScript באופן הבא:


navigator.userAgent;

אתם מוזמנים להריץ את השורה הזו ב-console. כל דפדפן מחזיר תוצאה אחרת בהתאם לסוג הדפדפן. כרום למשל יחזיר:


"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36"

דפדפן אינטרנט אקספלורר 9 יחזיר משהו כזה:


Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/4.0; GTB7.4; InfoPath.3; SV1; .NET CLR 3.1.76908; WOW64; en-US)

באתר הזה יש רשימה אדירה של user strings של דפדפנים רבים רבים על מערכות הפעלה רבות כולל User String של מערכות שאינן דפדפנים כלל (כמו crawlers למשל).

מתכנת יכול לקחת את ה-User String ולבדוק באמצעותו את גרסת המשתמש. הסברתי במאמר על Browser detection איך עושים את זה.

מה הבעיה עם אינטרנט אקספלורר 11? מיקרוסופט בחוכמתה כה רבה, הודיעה על כך שהיא משנה את ה-User agent של אינטרנט אקספלורר 11 כך שיהיה מטעה בכוונה (!!!) וימנע ממתכנתים למצוא בקלות שמדובר באינטרנט אקספלורר 11.

כך הוא נראה:


    Mozilla/5.0 (Windows NT 6.3; Trident/7.0; .NET4.0E; .NET4.0C; rv:11.0) like Gecko

ה-User agent הזה שונה באופן מהותי מזה של הגרסאות האחרות של אינטרנט אקספלורר. השוו למשל ל-User agent של אינטרנט אקספלורר 10 שמצהיר על עצמו בגאון, בדומה לשאר הגרסאות, על היותו אינטרנט אקספלורר:


Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)

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

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

כדי להגביר את השמחה והששון – אם אינטרנט אקספלורר 11 מבצע אמולוציה לגרסאות קודמות, אז גם שם ה-User agent משתנה למחרוזת שונה…. נהדר! 🙁

ביצוע Browser detection לאינטרנט אקספלורר 11

קודם כל – עדיף מאוד לא לבצע Browser detection. אפשר לעשות Feature detection נורמלי. כדאי לכם לעשות את זה – אם אי אפשר, אפשר פשוט לחפש את המילה Trident או MSIE כמו בדוגמה הבאה:


var trident = !!navigator.userAgent.match(/Trident\/7.0/);
var net = !!navigator.userAgent.match(/.NET4.0E/);
var IE11 = trident && net
var IEold = ( navigator.userAgent.match(/MSIE/i) ? true : false );
if(IE11 || IEold){
alert("IE")
}else{
alert("Other")
}

למה מיקרוסופט עשו את זה?

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

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

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

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
אינטרנט אקספלורר

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד