• 请不要在回答技术问题时复制粘贴 AI 生成的内容
horou
V2EX  ›  程序员

如何判断同局域网下手机是否在线

  •  
  •   horou · May 8, 2023 · 4667 views
    This topic created in 1276 days ago, the information mentioned may be changed or developed.

    在拥有手机局域网 ip 的情况下我想要判断同局域网下手机是否还处于连接 wifi 中,应该如何做

    目前的做法是每隔一段时间 ping 一下手机的 ip ,但是有个问题是,部分手机息屏后就 ping 不通了,会超时,如何解决这个问题,或者有其他的替代方案没

    Supplement 1  ·  May 8, 2023

    很多v友询问我这边对设备在线的定义,可能我表达的不是很清楚,我这里统一回复一下

    我这边的需求对设备在线的定义是:设备如果是一直连着路由器的wifi,就认为是在线,如果设备离开wifi范围,或者设备关机,切换网络导致wifi断开了,就代表设备是离线状态。

    31 replies  •  2023-05-09 08:44:32 +08:00
    dxgfalcongbit
    dxgfalcongbit
    May 8, 2023 via Android
    1
    我是在路由器里查看当前在线设备
    Puteulanus
    Puteulanus
    May 8, 2023
    2
    淘宝有卖蓝牙探针设备的,不过有点贵好像
    uplee
    uplee
    May 8, 2023
    3
    以前简单搞过,记录手机的 MAC 地址,然后查局域网在线设备
    chenxytw
    chenxytw
    May 8, 2023
    4
    一个侧信道思路(
    很多路由器都有的已连接设备列表 api 。
    brader
    brader
    May 8, 2023
    5
    部分手机息屏后就 ping 不通了,会超时。
    其实这个没问题的吧,我手机就会,我观察过路由器后台的在线设备列表,其实手机息屏后,设备列表就没有手机了,说明下线了,没问题的
    horou
    horou
    OP
    May 8, 2023
    6
    @uplee 查局域网在线设备这一步是怎么做的,还有就是我只能拿到手机的 ip 地址,没法拿到手机的 mac
    DCELL
    DCELL
    May 8, 2023
    7
    局域网广播?
    wegfdhsak
    wegfdhsak
    May 8, 2023 via iPhone
    8
    扫描一下不就好了?
    horou
    horou
    OP
    May 8, 2023
    9
    @chenxytw 想实现一个通用的做法,用路由器自带的 api ,不同厂商的路由器 api 应该不一致吧
    horou
    horou
    OP
    May 8, 2023
    10
    @wegfdhsak 没搞过...,应该用什么方式扫描呢
    yu13n
    yu13n
    May 8, 2023
    11
    arp 扫描?
    nigelboy
    nigelboy
    May 8, 2023
    12
    promethous 有个黑盒探测的插件,通过 ping 或者端口探测设备是否在线
    proxytoworld
    proxytoworld
    May 8, 2023
    13
    我怎么感觉你这是灰产
    uplee
    uplee
    May 8, 2023
    14
    @horou 我当时是抓的路由器在线界面,你可以试试用命令,比如 win 下的 arp -a
    horou
    horou
    OP
    May 8, 2023
    15
    @proxytoworld 不是灰产...功能实现的是通过 ip 绑定设备,如果设备离线就解除绑定,目前就差一个设备在线的判断
    Andim
    Andim
    May 8, 2023 via iPhone
    16
    iOS 上有 HE Network Tools 可以查看 arp NDP
    zbatman
    zbatman
    May 8, 2023
    17
    打开手机屏幕,看一下有没有 wifi 图标
    debuggerx
    debuggerx
    May 8, 2023
    18
    mDNS/DNS-SD
    greatbody
    greatbody
    May 8, 2023
    19
    @brader 同意你的观点。OP 最好解释下自己对于手机在线的定义,否则我认为 @brader 这个回答已经能解答你的问题了。
    mk0114
    mk0114
    May 8, 2023
    20
    ping 不通就是离线,息屏也是离线,没毛病。
    565656
    565656
    May 8, 2023
    21
    ios 自带私密 mac 地址,导致每一次链接 wifu 后 ip 都会变,要关下
    minibear2021
    minibear2021
    May 8, 2023❤️1
    22
    op 如果可以给“在线”做个定义,应该就会清晰很多。比如息屏 ping 不通了,这个算在线还是不在线?如果持续 30 分钟都 ping 不通,算在线还是不在线?这个定义清晰了,op 的问题应该就迎刃而解了吧
    lovelylain
    lovelylain
    May 8, 2023
    23
    路由器 arp 表,设备要能上网得过路由器,过了路由器就会刷新 arp 表,所以路由器 arp 表是最靠谱的。
    yufeng0681
    yufeng0681
    May 8, 2023
    24
    原始需求并没有讲到点子上。
    手机设备下线,IP 解除绑定,这个场景的描述都不全。
    手机不在局域网了,ip 自然就不用了,路由器自己有算法老化,让网络其他设备使用 ip 地址。
    你做的服务为何需要知道手机的 ip 地址?
    ochatokori
    ochatokori
    May 8, 2023 via Android
    25
    查 iptables 看看这台机器有没有流量出来,几乎没有手机没有系统级长链接
    dabang007
    dabang007
    May 8, 2023
    26
    这个最简单用 ESP8266 就可以做(前提是 2.4G Wifi),定期看手机数据是否有收发,配合老化算法
    miyuki
    miyuki
    May 8, 2023
    27
    ping 主机名?
    mohumohu
    mohumohu
    May 8, 2023
    28
    homeassint 自带插件就有这功能,是用的 Nmap Tracker
    mgrddsj
    mgrddsj
    May 9, 2023
    29
    其实“部分手机熄屏后就 ping 不通了”有可能是设备锁屏后会断开 WiFi 来省电导致的。

    如果是 Android 手机:

    部分手机在设置 - WiFi - 高级 - “在休眠状态下保持 WLAN 网络连接” - 始终,即可保持熄屏后保持 WiFi 连接。

    Google 似乎在某个版本的 Android 里移除了这个选项。对于那些没有这个选项的设备,可以通过 adb 命令更改:

    adb shell settings put global wifi_sleep_policy 2

    其中,0 = 永不,1 = 仅充电时,2 = 始终.
    lskjdfgl
    lskjdfgl
    May 9, 2023
    30
    @uplee 判断 mac 会有问题,现在的设备大部分都是随机 mac
    wangtian2020
    wangtian2020
    May 9, 2023
    31
    像小米路由器管理后台有在线设备列表的,模拟请求借路由器的管理 web 的 API 就好了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5012 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 00:13 · PVG 08:13 · LAX 16:13 · JFK 19:13
    ♥ Do have faith in what you're doing.