V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
HankLu
V2EX  ›  Python

有没有不需要访问网络即可获取本机外网 IP 地址的方法

  •  
  •   HankLu · 5 天前 · 2193 次点击
    22 条回复    2021-05-05 11:07:44 +08:00
    Rxianbei
        1
    Rxianbei   5 天前 via Android
    一般的家庭网络是通过路由器在连接光猫拨号上网的,这是没有办法的
    learningman
        2
    learningman   5 天前 via Android   ❤️ 2
    你不知道上面套了几层 NAT,NAT 后无法感知
    raysonx
        3
    raysonx   5 天前
    不能,因为“外网 IP”不属于你。
    imn1
        4
    imn1   5 天前
    以前的旧路由器,在某个页面是显示了外网 ip 的,以前就靠内网读取这个页面
    但新路由没有这个,作罢了
    HankLu
        5
    HankLu   5 天前
    现在有个很麻烦的、需要白名单才能访问的 url,我需要第一步访问网络获取本地 ip,第二步通过带 key 的 api 把 ip 添加到白名单,第三步才能访问这个 url 。
    什么人才才能想出这个绝妙的成倍增加工作量的逻辑啊。大婶们我怎么优化我的三部曲以尽量降低出错后面的处理?
    MakeItGreat
        6
    MakeItGreat   5 天前 via Android
    中转
    HankLu
        7
    HankLu   5 天前
    @MakeItGreat 大神,我这个 url 就是个中转站(带里)
    yanqiyu
        8
    yanqiyu   5 天前
    大概不行,除非...
    1) 你的机器 ip 就是外网 ip
    2) 你的网关等设备提供查询公网 ip 的接口
    或者想办法让白名单放行某个通用的 ip 地址查询 api
    caliburn1994
        9
    caliburn1994   5 天前
    为什么不访问外部网络?访问网络的话

    ```
    curl -s ipinfo.io/ip
    ```
    ysc3839
        10
    ysc3839   5 天前 via Android
    没经过 NAT 转换的话,可以,否则不行。
    kennylam777
        11
    kennylam777   5 天前
    家用路由器還有 upnp 一招, BitTorrent clients, PlayStation 及 Xbox 等等都會用到
    gjquoiai
        12
    gjquoiai   5 天前
    1. 自建机房的话应该是固定的一组出口 ip
    2. 公有云一般都提供了以编程方式查询实例出口 ip 的方法
    HankLu
        13
    HankLu   5 天前   ❤️ 1
    已解决,我这个没有路由转接,直接用 IPs = socket.gethostbyname_ex(socket.gethostname())[-1]获取到了,这一下降低了我一半的工作量
    ClericPy
        14
    ClericPy   5 天前
    如果实在懒, curl http://httpbin.org/get 算了
    ClericPy
        15
    ClericPy   5 天前
    抱歉没注意 "不需要访问网络"... 溜了
    dorothyREN
        16
    dorothyREN   5 天前
    直接 tracert 判断出口 IP 就行
    opengps
        17
    opengps   5 天前
    这个真没有,因为你并不知道你的最终公网出口具体在什么位置,如果确定了出口位置,那么可以去这个位置查一下公网 ip
    opengps
        18
    opengps   5 天前
    另外还有个问题,公网的出入口,有可能不唯一
    Jooooooooo
        19
    Jooooooooo   5 天前
    好像是你没上地铁得知道自己会坐哪, 除非位置是提前分配的.
    no1xsyzy
        20
    no1xsyzy   5 天前
    也可以尝试要个公网 IP,那样的话路由器可能有页面能找到 IP = 公网 IP
    但也可能要不到。
    出口不唯一的话甚至你联网获取了 IP 都不一定对
    ik
        21
    ik   5 天前 via iPhone
    @HankLu #直接访问这个带 key 的 api,后端获得源地址后添加白名单呢?
    whwq2012
        22
    whwq2012   4 天前
    向运营商购买专线,配置固定 IP
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3623 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 01:51 · PVG 09:51 · LAX 18:51 · JFK 21:51
    ♥ Do have faith in what you're doing.