V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
s609926202
V2EX  ›  问与答

如何可靠的将本机公网 IP 地址推送到服务端?

  •  
  •   s609926202 · 2023-09-21 11:01:35 +08:00 · 710 次点击
    这是一个创建于 427 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想将本地公网 IP 地址变动实时推送到 API 服务端上,现在是通过.vbs 脚本定时发送请求到 API 服务端:

    ```
    ' 创建 HTTP 请求
    Dim httpRequest
    Set httpRequest = CreateObject("MSXML2.XMLHTTP")

    ' 设置请求 URL 和请求方法
    httpRequest.Open "GET", "http://api.com/syncLocalIP", False

    ' 发送请求
    httpRequest.Send

    ```

    但是有个问题,API 服务端使用的是 ThinkPHP ,通过函数 `get_client_ip` 获取到的 IP 地址偶尔会出现非真实 IP 的地址。

    也通过路由器发送定时请求到 API 服务端获取本机公网 IP ,也会出现这个问题。

    所以如何可靠的获取本机公网 IP 地址呢?
    4 条回复    2023-09-21 19:08:52 +08:00
    aa702429162
        1
    aa702429162  
       2023-09-21 11:02:47 +08:00
    curl ip.sb
    s609926202
        2
    s609926202  
    OP
       2023-09-21 11:03:26 +08:00
    ThinkPHP 函数 `get_client_ip` 如下:
    ```
    function get_client_ip($type = 0,$adv=false) {
    $type = $type ? 1 : 0;
    static $ip = NULL;
    if ($ip !== NULL) return $ip[$type];
    if($adv){
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
    $pos = array_search('unknown',$arr);
    if(false !== $pos) unset($arr[$pos]);
    $ip = trim($arr[0]);
    }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    }elseif (isset($_SERVER['REMOTE_ADDR'])) {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    }elseif (isset($_SERVER['REMOTE_ADDR'])) {
    $ip = $_SERVER['REMOTE_ADDR'];
    }
    // IP 地址合法验证
    $long = sprintf("%u",ip2long($ip));
    $ip = $long ? array($ip, $long) : array('0.0.0.0', 0);
    //$ip = array($ip, $long);
    return $ip[$type];
    }
    ```
    Baymaxbowen
        3
    Baymaxbowen  
       2023-09-21 11:03:50 +08:00
    参考一下 DDNS-GO ?
    ysc3839
        4
    ysc3839  
       2023-09-21 19:08:52 +08:00 via Android
    被别人访问了这个接口吧?别用 http ,同时加上鉴权
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1320 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 17:47 · PVG 01:47 · LAX 09:47 · JFK 12:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.