سؤال

كيف أعرف عنوان MAC الخاص بالزوار على Linux Hosting (NGINX)؟

من مستخدم Ethernet.

شكرًا.

هل كانت مفيدة؟

المحلول

لا يمكنك الحصول على ذلك من خلال PHP.

يتم استخدام بروتوكول الشبكات في مكدس. عند القيام بـ HTTP Communications ، يستخدم خادم الويب الخاص بك بروتوكول HTTP ، المسؤول عن الاتصالات عالية المستوى. يتم تنفيذ هذا البروتوكول في الجزء العلوي من بروتوكول TCP (الذي يجلب اتصالات تشبه الدفق وأرقام المنافذ) ، والتي يتم تنفيذها بدورها في الجزء العلوي من بروتوكول IP (V4 أو V6 ، والتي تجلب عناوين IP لتحديد الهوية) ، والتي في يتم تنفيذ المنعطف في الجزء العلوي من بروتوكول Ethernet.

بروتوكول Ethernet هو الذي ستحتاج إلى العمل معه. يحتوي على كل من عنوان MAC المصدر وعنوان MAC الوجهة. ومع ذلك ، للأسف ، هناك الكثير من المشاكل معها.

أولاً ، من الصعب الوصول إلى البيانات التي تنقلها: أقول "ربما" لأنني لم أعثر أبدًا على كيفية القيام بذلك.

ثانياً ، مثلما تحصل على عنوان جهاز التوجيه الخاص بعميلك عند الوصول إلى موقعك ، ستحصل على عنوان MAC الخاص بعملك على مستوى Ethernet. ما لم يكنوا يعبرون أي جهاز توجيه (والذي لن يحدث إلا إذا كان الخادم الخاص بك قد تم سلكه مباشرة إلى جهاز العميل الخاص بك دون أي جهاز توجيه يتدخل ، لأن هناك الكثير من أجهزة التوجيه الموجودة هناك تنقل بيانات إلى أجزاء أخرى من الإنترنت) ، هناك لا توجد فرصة لأن يكون عنوان MAC الذي تتلقاه سيكون عميلك.

ثالثًا ، لن يحاول أباتشي الوصول إلى تلك البيانات أبدًا. ونظرًا لأن PHP "Sandboxed" في بيئة الشبكة التي يعطيها Apache ، فلا توجد طريقة يمكنك من خلالها العودة إلى بروتوكول Ethernet.

لذا فإن الوصول إلى عنوان MAC لزائر من موقع ويب ، من PHP ، غير ممكن.

تعديل يبدو أنك أخرجت جزء PHP من سؤالك. من الواضح أن النقطة الأخيرة لن تقف بعد الآن.

نصائح أخرى

لا يمكنك الحصول على ذلك مع PHP غير مدرج في HTTP

السؤال الأكثر عمومية هل هذا واحد. نظرًا لأن جميع PHP يجب أن تعمل معها (أفترض أن هذا هو PHP يعمل على خادم الويب الخاص بك ، هنا) هو طلب HTTP ، فلن تتمكن من الحصول على عنوان MAC. يتطلب ذلك شيئًا يعمل على جانب الزائر.

هذا قد ، أو قد لا يعمل. أعلم أنه سيعمل على عملاء LAN ، ولكن للعملاء الخارجيين ، قد يكون ذلك غير صحيح. لا أعرف شبكتي بشكل مفرط ، لكن الأمر يستحق تسديدة بشكل صحيح؟

إذا قمت بتنفيذ الأمر ARP -A على Windows أو Linux ، فسيقوم بطباعة سجلات ARP الخاصة بك ، والتي يمكنك بعد ذلك تحليل Mac.

بخلاف ذلك ، على حد علمي ، فإن Apache (وهكذا بالنسبة لـ PHP) لا يعطي عناوين Mac فقط في Env Vars.

*تم تحريره: آسف ، لن ينجح هذا ... كلما كان الأداة المساعدة أفضل ، سوف يمنحك جهاز Mac لجهاز التوجيه الخاص بك فقط.

إذا كنت ترغب في القيام بذلك ، فسوف يحتاج العملاء إلى الاتصال مباشرة بخادمك ، مع عدم وجود جهاز توجيه بين ...

ومع ذلك ، إذا كان هذا هو الحال ، فسيعمل Arping ... لا أعرف أداة أفضل ، لكن يبدو أنه من المقلق بعض الشيء أن أقوم بعمل Ping (في الجذر) لعنوان MAC فقط.

يكون عنوان MAC مرئيًا فقط لمزود الشبكة إذا كنت صحيحًا (يمكن لمضيف الإنترنت الخاص بك رؤية عنوان MAC الخاص بجهاز التوجيه الخاص بك على سبيل المثال) ، لا تعتقد أنه يمكنك الحصول عليه مع PHP.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top