windows request.get突然开始命中“名称解析临时失败”错误

ntjbwcob  于 2023-01-14  发布在  Windows
关注(0)|答案(1)|浏览(128)

我有一个脚本,每周都会从www.example.com上的一本特定小说中抓取新的章节,我需要TTS的文本,但上周我突然开始在运行时收到一个错误。ncode.syosetu.com every week, I need the text for tts, but this last week I suddenly started getting an error from it when it runs.

requests.exceptions.ConnectionError: HTTPSConnectionPool(host='ncode.syosetu.com', port=443): Max retries exceeded with url: /n6371es/ (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7f21b8d64f28>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',))

我可以在Chrome中访问该网站,但ping和tracert会得到"请求超时",tracert会得到前9跳左右,但剩下的只会得到"请求超时"。
我还尝试使用https://www.site24x7.com/ping-test.html来ping网站,它只有一次在约翰内斯堡-za位置上得到了响应。
我试着添加一个用户代理到请求。在标题中得到调用,但没有帮助。我也尝试了不同的VPN位置,关闭VPN,并暂停我的防火墙,但没有帮助。
我不知道这是否是相关的,但我最近确实有一个问题,我的互联网连接,但我所做的修复它是禁用,然后启用我的以太网在网络连接,然后卸载并重新安装我的VPN.
我读过关于/etc/resolv.conf的文章,但我认为这不会影响windows命令提示符ping站点的能力。但仅供参考,文件中的所有内容都是关于如何停止自动生成的WSL注解。
有没有什么方法可以让对网站的请求再次工作,或者其他方法可以从特定页面获取文本?我还想知道是否有其他人能够成功地ping www.example.com?ncode.syosetu.com successfully?
更新:
我试过运行一个简单的交互式python3请求。进入WSL到www.example.com,遇到了同样的错误。我也在我的工作电脑上尝试了同样的命令,但是到了www.example.com,它在那里工作。所以我猜问题出在我的电脑/互联网上。尽管即使在我的工作电脑上,我也不能ping或tracert ncode.sysetu.com。 google.ca and am hitting the same error. I also tried the same command on my work computer, but to ncode.syosetu.com , and it worked there. So I guess the issue on with my computer/internet. Though even on my work computer I could not ping or tracert ncode.syosetu.com.
我也试过:

s = requests.Session()
s.mount('http://', requests.adapters.HTTPAdapter(max_retries=1000))
s.get('https://ncode.syosetu.com/n6371es/')

但URL仍超过最大重试次数(由名称解析中的临时故障引起)

jslywgbw

jslywgbw1#

最后问题出在WSL上,由于某种原因,它似乎失去了访问互联网的能力。
我在https://github.com/microsoft/WSL/issues/5420中找到了修复方法。
解决办法是:

sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
(in powershell) wsl --shutdown
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

这基本上告诉WSL停止重新生成/etc/resolv.conf,重新启动WSL以应用/etc/wsl.conf更改,删除死链接/etc/resolv.conf,然后使用新的/etc/resolv.conf更新DNS

相关问题