PHP - 可以找到用户是不是从路由器后面浏览并获取路由器信息

Posted

技术标签:

【中文标题】PHP - 可以找到用户是不是从路由器后面浏览并获取路由器信息【英文标题】:PHP - Is possible to find if user is browsing from beind a Router and get Router InfoPHP - 可以找到用户是否从路由器后面浏览并获取路由器信息 【发布时间】:2011-02-03 14:04:59 【问题描述】:

大家好。

我认为只使用 php 是不可能的,但只是为了确定。

PHP 是否可以知道 用户正在从后面访问网络 Router? 如果是的话,我怎样才能得到一些 有关该路由器的信息,例如: 路由器名称、品牌、序列号…… 连接在同一网络中的用户。 PHP也能找到本地IP吗 里面的顾客的地址 网络?

几个简单的问题。我还没有找到一个可靠的答案,我很难让一些 PHP 天才告诉我。教我。

感谢您的帮助。

编辑:这个侵犯隐私的问题的动机

我没想到我必须这么说......但我想我会这样做

我正在编写几个函数来获取浏览器首选语言,并根据 IP 找出用户来自哪个国家/地区,从而以正确的语言向访问者提供我的网站内容。

然后我开始想,大多数人都是从路由器后面浏览的,我能查出他们是不是真的吗?


然后我突然想到做一个简单的程序来显示网络详细信息,连接到您网络的人。我的想法是这样做,但基于 Web 应用程序而不是像所有其他此类程序一样基于桌面应用程序。

和大多数开发者一样,我尊重隐私高于一切,所以我有点理解投反对票,我可能会自己投反对票。

如果你因为我奇怪的问题而误判了我,我很抱歉,我无事可做..这些事情只是突然出现在我的头上。

【问题讨论】:

简短回答:不。长答案:不可能。 我认为人们不应该仅仅因为他们不喜欢他所问的含义而对这个问题投反对票。这是一个完全有效的技术问题。 @Chad Birch:我必须再次同意。尤其是如果想学习如何使系统安全或其他什么,则必须知道哪些攻击是可能的以及哪些信息是可用的以便处理它。 如果你想用它进行语言检测,也许你可以找到一些关于谷歌如何解决这个问题的信息。如果他们不关心路由器,我认为您不必这样做;) @Felix:我不喜欢 Google 处理语言检测的方式。它们从您所在国家/地区的语言开始,基于您的 IP(现在将您自己视为不断旅行),而不是您的浏览器首选语言。我首先转到浏览器的首选语言。通常它们是 3,按从 1 到 0.5 的系数排序,即 1 您的首选语言。 【参考方案1】:

首先,您是在谈论查找有关访问您网站的用户的信息吗?请记住,这意味着侵犯了他们的隐私(您可以自己尝试一下;))

PHP 是否可以知道用户是否从路由器后面访问网络?

不,你不能。只有当你知道时,例如你有很多来自一家公司的访客,他们都有相同的 IP 地址,他们可能在路由器后面,但也可能是代理。

如果是,我怎样才能获得有关该路由器的一些信息,例如:

路由器名称、品牌、序列号……

如果您有 IP,您也许可以使用 nmap 等工具发现有关主机的各种信息。您可能能够找到路由器和主机系统的品牌,但绝对不是序列号之类的东西。虽然 nmap 不是 PHP。注意:在某些国家/地区未经许可使用此类工具是非法的。无论如何,未经许可使用此类工具在道德上是有问题的。

连接在同一网络中的用户。

正如我在第一个问题中提到的,如果您有 不同 用户使用 相同 IP 地址,他们可能在同一个网络中。它们也可以在不同的子网络中。无论如何,您无法获取他们的本地 IP 地址。

PHP 还可以在该网络中找到访问者的本地 IP 地址吗?

查看上一个答案。


你看,一切都非常模糊,而且大多基于假设。你无法获得可靠的信息,我很高兴我们还没有完全透明。

一旦我们都使用IPv6,整个故事就不同了。

【讨论】:

通过比较来自同一 IP 的多个会话的 User-Agent 标头,您可能可以检测到许多路由器的存在(如果同一 IP 报告 Mac 浏览器和 Windows Vista 上的另一个,则可能存在 NAT参与)。 代理可以根据 TTL 行为与 NAT 区分开来(与例如 ping 同一个地址相比)。但确定这超出了我怀疑的 PHP 的能力(当然,这取决于 Web 服务器和它提供的用于获取低级数据包信息的任何附加功能)。 @Ben Voigt:好吧,我不得不承认我没有考虑这么详细。但我总是乐于学习新的东西,因为我也对网络安全感兴趣。谢谢你的意见:) @Ben Voigt:很抱歉我对这个主题一无所知,但你听起来对网络有很多了解。你能分享更多你所知道的,特别是关于 TTL(不知道它是什么)行为。谢谢:D TTL 旨在对抗无限路由循环。它是 IP 标头中的一个数字(因此它存在于 TCP、UDP、ICMP 数据包等中)。每个转发数据包的路由器都必须减少 TTL(通常减少 1,但允许减少更多)。当 TTL 达到零时,数据包被丢弃。它用于跟踪路由,因为在许多情况下,丢弃数据包的路由器会将消息发送回发送者。现在,NAT 是一种路由器,它替换源和/或目标地址和端口号,但 TTL 来自原始发送者。【参考方案2】:

我不知道你想做什么,但这让我有点担心。

所以我很高兴(正如你所怀疑的那样)这是不可能的。

您询问的所有详细信息都是本地网络之外的任何人都没有理由需要的信息,如果路由器向全世界广播,这将是一个巨大的安全问题。

【讨论】:

+1 for 但我有点担心...这也是我的第一个想法。 但是,如果您在路由器后面并在智能手机浏览器中输入路由器 IP,您最终会进入路由器管理面板。 @Fábio Antunes:所以?你想说啥?这是路由器的内部 IP,管理面板(希望)只能从本地网络访问。 @Felix:希望你说的是对的,希望你是对的。只需将 Internet IP 输入浏览器,即可从 Internet 访问大多数路由器管理面板。现在考虑到它的大多数所有者甚至没有更改制造商的安全设置。此时您可以访问:85.242.9.184 并在我没有更改安全设置的情况下更改我的 wlan 路由器设置。【参考方案3】:

根据网络协议的设计,这是不可能的。 但是,一些路由器在其管理控制面板中使用 PHP 的特殊版本。

【讨论】:

以上是关于PHP - 可以找到用户是不是从路由器后面浏览并获取路由器信息的主要内容,如果未能解决你的问题,请参考以下文章

获取 geolock 的用户 ip 地址(不是 192.168 地址)

如何如何发送cookie

怎样用手机设置路由器 步骤

在浏览器关闭 PHP/MySQL 时将用户从数据库中注销

如何用手机设置无线路由器

(PHP)如何检测用户的计算机/浏览器是否处于黑暗模式?