נתקלתי בערך ירמיהו הלפרן בו יש תבנית כותר דהיינו רק בעלי הרשאה יכולים לקרוא את הערך. אולם בפועל דפדפתי בחופשיות בין כל דפיו. צריך לעדכן אותו שיהיה עם תבנית כותר חופשי. כדי ליצור רשימה כזו חשבתי שתריץ את בוט הקישורים שלך על שני הסוגים. אם אתה מזהה קישורים חסומים על תבנית כותר חופשי הפק רשימה ונתקן אותם ידנית או בבוט, ולהיפך על תבנית כותר. אפשרי? מתייג את משתמש:IKhitron.
נושא בדף שיחת משתמש:Matanya
הבוט בודק רק אם הקישור קיים ומחזיר 200, הוא לא בודק אם התוכן נגיש.
הממ... אז יש לך רעיון יצירתי אחר?
לי יש. אם פותחים משהו שחושבים שהוא חופשי ומגיעים במקום זה לאתר login, יש לו כתובת שונה מהמצופה, משהו כולל את המילה login עצמה?
קוד ה-HTML של הדף מכיל את המחרוזת "tblBlockedPage" כאשר מדובר בתוכן לא נגיש.
תודה, תומר. זה בדיוק מה שאפשר ללמד את הבוט לזהות, בשני הכיוונים.
תחת ההנחה הלא בלתי-סבירה שה-API של pywikibot השתנה מאז הפעם האחרונה שהשתמשתי בו לפני אי אלו שנים, אשאיר את המימוש למישהו אחר*. אם צריך עזרה עם האלגוריתמיקה - אשמח.
* נראה לי שאפשר להשיג את התוצאה המבוקשת על-ידי סקריפט bash שישתמש ב-wget, grep, ו-wc, אבל גם לזה אין לי זמן להכנס.
זה יהיה טוב בהרבה תבניות אחרות שפתוחות רק לרשומים
בהחלט.
לכל תבנית כזו יהיה צריך להגדיר חוק אחר. אין לי בעיה לגבש תנאים כאלה לרשימה ספציפית של תבניות בהנחה שיש מי שיקח על עצמו את המימוש.
אפשר לעשות זאת בשיטת קוץ. דף שמכיל מידע נחוץ להרצה, כולל שמות שתי התבניות ומה לחפש בכתובת המנויים.
לא הבנתי יגאל, אתה לוקח על עצמך לכתוב את הבוט הרלוונטי?
הערה: שים לב שאני מדבר על קוד ה-HTML (מה שמקבלים כשלוחצים ctrl-u בפיירפוקס) ולא על ה-URL. לא הצלחתי למצוא שוני מובחן בכתובות ה-URL.
ברור שלא. זאת רק הצעה לשיפור.
אאוץ'. זה ממש לא טוב.
אני אנסה לעשות משהו בנדון.
אז דברו איתי כשיהיה מי שמוכן לקחת על עצמו את המימוש (דווקא ניתוח ה-html הוא בעיני הבעיה הפשוטה ביותר).
מתניה, אתה עדיין עובד בפייתון?
כן, זה לא נראה קשה מידי.
טוב. דבר איתי בצ'אט אם תצטרך עזרה.
בורה בורה, עכשיו הכדור אצלך. תכין רשימה של תבניות שצריך להשוות.
הבה נתחיל עם שתי אלה. בתבנית:ynet יש בעיה אחרת. רוצים לדעת היכן יש רק תקציר ולא כל הערך. יש לך רעיון? אני ממשיך לחפש עוד כאלה
תן לי שתי דוגמאות, כדי שאוכל לבדוק את ההבדל.
סליחה, זו תבנית:אנציקלופדיה ynet. בערך אלברט איינשטיין יש את הקישור ל- שהיא ערך בעל נגישות מלאה.
הערך נייר שמפנה ל- הוא ערך בו יש תקציר קל והשאר למנויים.
הקישורים נעלמו לי. תוכל לראות אותם במצב עריכה
אני חושד שבערכים שאינם חינמיים תופיע המחרוזת "subscriberLogin" אבל התקשיתי למצוא דוגמאות לערכים שאינם פתוחים מעבר לזה שנתת.
בערך הדברת מזיקים בכלל נופלים על bad gateway. בערך רוברט לואיס סטיבנסון צריך מנוי, וגם גאוטמה בודהה. צריך עוד?
אני דווקא חושב שהבדל הוא בכתובת, בין Pre לבין Free.
אז ככה:
- השיטה שלי עובדת. הלוגיקה שלה עקבית עם זו שהצעתי עבור "כותר".
- נראה שגם השיטה של יגאל עובדת. השיטה שלו עדיפה היות ואין צורך להוריד את כל ה-HTML ומספיק להסתכל על ה-URL.
- אני חושד שאפשר ללמד את {{אנציקלופדיה ynet}} לזהות את ההבדלים בעצמה ללא צורך בבוט. לא יצא לי לעבוד עם lua, אבל נראה לי שמספיקה כאן מניפולציה בסיסית על מחרוזות.
- הבעיה בהדברת מזיקים נובעת לדעתי מכך שכולנו ניסינו לפתוח ערכים רבים בבת אחת. ללמדכם מה שווה האנציקלופדיה הזו.
- למה בעצם היינו צריכים להבדיל בין הערכים האלה? הרי בניגוד לכותר, אין תבנית שמסמנת אילו ערכי טמקא אינם פתוחים.
2.1 לא יעבוד. שמעת על redirection?
4. נראה לי שחובה להסיר אלו שלא פתוחים. לא בטוח.
שמעתי, אבל הבעיה לדעתי יותר גדולה. אכן בערך נייר הקישור הוא לכתובת freeyaan ואז מתבצע redirect לכתובת preyaan. אני מסיק מכך שהערך הזה היה פעם פתוח והפך לסגור עם השנים. זכור לי שזו היתה בעיה מבחינת ויקיפדיה כבר בתחילת ימיה של אנצ' טמקא.
זה בדיוק מה שהתוכוונתי אליו. אם כי אינני בטוח שזאת הסיבה. אולי כזה דבר קיים בכל הערכים הסגורים.
לא סביר. מאיפה למי שהוסיף את הקישור היה הלינק הנכון?
הערכים האלה נפתחים ונסגרים כל הזמן. במקום ההצעה האגרסיבית שהועלתה למחוק את כולם, אני מציע שבוט יעבור פעם בכמה זמן ויסמן אותם כמו תבנית כותר. לא צריך להשמיד קישור שהיום מוביל לתקציר ומחר לערך שלם
דעתי האישית היא שצריך להפטר מכולם. אבל עד אז, יש לנו לוגיקה. אני פנוי בינתיים למשימות תבניות נוספות.
כי אולי בעבר, לפני שהם חשבו על לסגור ולו משהו, כולם היו פתוחים.
לא, תמיד היו ערכים פתוחים וערכים סגורים.
אז אולי מהרגע הראשון זה ככה. יש לך דוגמה לערך סגור שבו ה-redirection לא עובד?
לא חיפשתי ואני גם לא לגמרי מבין את השאלה.
אני מאמין שעבור כל ערך שהוא באנציקלופדיה הזאת אפשר לכתוב את הכתובת עם Free. אם זה פתוח - זה יגיע לשם. אם זה סגור - תיעשה redirection אוטומטית לאותה כתובת, רק עם pre.
אפשר דוגמה שניסית? אני רוצה לשחק איתה.
[http://www.ynet.co.il/yaan/0,7340,L-17414-PreYaan,00.html] (אני מניח שהקישור יעלם, אתה יודע איך למצוא אותו.
תודה. אז אני מניח שכל מה שצריך לעשות זה לבקש ממני רשימה של הכתובות הסגורות, לנקות אותה, ואז לבקש ממני להחזיק אותה ריקה. ידנית. זה לא שכל יום מוסיפים אחד חדש. אז תהיה לי עוד רשימה לבדוק.
זה יכסה גם את אלו שמשתמשים בקישור ולא בתבנית.
רגע, לא, אולי לא הבנתי. הקישור שנתתי לך הוא הקישור שאליו ה-redirect מוביל. את הכתובת ה-"free" תוכל למצוא בערך רוברט לואיס סטיבנסון. שים לב שיש ב-URL משהו שנראה כמו מחרוזת אקראית. אני מניח שזה איזשהו סוג של ערך סודי שמאפשר את פתיחת הערך.
לא מצאתי שם שום דבר חופשי, רק סגור
שים לב שהכתובת נראית כאילו היא חופשית, אבל בפועל היא מובילה לערך סגור.
יש לי הרגשה שאנו מדברים על דברים שונים. תוכל לצטט אותה כאן?
מתוך הערך, אם תעשה hover עם העכבר תראה שמדובר בכתובת שונה מזו שאתה מגיע אליה בסופו של דבר:
אז זה כן עשה redirection לכולם בכל זאת?
אני שוב לא מבין את השאלה. זה לא עושה רידירקט לכולם, רק לאלה שהיו פתוחים והפסיקו להיות.
אז גם זה היה פתוח? יש לך דוגמה של ערך סגור שמעולם לא היה פתוח?
מאיפה תהיה לי דוגמה כזו? אני לא מחזיק ארכיון מקומי של האינטרנט. כאמור, לדעתי כל הערכים שמופנים מוויקיפדיה באמצעות כתובת שיש בה "freeyaan" היו פעם פתוחים ונסגרו בהמשך. אני לא מצליח לראות שום הסבר אלטרנטיבי לעובדה שהמשתמשים שהוסיפו את הקישורים ידעו מה הלינק הנכון להפנות אליו.
אני חושב שאנחנו פשוט לא מבינים אחד את השני. אתה יכול לעבור 10 ערכים סגורים? יש סבירות של 100 אחוז שלפחות אחד מהם לא היה פתוח אף פעם, לא?
למה שתהיה סבירות כזו? התפלגות הקישורים החיצוניים בוויקיפדיה אינה דומה להתפלגות הערכים הסגורים.
אמרתי בין הערכים הסגורים.
אההה! אתה מחפש ערכים סגורים שאינם בהכרח מקושרים מוויקיפדיה. במקרה כזה יש סיכוי שלפחות אחד מהם לא היה פתוח. אבל מה זה משיג? מה ההבדל בין לנסות "לפרוץ" את הערכים האלה ללנסות לפרוץ ערכים לא חופשיים שמקושרים מוויקיפדיה?
אם יהיה לי ערך סגור שמעולם לא היה פתוח, ולא אכפת לי אם יש לו קישור מוויקיפדיה או לא, אנסה לשחק עם לואה.
ולמה אתה לא יכול לעשות את זה עם ערך שכן היה פעם פתוח?
כי אז תעשה redirection. ואני רוצה אחד נקי.
יש הסתברות גדולה מ-0 שלפחות אחד משני הערכים הבאים לא היה מעולם פתוח:
אם מה שאתה מנסה לעשות זה למצוא את הקישור ש"פותח" את הערכים האלה, לדעתי אתה עומד לבזבז את הזמן שלך. מה-URL זה נראה שעושים שימוש בקריפטוגרפיה (שאיכותה כנראה אינה מדהימה, אבל סביר להניח שהיא מספיקה לצורכיהם).
הראשון זה מצויין, תודה. ולא, זה לא מה שאני מתכוון לעשות.
אז מה אתה כן מנסה לעשות?
מתניה, האם הבוט שלך יודע לזהות שהקישור שהוא נכנס אליו עשה redirect?
אם הוא מקבל 301 או 302, אז כן.
מצויין. זה סוגר לנו גם את {{אנציקלופדיה ynet}}. כשניגשים ללינק כמו שמופיע בערך נייר (מתחזה לפתוח אבל עושה redirect לסגור) מקבלים סטטוס 301. עכשיו רק צריך להחליט מה לעשות עם הקישור. ההצעה שלי היא שהבוט יחליף את הקישור הכאילו פתוח (freeyaan) בקישור סגור (preyaan) ואז ללמד את התבנית להבדיל בין השניים ולהציג טקסט בהתאם.
IKhitron, בורה בורה, Matanya מה דעתכם?
- שכחתי כמה ויקיפדיה ממכרת.
כן, זה בדיוק מה שרציתי. הבוט הזה צריך לרוץ כל שבוע ולעדכן בהתאם. גם להפוך מסגור לפתוח. מתייג כאן את משתמש:Gilgamesh שחיפש לזה בזמנו פיתרון. צריך להוסיף לתבנית את המילים "תקציר בלבד" כאשר הערך סגור.
אי אפשר להפוך מסגור לפתוח בלי להפעיל לוגיקה מסובכת מאוד שחורגת מקונטקסט הדיון הנוכחי.
הסבר. לא יחזור איזה סטטוס תקין, משמע אפשר להפוך?
קישורים לאנציקלופדיה ynet יכולים להופיע בשתי צורות, נקרא להן צורה פתוחה (freeyaan) וצורה סגורה (preyaan). קישור בצורה סגורה תמיד יוביל לערך סגור. קישור בצורה פתוחה יוביל לעיתים לערך פתוח ולעיתים לערך סגור. במונחי תבניות: לתבנית {{אנציקלופדיה ynet}} יש פרמטר אופציונלי שנקרא "קוד לכניסה חינם" - כאשר הוא אינו מופיע, הערך יהיה סגור. לפעמים הפרמטר מופיע והערך בכל זאת סגור.
בהנתן קישור מתוך ערך בוויקיפדיה, קיימות ארבע אפשרויות:
- הקישור הוא בצורה פתוחה, והערך שאליו הוא מוביל פתוח - זה מקרה שאין צורך לטפל בו.
- הקישור הוא בצורה סגורה, והערך שאליו הוא מוביל סגור - מקרה זה אינו דורש טיפול טכני (לדעתי צריך להסיר קישורים כאלה, אבל זה עניין לדיון אחר שאין לי מוטיבציה לקיים).
- הקישור הוא בצורה פתוחה, אבל הערך שאליו הוא מוביל סגור - את המקרה הזה אפשר לזהות. זיהוי: הבוט יקבל מהשרת סטטוס 301. הטיפול המוצע: הבוט יחליף את הקישור מהצורה הפתוחה, לקישור מתאים בצורה הסגורה. יגאל ילמד את תבנית {{אנציקלופדיה ynet}} להבדיל בין קישורים בצורה פתוחה לקישורים בצורה סגורה ולהציג טקסט בהתאם.
- הקישור הוא בצורה סגורה, אבל קיים קישור בצורה פתוחה שמאפשר לראות את הערך במלואו. למיטב הבנתי אין דרך טכנית להבדיל אפשרות 4 לאפשרות 2. קח למשל את הערך הפתוח אלברט אינשטיין והשווה אותו לערך הסגור אלברט אינשטיין. בגרסה הסגורה אין אינדיקציה לכך שקיימת גם גרסה פתוחה.
לשאלות שנשאלתי, כן, זה בסדר גמור. ומה שרציתי לעשות זה כבר לא רלוונטי ברגע שיש דרך יותר פשוטה.
תומר, אני לא ביקשתי למצוא ערך אחר חליפי! מה שאמרתי הוא ש-YNET פותחים וסוגרים מתי שבא להם. אז נניח שהבוט זיהה את נייר כסגור. הוא רק מוסיף בתבנית להצגה אינדיקציה שהערך סגור ויופיעו המילים "תמצית בלבד". הוא אינו משנה את הקישור עצמו. בעוד שבוע הבוט רץ והקישור עדיין סגור, לא קורה כלום. בעוד שבועיים הם פותחים ועכשיו במקום לקבל 301, אנו מקבלים קוד תקין. כל מה שהוא עושה זה לשנות שוב את הפרמטר בתבנית, והתצוגה תחזור להיות התצוגה הרגילה. זה נראה לי ישים וקל. מה שיש גרסה פתוחה במציאות בעוד שבערך יש גרסה סגורה, יחכה עד שמשתמש ימצא את הגרסה הפתוחה ויעדכן בערך.
מסיבה זו אין למחוק את הקישורים הסגורים כי מחר הם עשויים להפתח. יתרה מזו, אני מבין שאם אני פונה לערך עם הקישור הפתוח, המנגנון של YNET יפנה אותי לסגור. אם כן, הבה נריץ בוט התחלתי שמתקן את כולם לפתוח. לא יקרה שום נזק. הבוט התקופתי רק ישנה את האינדיקציה בתבנית סגור / פתוח.
מה שאני אומר הוא שאי-אפשר לשנות מ"סגור" ל"פתוח" מטעמי תורת האינפורמציה. ב-URL של הלינק הפתוח יש יותר מידע מאשר ב-URL של הלינק הסגור שאין לנו דרך להשיג. לגבי לא לשנות את הלינק - אני מבין את ההצעה, אבל אני מהמר שכשערך עובר את המהלך פתוח-סגור-פתוח ה"מפתח" שלו (המידע העודף שיש ב-URL) משתנה. בכל מקרה, לא מזיק להשאיר אותם "פתוח-בכאילו" - צריך להוסיף פרמטר לתבנית ושהבוט של מתניה יעדכן את הפרמטר הזה.
משהו שחשבתי עליו עכשיו, אולי ל-Lua יש אפשרות לקבל סטטוסי HTML מאתרי אינטרנט אחרים. אני די בטוח שכשפת תכנות היא יכולה, אבל אני מניח שבוויקיפדיה משתמשים באיזושהי גרסה מנוונת שלה מטעמי יעילות ואבטחה. עברתי קצת על Extension:Scribunto/Lua reference manualולא מצאתי דרך, אבל זה נשמע כמו משהו שימושי לכל אתרי הוויקי שיחסוך מלא הרצות של בוטים.
אתה לא צריך את המנואל הזה. אתה צריך למצוא הרחבה מתאימה שתומכת בלואה.
הרחבה של מה? לואה היא שפת תכנות שלמה טיורינג, בטוח שיש לה ספרייה שעושה את זה. השאלה היא האם התקינו/יתקינו את הספרייה הזו על שרתי ה-prod של ויקיפדיה.
אמרת בדיוק את מה שאני אמרתי, רק במילים אחרות
בדקתי במנואל כדי לראות אם אולי אחת הספריות שכבר הותקנו כוללת פונקציונליות כזו.
ו?