להשיג האייפי של המבקר באתר
-
תמיד השתמשתי במשתנה הגלובלי SERVER של PHP, ובערך REMOTE_ADDR היה את הכתובת אייפי.
פתאום הגעתי למחשב שגולש על גבי פרוקסי, והPHP מחזיר את האייפי האמיתי של הרשת, ולא מוצא איך להשיג את האייפי של הפרוקסי. זה לא נמצא בשום ערך אחר של המשתנה SERVER.
יצוין שבאתרים שמציגים כתובת אייפי כמו https://netfree.link/ip (סליחה @magicode שאני משתמש בזה שלא על גבי נטפרי...), זה כן מציג את האייפי של הפרוקסי.
גוגל מציע כל מיני פתרונות לקבל האייפי של הפרוקסי, שכולם מבוססות על ערכים אחרים של המשתנה SERVER, אבל הם לא קיימים אצלי.
אשמח לכיוון.
תודה רבה
-
@שואף במקרה כזה הפרוקסיים התקניים מוסיפים את אייפי המקור לכותרת מהלקוח בשם HTTP_X_FORWARDED_FOR. אם כבר יש שמה אייפי (כי זה פרוקסי נוסף), אז מוסיפים קודם פסיק ואז את האייפי החדש וכן הלאה.
הבעיה היא שבעוד שהREMOTE_ADDR הוא עובדתי, הכותרת HTTP_X_FORWARDED_FOR היא כותרת שהלקוח יכול לשלוח ולא דוקא הפרוקסיים שבדרך. ולכן זה בעצם נתון שאי אפשר לסמוך עליו בשביל שום דבר בעל רגישות כל שהיא. -
@dovid מצטער אני לא מבין את דבריך.
אין פה מישהו שמסרב למשהו, יש פה מחשב שלי, שאני נכנס לאתרים של בדיקת אייפי וזה מזהה את האייפי הנכון, אבל כשאני נכנס לאתר פרטי שלי ששמתי שם סקריפט שאמור להחזיר אייפי זה מביא אייפי של הרשת ולא של המחשב.@yossiz בדקתי כמה פעמים, אתה מוזמן ליכנס למחשב שלי ולראות ששני הנתונים נכונים..
-
אני חושב שהשאלה המסובכת מידיי גרמה לבלבול בתשובות והכל.
אני לא מבין למה השואל הביא דוגמאות מאתרים האחרים ולא הבנתי מה הקשר.
להבנתי יש לשואל קוד שאנשים מגיעים אליו דרך פרוקסי. למשל, יש לך apache בפורט 8080 ומגיעים אליו מפרוקסי משרת מסויים, וכל מה שאתה רוצה לדעת מה הכתובת המקורית.
אז התשובה באמת צריכה להיות שזה צריך להגיע מהידר שמוסיף השרת פרוקסי לפני שהוא שולח לשרת הסופי.
כדי למנוע זיוף של זה, א. אפשר להגביל את הapache הסופי שהוא לא "יקבל" את הכותרת HTTP_X_FORWARDED_FOR רק מhosts מהימנים (RemoteIPInternalProxy
), אבל לדעתי לא צריך להגיע לזה במקרה בו פורט 8080 לא פתוח לרשת וכל התעבורה שמגיעה ל 8080 היא רק מהפרוקסי ששולח לשם.מה שכן, במקרה של הגדרות נכונות בapache הסופי, המשתנה REMOTE_ADDR שבתוך SERVER צריך להכיל את הIP של מה שנשלח מהפרוקסי. ולדעתי - זה החלק שחסר לשואל השאלה.
ובשביל זה משתמש עם המוד remote_ip של apache.
@שואף הבנתי אותך נכון? או שהשאלה היא אחרת.
כי אני לא ממש הבנתי למה הבאת לדוגמא את הכתובת https://netfree.link/ip -
אני חושב עכשיו, אולי השאלה שלך על מקרה שבו הלקוח שלך משתמש עם פרוקסי והשרת שלך מקבל את הבקשות דרך הפרוקסי של הלקוח שלך אתה רוצה לדעת מה הכתובת המקורית של הלקוח?
במקרה כזה למה שתוכל להגיע לכתובת המקורית? זה כמו שלקוח מגיע אילך אחרי שימוש בVPN, לא תוכל לראות מה הכתובת המקורית שלו...
אבל מצד שני, כמו שיוסי אמר, קצת לא הגיוני במקרה כזה שאתרים אחרים כן מזההים את הIP המקורי ולא של הפרוקסי.
בכל אופן,
למיטב ידיעתי אם לקוח משתמש בפרוקסי במטרה להעביר את התעבורה שלו דרך פרוקסי - למה שהכתובת המקורית שלו תיחשף? למה שהשרת פרוקסי יוסיף אותה? הוא לא פוגע במה שהוא אמור לעשות - להסתיר את מי שמאחוריו?ובנוסף, הייתי מעלה רעיון שיהפוך את התופעה להגיונית: אולי הפרוקסי הזה מעביר דרכו רק חלק מהתעבורה? איזה הוספת ניתוב ספציפית? כי אחרת מצד אחד אין הגיון שהשרת פרוקסי יוסיף את הכתובת המקורית איפה שהוא בבקשה, ומצד שני אין הגיון שיהיה אפשר להגיע אליה בדרך אחרת.
@שואף כתב בלהשיג האייפי של המבקר באתר:
@WWW מה הכוונה של המחשב? של המודם שלו אני מקבל. אבל אני רוצה את האייפי של הפרוקסי וזה לא מתקבל
אבל מההודעה הזו אני מבין שהבעיה שלך היא שאתה פשוט לא מקבל את הבקשה מהפרוקסי בכלל וזה מה שמדאיג אותך.
אז התשובה לדעתי במקרה הזה שלא מוגדר לך הפרוקסי נכון (בצד לקוח).
המשתנה REMOTE_ADDR הוא לא משתנה שאפשר לשחק איתו. אם השרת שלך מקבל את הפניה מהכתובת של הראוטר הצד לקוח שלך לא העביר את זה לפרוקסי. אין משחקים.תוכל להסביר איך הגדרת את הפרוקסי בצד לקוח? הגדרת socket proxy? או http/s?
-
@שמואל4 אסביר בדיוק את היוזקייס שלי.
יש לי מחשב מסונן עם טקלוק, שמבוסס על פרוקסי.
על המחשב הזה יש תכנה של טלפון וירטואלי שמחובר לשרת הפרטי שלי. רק שהשרת הזה מאובטח עם חומת אש, ואני צריך לאשר את האייפי של המחשב בשרת.
אבל כיוון שהתעבורה עוברת דרך פרוקסי, אני צריך להכניס את האייפי של הפרוקסי בחומת אש, והאייפי הזה משתנה לפעמים.
הכנתי סקריפט קטנטנן שמונח על השרת שלי, וכשהאייפי משתנה אני נכנס לURL של הסקריפט ההוא, וזה פותח את האייפי ממנו קראו לסקריפט, קרי המחשב שלי.
רק שאני שם לב שזה לא פותר את הבעייה, ומתברר שהשרת מקבל את האייפי של המודם שלי ולא של הפרוקסי, והתפלאתי מאוד שהPHP לא מקבל שום אינדיקציה לאייפי של הפרוקסי, וע"ז הבאתי את הלינק של נטפרי וכדומה שהם מקבלים בפשיטות את האייפי הרצוי, של הפרוקסי.לכאורה ברור שהדפדפן שולח את הHEADER כשהוא שולח בקשה לשרת, אבל משום מה ההידר הזה לא מופיע כלל בנתונים שמגיעים לשרת שלי.
@yossiz התארח במחשב שלי ואישר את הבעייה... -
@שואף כתב בלהשיג האייפי של המבקר באתר:
לכאורה ברור שהדפדפן שולח את הHEADER כשהוא שולח בקשה לשרת, אבל משום מה ההידר הזה לא מופיע כלל בנתונים שמגיעים לשרת שלי.
פה הטעות שלך.
אם הפרוקסי מוגדר כמו שצריך על המחשב הבקשה לשרת שלך צריכה להגיע מהכתובת של הפרוקסי - באופן נקי.ככה לפחות מעולם הפרוקסי שאני מכיר במחשבים. תתקנו אותי. לא יודע, נשמע לי מטומטם שפרוקסי במחשב מוסיף הידר ופונה דרך ה gateway הרגיל החוצה.
פרוקסי במחשב לא מוסיף הידרים, הוא פשוט ה gateway לבקשות של המחשב. זה כמו VPN.
ההוספה של ההידרים וכל הדוגמאות פה באה מהעולם של reserve proxy בשרתים. זה לא קיים בפרוקסי רגיל במחשבים.
שוב,
הפרוקסי לא מוגדר כמו שצריך במחשב של הלקוח שלך.
תוכל לומר איך הוא מגדיר את זה? מה מערכת ההפעלה? איך מוגדר הצד לקוח?אבל לא יודע, אולי אני פשוט לא מכיר את הפרוקסי שלך, אדרבה, תסבירו לי אולי יש פרוקסי שעובד בצורה שונה ומשונה ובלי שום הגיון?..
-
@שואף כתב בלהשיג האייפי של המבקר באתר:
רק שאני שם לב שזה לא פותר את הבעייה, ומתברר שהשרת מקבל את האייפי של המודם שלי ולא של הפרוקסי, והתפלאתי מאוד שהPHP לא מקבל שום אינדיקציה לאייפי של הפרוקסי, וע"ז הבאתי את הלינק של נטפרי וכדומה שהם מקבלים בפשיטות את האייפי הרצוי, של הפרוקסי.
ואתה בטוח שאתה מקבל תעבורה דרך הסינון כשאתה ניגש לאתר שלך ולא ישירות?