Я могу подключиться к следующим https://registry.terraform.io/.well-known/terraform.json с помощью браузера
Когда я пытаюсь подключиться к нему из командной строки
curl: (7) Не удалось подключиться к registry.terraform.io порт 443: истекло время ожидания
любые идеи о том, как решить эту проблему, спасибо
решение1
проблема была в неправильных настройках прокси в командном окне HTTPS_PROXY=настройки прокси из браузера
решение2
TL;DR
Попробуйте выполнить curl
команду, указанную ниже в шаге 7. Если это не сработает, скорее всего, у вас есть другая проблема, помимо curl
команды (например, брандмауэр или прокси-сервер).
Копирование запросов браузера с помощью cURL
Если вы можете подключиться с помощью браузера, один из способов устранить потенциальные проблемы с вашей curl
командой — «скопировать» нужную транзакцию из вашего браузера. Chrome, Firefox и Opera имеют консоль разработчика, которая позволяет это сделать.
Откройте новую пустую вкладку.
В Chrome и Firefox нажмите, F12чтобы открыть консоль разработчика. В Opera нажмите Ctrl+ Shift+ I.
Найдите нужный
Network
вариант и выберите его.Перейдите по нужному URL-адресу, напримерhttps://registry.terraform.io/.well-known/terraform.json.
В итоге вы должны увидеть что-то похожее на следующее:
например, сетевые транзакции
Выберите нужную транзакцию, щелкните правой кнопкой мыши и выберите опцию
Copy as cURL
(в Chrome используйтеCopy as cURL (cmd)
).например, Копировать как cURL
Если вы вставите содержимое буфера обмена, у вас должна быть точная копия запроса на
curl
:curl "https://registry.terraform.io/.well-known/terraform.json" -H "authority: registry.terraform.io" -H "upgrade-insecure-requests: 1" -H "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36" -H "sec-fetch-mode: navigate" -H "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3" -H "sec-fetch-site: none" -H "accept-encoding: gzip, deflate, br" -H "accept-language: en-US,en;q=0.9" --compressed
Эта curl
команда должна в точности повторять запрос, сделанный браузером.
Другие вопросы
Если это не решит проблему, вам придется рассмотреть другие причины, по которым этот запрос может не выполняться, например, проблемы с брандмауэром/прокси-сервером или проблемы с сертификатами.
Используйте параметр
-k
или--insecure
, чтобы игнорировать самоподписанные или недействительные сертификаты с помощью curl.Рассмотрите возможность использования
--verbose
флага, а также сброса заголовков HTTP с помощью-D -
, чтобыcurl
облегчить устранение неполадок.
Эмуляция определенного браузера
Учитывая ваш дополнительный комментарий о том, что ваши (общие) запросы cURL по-прежнему не выполняются, вам, скорее всего, придется эмулировать конкретный браузер, который может успешно подключиться.
Браузеры идентифицируют себя с помощьюПользовательский агентстрока, связанная с данной версией этого браузера. Если вы хотите эмулировать браузер, который может подключаться к вашему URL, вам нужно будет либо:
Используйте шаги, которые я даю нижеКопирование запросов браузера с помощью cURLв браузере, который может успешно подключиться.
Попробуйте заменить
user-agent
значение в шаге 7 на значение, возвращаемое с такого сайта, какКакой у меня браузер?(перейдите по этой ссылке в браузере, у которого нет проблем с доступом к вашей ссылке).
Пример (Вариант 2)
«Универсальный» пользовательский агент (выше)
-H "user-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
Конкретный пользовательский агент (например, из What Is My Browser)
-H "user-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0"
Важно отметить, что первый метод (копирование запроса), вероятно, является наиболее надежным, поскольку он может перехватывать заголовки, отличные от тех, user-agent
которые используются для авторизации запроса.