• 【python】获取URL_IP


    获取URL_IP

    推荐

    # pip install dnspython
    import dns.resolver
    domain="taobao.com"
    A=dns.resolver.resolve(domain,"A")
    for a in A.response.answer:
        for aa in a.items:
            print(aa.address)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    方法一 requests:

    import requests
    
    srarch_url = "http://www.baidu.com"
    url_ip = requests.get(seach_url, stream=True)
    print(, f'查询url --> {srarch_url} ',
    f'对应 ip --> {url_ip.raw._connection.sock.getpeername()[0]}')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    方法二 socket:

    import socket
    
    # 查看当前主机名
    print('当前主机名称为 : ' + socket.gethostname())
    
    # 根据主机名称获取当前IP
    print('当前主机的IP为: ' + socket.gethostbyname(socket.gethostname()))
    
    # 下方代码为获取当前主机IPV4 和IPV6的所有IP地址(所有系统均通用)
    addrs = socket.getaddrinfo(socket.gethostname(), None)
    
    for item in addrs:
        print(item)
    
    # 仅获取当前IPV4地址
    print('当前主机IPV4地址为:' + [item[4][0] for item in addrs if ':' not in item[4][0]][0])
    
    # 同上仅获取当前IPV4地址
    for item in addrs:
        if ':' not in item[4][0]:
            print('当前主机IPV4地址为:' + item[4][0])
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    优化后

    def get_url_ip():
    	""" 获取 ip """
        srarch_url = "http://www.baidu.com"
        res = requests.get(srarch_url, stream=True)
        url_ip = res.raw._connection.sock.getpeername()[0]
        print(f'查询url --> {srarch_url} ',
              f'对应 ip --> {res.raw._connection.sock.getpeername()[0]}')
        return url_ip
    
    
    def stop_py():
    	""" 停止运行 """
        import sys
        sys.exit('测试URL 环境错误  --> 程序终止')
        # 该方法中包含一个参数status,默认为0,表示正常退出,也可以为1,表示异常退出。
    
    
    def check_path():
    	""" 判断环境 """
        get_ip = get_url_ip()
        print('获取', get_ip)
        path_dev = '220.181.38.150'
        path_test = '220.181.38.149'
        path_release = '220.181.38.150'
        if get_ip == path_dev:
            print('develop URL')
        elif get_ip == path_test:
            print('test URL')
            stop_py()
        elif get_ip == path_release:
            print("release URL")
        else:
            print('unknow path')
    
    
    check_path()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    说明

    使用 sys.exit(),直接退出程序,但是会引发一个 SystemExit 异常;

    • 该方法包含一个 status 参数 (常用

      • sys.exit(0),0 表示支持退出
      • sys.exit(1),1 表示异常退出

      这个SystemExit异常,是唯一一个不会被认为是错误的异常,当没有设置异常捕获的话,是不会有报错的,可以进行正常退出,当然也可以捕获这个异常进行一些其他操作。

    import sys
    
    # sys.exit()
    # sys.exit(0)
    # sys.exit(1)
    try:
        sys.exit(1)
    except SystemExit as err:
        print(err)  # 1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    1. 使用 os._exit(),直接退出,不会抛出异常;
    import os
    os._exit()
    
    • 1
    • 2
    • 但我们常用的Win32平台和基于UNIX的平台不会有所影响
    1. 使用 os.kill(),用于直接 Kill 掉进程,只在 unix 平台上有效;
  • 相关阅读:
    element-plus ElMessageBox 实现复制功能,动态点击html元素不生效解决
    软件测试项目实战案例分解,跟着我一步一步操作【人力资源管理系统】
    C/C++ 网络库 boost asio 使用详解
    5分钟理解什么是卷积的特征提取
    【kubernetes】从kubernetes Dashboard的yaml文件看应用的部署
    MySQL—索引—基础语法
    el-tree自定义节点内容
    zemax双透镜公差分析
    LeetCode-148. Sort List [C++][Java]
    脉宽调制(PWM)开关驱动
  • 原文地址:https://blog.csdn.net/qq_37497758/article/details/126177678