有没有不需要访问网络即可获取本机外网 IP 地址的方法 - V2EX
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 2021-05-04 19:16:25 +08:00 4744 次点击
    这是一个创建于 1619 天前的主题,其中的信息可能已经有所发展或是发生改变。
    22 条回复    2021-05-05 11:07:44 +08:00
    Rxianbei
        1
    Rxianbei  
       2021-05-04 19:17:25 +08:00 via Android
    一般的家庭网络是通过路由器在连接光猫拨号上网的,这是没有办法的
    learningman
        2
    learningman  
       2021-05-04 19:18:29 +08:00 via Android   2
    你不知道上面套了几层 NAT,NAT 后无法感知
    raysonx
        3
    raysonx  
       2021-05-04 19:20:18 +08:00
    不能,因为“外网 IP”不属于你。
    imn1
        4
    imn1  
       2021-05-04 19:23:45 +08:00
    以前的旧路由器,在某个页面是显示了外网 ip 的,以前就靠内网读取这个页面
    但新路由没有这个,作罢了
    HankLu
        5
    HankLu  
    OP
       2021-05-04 19:29:05 +08:00
    现在有个很麻烦的、需要白名单才能访问的 url,我需要第一步访问网络获取本地 ip,第二步通过带 key 的 api 把 ip 添加到白名单,第三步才能访问这个 url 。
    什么人才才能想出这个绝妙的成倍增加工作量的逻辑啊。大婶们我怎么优化我的三部曲以尽量降低出错后面的处理?
    MakeItGreat
        6
    MakeItGreat  
       2021-05-04 19:31:16 +08:00 via Android
    中转
    HankLu
        7
    HankLu  
    OP
       2021-05-04 19:34:30 +08:00
    @MakeItGreat 大神,我这个 url 就是个中转站(带里)
    yanqiyu
        8
    yanqiyu  
       2021-05-04 19:47:02 +08:00
    大概不行,除非...
    1) 你的机器 ip 就是外网 ip
    2) 你的网关等设备提供查询公网 ip 的接口
    或者想办法让白名单放行某个通用的 ip 地址查询 api
    caliburn1994
        9
    caliburn1994  
       2021-05-04 19:49:34 +08:00
    为什么不访问外部网络?访问网络的话

    ```
    curl -s ipinfo.io/ip
    ```
    ysc3839
        10
    ysc3839  
       2021-05-04 19:55:54 +08:00 via Android
    没经过 NAT 转换的话,可以,否则不行。
    kennylam777
        11
    kennylam777  
       2021-05-04 20:01:23 +08:00
    家用路由器有 upnp 一招, BitTorrent clients, PlayStation 及 Xbox 等等都用到
    gjquoiai
        12
    gjquoiai  
       2021-05-04 20:05:17 +08:00
    1. 自建机房的话应该是固定的一组出口 ip
    2. 公有云一般都提供了以编程方式查询实例出口 ip 的方法
    HankLu
        13
    HankLu  
    OP
       2021-05-04 20:13:19 +08:00   1
    已解决,我这个没有路由转接,直接用 IPs = socket.gethostbyname_ex(socket.gethostname())[-1]获取到了,这一下降低了我一半的工作量
    ClericPy
        14
    ClericPy  
       2021-05-04 20:18:50 +08:00
    如果实在懒, curl http://httpbin.org/get 算了
    ClericPy
        15
    ClericPy  
       2021-05-04 20:19:14 +08:00
    抱歉没注意 "不需要访问网络"... 溜了
    dorothyREN
        16
    dorothyREN  
       2021-05-04 23:19:17 +08:00
    直接 tracert 判断出口 IP 就行
    opengps
        17
    opengps  
       2021-05-04 23:47:42 +08:00
    这个真没有,因为你并不知道你的最终公网出口具体在什么位置,如果确定了出口位置,那么可以去这个位置查一下公网 ip
    opengps
        18
    opengps  
       2021-05-04 23:48:36 +08:00
    另外还有个问题,公网的出入口,有可能不唯一
    Jooooooooo
        19
    Jooooooooo  
       2021-05-05 00:29:55 +08:00
    好像是你没上地铁得知道自己会坐哪, 除非位置是提前分配的.
    no1xsyzy
        20
    no1xsyzy  
       2021-05-05 02:53:15 +08:00
    也可以尝试要个公网 IP,那样的话路由器可能有页面能找到 IP = 公网 IP
    但也可能要不到。
    出口不唯一的话甚至你联网获取了 IP 都不一定对
    ik
        21
    ik  
       2021-05-05 09:47:09 +08:00 via iPhone
    @HankLu #直接访问这个带 key 的 api,后端获得源地址后添加白名单呢?
    syahd
        22
    syahd  
       2021-05-05 11:07:44 +08:00
    向运营商购买专线,配置固定 IP
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5321 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:26 PVG 15:26 LAX 00:26 JFK 03:26
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86