Request.get внезапно начал выдавать ошибку «Временный сбой в разрешении имени»

У меня есть скрипт, который каждую неделю вычищает новые главы из определенного романа на ncode.syosetu.com, мне нужен текст для tts, но на прошлой неделе я вдруг начал получать от него ошибку при запуске.

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 для проверки связи с сайтом, и только один раз он получил ответ по местоположению Йоханнесбург - ZA.

Я попытался добавить User-Agent к вызову request.get в заголовке, но это не помогло. Я также пробовал разные места VPN, отключал VPN и приостанавливал работу брандмауэра, но ничего не помогло.

Я не знаю, связано ли это, но недавно у меня была проблема с подключением к Интернету, но все, что я сделал, чтобы исправить это, это отключить, затем включить мой Ethernet в сетевых подключениях, а затем удалить и переустановить мой VPN.

Я читал о /etc/resolv.conf, но я предполагаю, что это не повлияет на способность командной строки Windows пинговать сайт. Но просто для справки, все, что есть в файле, это комментарии WSL о том, как остановить автоматическую генерацию.

Есть ли способ снова заставить запросы на сайт работать или какой-то другой способ получить текст с определенной страницы, который будет работать? Я также просто хотел бы знать, может ли кто-нибудь еще успешно пропинговать ncode.syosetu.com?

Обновлять:

Я попытался запустить простой интерактивный python3 request.get в WSL для google.ca и столкнулся с той же ошибкой. Я также попробовал ту же команду на своем рабочем компьютере, но на ncode.syosetu.com, и там это сработало. Итак, я предполагаю, что проблема связана с моим компьютером/интернетом. Хотя даже на своем рабочем компьютере я не мог пропинговать или отследить ncode.syosetu.com.

Я также пробовал:

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

Но все же превышено максимальное количество попыток с URL-адресом (вызвано временным сбоем в разрешении имени)

Код s = requests.Session() s.mount('http://', requests.adapters.HTTPAdapter(max_retries=1000)) s.get('https://ncode.syosetu.com/n6371es/') работает для меня

Caridorc 13.01.2023 02:17

Вы пытались подключиться к точке доступа через Интернет на своем мобильном телефоне? Чтобы увидеть, если проблема с сетью

Caridorc 13.01.2023 02:19

Спасибо за проверку работы кода. Я не пробовал использовать мобильную точку доступа телефона, мой компьютер не имеет Wi-Fi, но я смог подключиться к нему. Я снова попытался выполнить запросы, используя свою мобильную сеть, но все равно получил ту же ошибку (как для ncode.syosetu.com, так и для google.ca). Также просто для справки, у меня есть другой провайдер для мобильного и домашнего интернета.

Zephyr 13.01.2023 03:20

Я понял это благодаря комментариям @Caridorc. Я проверил запрос, используя свой мобильный интернет, и подтвердил, что проблема не в интернет-провайдере. Это заставило меня подумать, что невозможность пропинговать / отследить сайт могла ввести меня в заблуждение, поэтому я установил запросы в командной строке Windows, и запрос работал там. Так что проблема была связана с WSL. Я заглянул в /etc/resolv.conf и установил nameserver 8.8.8.8, после чего запрос снова начал работать в WSL. Было несколько шагов, чтобы изменения закрепились, но я думаю, что проблема решена.

Zephyr 13.01.2023 04:07
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
Потяните за рычаг выброса энергососущих проектов
Потяните за рычаг выброса энергососущих проектов
На этой неделе моя команда отменила проект, над которым я работал. Неделя усилий пошла насмарку.
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Инструменты для веб-скрапинга с открытым исходным кодом: Python Developer Toolkit
Веб-скрейпинг, как мы все знаем, это дисциплина, которая развивается с течением времени. Появляются все более сложные средства борьбы с ботами, а...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Эмиссия счетов-фактур с помощью Telegram - Python RPA (BotCity)
Привет, люди RPA, это снова я и я несу подарки! В очередном моем приключении о том, как создавать ботов для облегчения рутины. Вот, думаю, стоит...
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
1
4
125
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В конце концов, проблема была с 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, а затем обновить DNS с помощью нового файла /etc/resolv. .conf

Другие вопросы по теме