3

How do I know visitor's MAC address on linux hosting (nginx)?

From ethernet user.

Thanks.

4

5 に答える 5

8

PHP を介してそれを取得することはできません。

ネットワーク プロトコルはスタックで使用されます。HTTP 通信を行う場合、Web サーバーは高レベルの通信を行う HTTP プロトコルを使用します。このプロトコルは、TCP プロトコル (ストリームのような接続とポート番号を提供する) の上に実装され、IP プロトコル (識別用の IP アドレスを提供する v4 または v6) の上に実装されます。ターンは、イーサネット プロトコルの上に実装されます。

イーサネット プロトコルは、使用する必要があるプロトコルです。送信元 MAC アドレスと宛先 MAC アドレスの両方があります。しかし、最も残念なことに、それには多くの問題があります。

まず、それが伝えるデータにアクセスするのはおそらく難しいでしょう。私が「おそらく」と言うのは、それを行う方法につまずいたことがないからです。

次に、クライアントがサイトにアクセスしたときにクライアントのルーター アドレスを取得するのと同じように、イーサネット レベルでクライアントのルーター MAC アドレスを取得します。ルーターを通過しない限り (インターネットの他の部分にデータを中継するルーターがたくさんあるため、ルーターが干渉することなくサーバーがクライアントマシンに直接配線されている場合にのみ発生します)、受け取る MAC アドレスがクライアントのものになる可能性はありません。

第 3 に、Apache はそのデータにアクセスしようとしません。また、PHP は Apache が提供するネットワーク環境に「サンドボックス化」されているため、イーサネット プロトコルに戻ることはできません。

そのため、Web サイトや PHP から訪問者の MAC アドレスにアクセスすることはできません。

編集あなたの質問からPHPの部分を取り出したようです。明らかに、最後のポイントはもう成り立ちません。

于 2010-11-18T23:05:08.250 に答える
3

より一般的な質問はこれです。PHP で動作する必要があるのは (ここでは、Web サーバー上で実行されている PHP であると想定しています) すべてが HTTP 要求であるため、MAC アドレスを取得することはできません。それには、訪問者側で何かを実行する必要があります。

于 2010-11-18T23:00:00.373 に答える
3

httpに含まれていないphpではそれを取得できません

于 2010-11-18T22:58:39.140 に答える
1

これはうまくいかないかもしれません。LAN クライアントでは動作することはわかっていますが、外部クライアントでは正しくない可能性があります。私は自分のネットワークについてあまり詳しくありませんが、試してみる価値はありますか?

Windows または Linux で arp -a コマンドを実行すると、arp レコードが出力され、これを解析して mac 用に解析できます。

それ以外は、私が知る限り、apache (およびそのため php) は、その環境変数で mac アドレスを提供するだけではありません。

*編集: 申し訳ありませんが、動作しません...より良いユーティリティは arping ですが、ルーターの mac を提供するだけです。

これを行う場合、クライアントはサーバーに直接接続する必要があり、その間にルーターはありません...

ただし、その場合は arping が機能します... より良いツールはわかりませんが、MAC アドレスだけに対して (ルートで) ping を実行するのは少し無駄に思えます。

于 2010-11-18T23:02:59.733 に答える
0

MACアドレスは、私が正しい場合にのみネットワークプロバイダーに表示されます(たとえば、インターネットホストはルーターのMACアドレスを見ることができます)。phpで取得できるとは思わないでください。

于 2010-11-18T22:59:19.227 に答える