имея при подключении к сайту из командной строки

имея при подключении к сайту из командной строки

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

  1. Откройте новую пустую вкладку.

  2. В Chrome и Firefox нажмите, F12чтобы открыть консоль разработчика. В Opera нажмите Ctrl+ Shift+ I.

  3. Найдите нужный Networkвариант и выберите его.

  4. Перейдите по нужному URL-адресу, напримерhttps://registry.terraform.io/.well-known/terraform.json.

  5. В итоге вы должны увидеть что-то похожее на следующее:

    например, сетевые транзакции

    Консоль разработчика Firefox — Сетевые транзакции — Скриншот

  6. Выберите нужную транзакцию, щелкните правой кнопкой мыши и выберите опцию Copy as cURL(в Chrome используйте Copy as cURL (cmd)).

    например, Копировать как cURL

    Консоль разработчика Firefox - Сетевые транзакции - Копировать как cURL - Скриншот

  7. Если вы вставите содержимое буфера обмена, у вас должна быть точная копия запроса на 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, вам нужно будет либо:

  1. Используйте шаги, которые я даю нижеКопирование запросов браузера с помощью cURLв браузере, который может успешно подключиться.

  2. Попробуйте заменить 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которые используются для авторизации запроса.


Связанный контент