ABA


"איך למנוע scraping?"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #20916 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 20916
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   00:29   08.10.14   
אל הפורום  
  איך למנוע scraping?  
 
   סורקים את האתר שלי באופן די קבוע, אפשרי לתת באנים לאיפי לפי חיפושים\טעינות דפים וכו' אבל אפשר לעקוף את זה די בקלות.

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

כרגע הטקסט בתוך <span> ככה שדי בקלות אפשר למשוך את המידע.

אשמח לרעיונות יצירתיים, תודה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  זה תלוי מה אתה מנסה למנוע ומי סורק אותך.. משה הלולן 08.10.14 01:19 1
     תודה, ננסה להקשות עליהם :) Bonito  08.10.14 13:52 4
         איזה מערכת? במה מדובר?(באופן כללי) משה הלולן 08.10.14 15:13 7
             השוואת\עדכון מחירים שמשתנים לעיתים קרובות. Bonito  08.10.14 16:30 8
  אין שום דרך למנוע את זה. Net_Boy  08.10.14 04:17 2
     כן נראה ככה Bonito  08.10.14 13:52 5
  תן עוד מידע על האתר שלך.. VeNom  08.10.14 07:21 3
     בסופו של יום די קל לעקוף captcha, לא חסר שירותים כמו DBC וכו'. Bonito  08.10.14 13:53 6
         כל דבר אפשר לעקוף VeNom  09.10.14 01:22 9
  כל מה שמשתמש יכול לעשות ידנית גם רובוט יכול, אבל dvir8 12.10.14 16:59 10
     הכל אפשרי אם מספיק מנסים ליל קיץ 13.10.14 04:41 11
         אפשרי, הכל שאלה עד כמה זה שווה, מה גם שפתרון טוב כנראה יפגע טיפה בחווית המשתמש Bonito  13.10.14 16:53 12
             אין באמת פתרון טוב ליל קיץ 13.10.14 23:25 13
  רעיון קטן שהייתי מנסה: meni181818 14.10.14 00:22 14
  העצות שלי אלייך ליל קיץ 14.10.14 02:46 15

       
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק
   01:19   08.10.14   
אל הפורום  
  1. זה תלוי מה אתה מנסה למנוע ומי סורק אותך..  
בתגובה להודעה מספר 0
 
   אם זה מישהו שסורק אותך ספציפית כי יש לו עניין בך או איזה בוט שסורק ים אתרים אוטומטית.

במקרה הראשון כל עוד שהדף לא מוגן רק למשתמשים רשומים לדוגמה אין לך אפשרות.

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

תנסה גם בעזרת הקובץ robots.txt למנוע לכולם חוץ מלסורקים המוכרים(כמובן שזה שוב תלוי מי סורק אותך ולצורך מה)

והדרך האחרונה: מה אכפת לך? אם אין לך סיבה באמת באמת טובה אז אל תנסה

תסתכל כאן גם: http://stackoverflow.com/questions/3161548/how-do-i-prevent-site-scraping התשובה הראשונה אחלה רעיון


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   13:52   08.10.14   
אל הפורום  
  4. תודה, ננסה להקשות עליהם :)  
בתגובה להודעה מספר 1
 
   בקשר לשאלה שלך, השקעתי ים זמן וכסף בבנייה של המערכת\שרתים שלי, לא מעוניין לחלק אותו לכל דורש


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
משה הלולן לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 11.6.13
4818 הודעות, 8 פידבק
   15:13   08.10.14   
אל הפורום  
  7. איזה מערכת? במה מדובר?(באופן כללי)  
בתגובה להודעה מספר 4
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   16:30   08.10.14   
אל הפורום  
  8. השוואת\עדכון מחירים שמשתנים לעיתים קרובות.  
בתגובה להודעה מספר 7
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   04:17   08.10.14   
אל הפורום  
  2. אין שום דרך למנוע את זה.  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   13:52   08.10.14   
אל הפורום  
  5. כן נראה ככה  
בתגובה להודעה מספר 2
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   07:21   08.10.14   
אל הפורום  
  3. תן עוד מידע על האתר שלך..  
