rateltalk
V2EX  ›  问与答

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

  •  
  •   rateltalk · Sep 21, 2023 · 1562 views
    This topic created in 977 days ago, the information mentioned may be changed or developed.
    我想将本地公网 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 replies    2023-09-21 19:08:52 +08:00
    aa702429162
        1
    aa702429162  
       Sep 21, 2023
    curl ip.sb
    rateltalk
        2
    rateltalk  
    OP
       Sep 21, 2023
    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  
       Sep 21, 2023
    参考一下 DDNS-GO ?
    ysc3839
        4
    ysc3839  
       Sep 21, 2023 via Android
    被别人访问了这个接口吧?别用 http ,同时加上鉴权
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5352 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 09:33 · PVG 17:33 · LAX 02:33 · JFK 05:33
    ♥ Do have faith in what you're doing.