You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Requests、Urllib和Pandas调用URL时遇dns_unresolved_hostname网络错误

解决Python请求局域网服务器时的dns_unresolved_hostname错误

问题场景

浏览器可正常加载http://fc12rp01:8000/bin/ReportCall.py?rule=N2,但Python的Requests、URLLIB、Pandas调用该URL时,返回Network Error (dns_unresolved_hostname)。已尝试修改hosts文件、调整代理设置、ping通服务器、替换服务器名为IP/移除端口等操作,问题仍未解决。

可行解决方案

  • 强制请求不使用代理
    即使系统代理设置已调整,Python可能仍会继承代理配置。手动在请求中指定空代理字典,强制不走代理:

    import requests
    proxies = {'http': '', 'https': ''}
    r = requests.get('http://fc12rp01:8000/bin/ReportCall.py?rule=N2', proxies=proxies)
    print(r.content)
    
  • 验证Python的DNS解析能力
    先确认Python能否正确解析服务器主机名,运行以下代码:

    import socket
    print(socket.gethostbyname('fc12rp01'))
    

    如果返回错误,说明Python未读取到正确的hosts配置:

    • 检查hosts文件格式:IP与主机名之间需用制表符或空格分隔,确保无多余符号;
    • 确认hosts文件权限:Windows下需管理员权限修改C:\Windows\System32\drivers\etc\hosts,Linux/macOS需修改/etc/hosts并保存;
    • 重启Python环境,确保配置生效。
  • 指定IP+Host头请求
    若直接用IP访问仍失败,可能是服务器要求请求头中的Host字段匹配主机名,手动添加Host头:

    import requests
    url = 'http://192.168.x.x:8000/bin/ReportCall.py?rule=N2'  # 替换为服务器实际IP
    headers = {'Host': 'fc12rp01'}
    r = requests.get(url, headers=headers, proxies={'http': '', 'https': ''})
    print(r.content)
    
  • 检查环境变量与安全软件

    • 清理代理环境变量:系统的HTTP_PROXY/HTTPS_PROXY变量可能干扰请求,在代码中先移除:
      import os
      os.environ.pop('HTTP_PROXY', None)
      os.environ.pop('HTTPS_PROXY', None)
      
      import requests
      r = requests.get('http://fc12rp01:8000/bin/ReportCall.py?rule=N2')
      print(r.content)
      
    • 临时关闭防火墙/杀毒软件:部分安全软件会拦截Python的网络请求,关闭后测试是否恢复正常。

内容的提问来源于stack exchange,提问作者Bobby Python

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 15:24:15