בתגובה להודעה מספר 0
 
   אופציה טובה לאתר שיש בו הרבה טפסים היא יצירת captcha שתקשה על scrapping..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   13:53   08.10.14   
אל הפורום  
  6. בסופו של יום די קל לעקוף captcha, לא חסר שירותים כמו DBC וכו'.  
בתגובה להודעה מספר 3
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
VeNom  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 7.6.02
7922 הודעות, 1 פידבק
   01:22   09.10.14   
אל הפורום  
  9. כל דבר אפשר לעקוף  
בתגובה להודעה מספר 6
 
   הרי SCRAPING בגדול אומר "אני יכול לעשות מה שהיוזר יכול לעשות" - זה תלוי עד כמה תקשה עליי.
השאלה היא מי עושה לך SCRAPING ולאיזה מטרות. אם זה סתם איזה חובבן שרוכב על האתר שלך לטובת איסוף מידע אני די בטוח ש CAPTCHA תשנה לו את התוכניות.
DBC טוב עולה כסף ומצריך פיתוח נוסף של התממשקות.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
dvir8
חבר מתאריך 13.5.02
5929 הודעות
   16:59   12.10.14   
אל הפורום  
  10. כל מה שמשתמש יכול לעשות ידנית גם רובוט יכול, אבל  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 12.10.14 בשעה 17:04 בברכה, dvir8
 
כן יש לך את היכולת לזהות מי משתמש סביר ומי לא.
כלומר, אם הרובוט שלך מבצע סריקות רצופות יש דרך לעלות עליו לפי מספר ה Request הלא סביר שמתקבל לעומת משתמש שיושב עם עכבר ולוחץ
על לינקים. אבל אתה צריך לפתח מיני מערכת בשביל זה.

ואם הוא חכם והוא בונה Crawler סובלני(כזה שמבצע את השאיבה מדי יום / פעם ביום) אז אין מצב לעלות עליו.

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק
   04:41   13.10.14   
אל הפורום  
  11. הכל אפשרי אם מספיק מנסים  
בתגובה להודעה מספר 10
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Bonito 
חבר מתאריך 22.9.09
14859 הודעות
   16:53   13.10.14   
אל הפורום  
  12. אפשרי, הכל שאלה עד כמה זה שווה, מה גם שפתרון טוב כנראה יפגע טיפה בחווית המשתמש  
בתגובה להודעה מספר 11
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק
   23:25   13.10.14   
אל הפורום  
  13. אין באמת פתרון טוב  
בתגובה להודעה מספר 12
 
   ערכתי לאחרונה בתאריך 13.10.14 בשעה 23:37 בברכה, ליל קיץ
 
בניתי לא מעט קרולרים בשנים האחרונות למטרות שונות ומשונות, כאלה שעובדים בכל צורה שאתה רק יכול לחשוב עליה.

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

א) ליצור צד לקוח מסובך
ב) ליצור צד שרת מסובך
ג) שניהם ביחד

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

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

הדרך הכי (הכי) קיצונית היא ליצור image output של התכנים שאתה מעוניין להסתיר, וגם אותם לערבל (כמו ב captcha),
אבל כמו שכתבת - זה יהפוך את האתר שלך לזבל עיצובי.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
meni181818 לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 12.12.13
1032 הודעות, 1 פידבק
   00:22   14.10.14   
אל הפורום  
  14. רעיון קטן שהייתי מנסה:  
בתגובה להודעה מספר 0
 
   להכניס את המידע באופן רנדומאלי למספר אלמנטים משתנה למשל בהצגה ראשונה של הדף התוכן יהיה בתוך <span> אחד, בטעינה מחדש הוא יהיה child בתוך 7 אלמנטים.
כמובן שאפשר גם להכניס מידע מוטעה שמוסתר ב-CSS בתוך אלמנטים עם אותו class כמו של המידע האמיתי.
אולי זה עלול לפגוע בקידום.

דבר נוסף שכבר הציעו פה זה לטעון את התוכן ב-JS, וכתבו שזה פוגע בקידום.
יש פתרונות לזה, וכדאי שבדוק מה עושים אתרי SPA וכדומה.

