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

requests.get突发'Temporary failure in name resolution'错误排查求助

问题解决思路及方案

核心问题定位

报错Temporary failure in name resolution明确指向DNS解析失败,结合你在WSL中连google.ca都无法通过requests访问,说明问题出在WSL的DNS配置上,而非目标网站ncode.syosetu.com的访问限制。另外,ping/tracert超时属于正常情况——多数网站会禁用ICMP请求,只要requests能正常访问即可,无需纠结这两个工具的结果。


解决方案

1. 修复WSL DNS配置

WSL默认会自动生成/etc/resolv.conf,但可能出现配置失效的情况,手动锁定DNS配置即可解决:

  • 备份原配置文件:
    sudo cp /etc/resolv.conf /etc/resolv.conf.bak
    
  • 编辑/etc/resolv.conf,添加公共DNS服务器:
    sudo nano /etc/resolv.conf
    
    删除原有内容,写入:
    nameserver 8.8.8.8
    nameserver 1.1.1.1
    
  • 创建/etc/wsl.conf防止WSL自动覆盖DNS配置:
    sudo nano /etc/wsl.conf
    
    写入以下内容:
    [network]
    generateResolvConf = false
    
  • 重启WSL生效:在Windows命令提示符执行
    wsl --shutdown
    
    之后重新打开WSL终端。

2. 验证修复效果

  • 先测试DNS解析是否正常:
    nslookup ncode.syosetu.com
    
    若能返回目标IP,说明DNS配置生效。
  • 再测试requests访问:
    import requests
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"}
    response = requests.get("https://ncode.syosetu.com/n6371es/", headers=headers)
    print(response.status_code)
    
    返回200即为访问成功。

3. 备用获取页面文本方法

若DNS配置修复后仍有问题,可直接通过目标IP访问(需先通过Chrome开发者工具/nslookup获取IP):

import requests
headers = {
    "Host": "ncode.syosetu.com",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
# 替换为实际解析到的IP地址
response = requests.get("https://xxx.xxx.xxx.xxx/n6371es/", headers=headers, verify=False)
print(response.text)

注:verify=False用于跳过证书域名不匹配的验证,仅临时使用时推荐,若长期使用可配置本地证书信任。


关于ping通ncode.syosetu.com的说明

该网站禁用了ICMP请求,所以正常情况下无法ping通,你的工作电脑能通过requests访问但ping超时也验证了这一点,无需对此问题过度关注。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 13:55:28