מסך אימות כתובת האימייל של המנהל המובנה של WordPress — המופיע אחת לכמה חודשים מאז גרסה 5.3 — שובר אוטומציה של Playwright המעדכנת תוספים באתרים ללא גישת SSH. השלב הנוסף מאלץ סקריפטים להמתין לכפתור שלעולם לא מופיע, מה שגורם לפקיעת זמן (timeouts) ולעיכוב בתהליכי הפריסה (deployments).
מה גורם לעיכוב
כאשר סקריפט Playwright מתחבר ל-wp-admin, הוא מצפה שהלוח (dashboard) ייטען מיד. במקום זאת, WordPress מפנה לעיתים לדף שכתובת ה-URL שלו מכילה adminhash=. הדף שואל, “האם זו עדיין כתובת האימייל שלך?” עם שני כפתורים: Yes, this is my address ו-I’ll wait. אדם לוחץ על “I’ll wait” וממשיך מאוחר יותר; סקריפט שרץ ללא השגחה ממשיך לחפש את האלמנטים של הלוח, לעולם לא מוצא אותם, ובסופו של דבר חווה פקיעת זמן.
מדוע ההודעה קיימת
WordPress הוסיפה את ההודעה כדי לאשר שכתובת האימייל של המנהל עדיין נגישה. היא מופיעה בערך כל כמה חודשים, ללא קשר לפעילות האתר, ומיועדת כבדיקת אבטחה עבור בעלי אתרים שעלולים לאבד גישה לכתובת.
מי מושפע
- מפתחים המסתמכים על Playwright כדי לדחוף עדכוני תוספים, להריץ בדיקות UI או לבצע משימות ניהול מרובות.
- ספקי אחסון המגבילים גישת SSH, מה שמאלץ משתמשים לבצע אוטומציה דרך הדפדפן.
- בעלי אתרים שחווים עיכובים בעדכונים מכיוון שהאוטומציה לעולם לא מגיעה למסך העדכון.
המחיר אינו רק כמה שניות מבוזבזות; כשלים חוזרים ונשנים עלולים לעצור חלונות תחזוקה מתוזמנים ולאלץ התערבות ידנית.
זיהוי המסך הלא רצוי
נוכחות של adminhash= ב-URL הנוכחי היא אינדיקטור אמין. המחרוזת מופיעה רק בדף אימות האימייל, ולא בלוח הבקרה הרגיל או בכל מסך ניהול אחר.
עקיפה פשוטה
הכניסו בדיקה מיד לאחר שלב ההתחברות. אם ה-URL מכיל adminhash=, לחצו על כפתור ה-"I’ll wait" והמתינו שהדף יתייצב לפני ההמשך.
def ensure_past_email_check(page):
if "adminhash=" in page.url:
page.click("text=I'll wait")
page.wait_for_load_state("networkidle")
קראו ל-ensure_past_email_check(page) מיד לאחר כל התחברות מוצלחת. הפונקציה אינה עושה דבר כאשר מסך האימות אינו מופיע, מה ששומר על הסקריפט מהיר ודטרמיניסטי.
מתי להשתמש בעקיפה
עבור תהליכי עבודה אוטומטיים שחייבים לרוץ ללא פיקוח אנושי — כגון עדכוני תוספים ליליים או בדיקות UI של אינטגרציה רציפה (CI) — העקיפה היא פרקטית. היא מתייחסת לשלב האימות כאל סטייה צפויה מראש ולא כאל כשל אקראי.
נקודת מבט נגדית
מנהלי מערכת מסוימים טוענים כי ביטול אוטומטי של ההודעה עלול להסתיר בעיה אמיתית במשלוח האימייל. אם כתובת האימייל של המנהל אכן הופכת לבלתי נגישה, האתר עלול להחמיץ התראות קריטיות. במקרים כאלה, גישה מורכבת יותר — כגון רישום (logging) של האירוע, שליחת התראה או השהיית האוטומציה — עשויה להיות עדיפה.
מה כדאי לעקוב אחריו בהמשך
- WordPress עשויה לשנות את תבנית ה-URL או להוסיף שלבי אימות נוספים, מה שישבור את הבדיקה של
adminhash=. עקבו אחר הערות הגרסה של ה-core. - מנוע הסלקטורים של Playwright מתפתח; ודאו שהסלקטור הטקסטואלי
"text=I'll wait"ממשיך להתאים לכפתור לאחר כל עיצוב מחדש של ממשק המשתמש (UI). - אם אתם מנהלים אתרים רבים, שקלו לרכז את לוגיקת העקיפה בספרייה משותפת כדי למנוע כפל קוד.
באמצעות טיפול מפורש בדף אישור כתובת האימייל של המנהל, מפתחים הופכים פקיעת זמן מזדמנת לחלק שגרתי בסקריפטים של Playwright שלהם, ושומרים על אוטומציה של WordPress אמינה גם כאשר הפלטפורמה מציגה הודעת אבטחה בלתי צפויה.