http://www.files.org.il/BRPortalStorage/a/1/40/71/34-3Y373LGhbD.gif


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ליל קיץ לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 14.2.10
10048 הודעות, 7 פידבק
   02:46   14.10.14   
אל הפורום  
  15. העצות שלי אלייך  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 14.10.14 בשעה 03:06 בברכה, ליל קיץ
 
אין באמת דרך שתוכל למנוע ב-100% את השירות שירצה לסרוק אותך,
אבל כן תוכל לעשות לו חיים מאוד קשים (עד רמה שהוא יכול להתייאש).
חשבתי כל היום על מה היה גורם לי לירצות לירות לעצמי בראש כשהייתי מנסה לסרוק אותך באופן אוטומי, להלן התשובות:

1) ליצור תוכן צד לקוח מעורבל

נתנו פה אחלה טיפים למעלה, ביניהם הצגת תוכן שנשאב מתוך קובץ css. לא בלתי אפשרי לעקיפה, אבל כן יכול להיות קצת כאב ראש ראשוני.

2) CSRF TOKEN

תעביר את השירותים שמספקים את המידע שלך לאתר למקום חיצוני (REST JSON SERVICE), שיהיה ניתן לגשת ממנו רק עם valid token, שיהיה נניח תקף רק לשעה.
https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)_Prevention_Cheat_Sheet

שוב, גם את זה אפשר לעקוף ע״י כך שהקרולר יטען מחדש את העמוד המקורי שלך כשהוא לא valid יותר וישיג טוקן חדש.
יהיה לך קל ככה להשיג את ה ip של זה ששואב ממך ולחסום אותו פיזית,
כי סביר שיהיו לו מספר חריג בקשות עם token לא תקף .
אבל שוב - גם את זה אפשר לעקוף ע״י פרוקסי פשוט.

3) גישה למידע רק באמצעות התחברות + שילוב סעיף 2

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

* אתה יכול לנטר בקשות חריגות:
אם למשל משתמש x שואב ממך יותר מדי מידע, אתה יכול פשוט לנתק אותו מהמערכת.
הקוקי של הקרולר כבר לא יהיה תקף והוא יצטרך לבצע login מחדש, כשהוא יגיע ל captcha.. הוא ייתקע. מישהו יצטרך לחבר את הקרולר בצורה ידנית .. וזה באסה.
* אתה יכול לבצע ניתוק אוטומטי של משתמשים כל שעה. שוב, הבוט יגיע לקאפצ׳ה כל שעה וחוזר חלילה לסעיף הקודם.
כן, זה ייפגע בחוויית השימוש באתר. אבל אם אתה פדנט.. לך על זה.
* התחברות לאתר תהיה בעזרת csrf token תקין.
* הרשמה תהיה בעזרת captcha בלבד בשילוב xsrf (סעיף 1), כך שגם אם הבוט ירצה הוא לא יוכל להירשם אוטומטית, מישהו יצטרך לעזור לו.
* דרך יפה למנוע את דרך השגת ה token תהיה על ידו העברתו דרך ה headers למשל, עוד מכשול למתכנת הסקריפט.

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

5) במידה ואתה לא יכול להשתמש (משום מה) בשירות REST חיצוני לקבל דטא מהשרת,
אתה יכול כמו שאמרו לבנות איזשהו אלגוריתם שמערבל את המידע ב source של ה html ומציג אותו מסודר רק ע״י רינדור js. עוד פעם, לא משהו שאי אפשר להתגבר עליו בעזרת קצת תושייה (ו-phantomjs).

6) - בדיקת referer. לבדוק שהריפרר הוא אכן מהדומיין שלך. שוב, לא שאי אפשר לעקוף את זה, זה לוקח בדיוק מאייה וחצי, אבל זה עוד קש שאולי ישבור את גב הגמל.

7) עבודה אל נתונים מול POST בלבד, או אפילו לנצל מבני בקשות אחרות (PUT או DELETE למשל).
גם את זה אני אעקוף בפחות זמן מאשר ייקח לי לעשות אפצ׳י, אבל שוב.. אנחנו רוצים לשבור את הגמל וזה עוד קש.

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

--

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

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


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net