Как выполнить пользовательские команды Python с помощью Crontab

Я предполагаю базовую аутентификацию здесь.

$cred = Get-Credential
Invoke-WebRequest -Uri 'https://whatever' -Credential $cred

Вы можете получить свои учетные данные с помощью других средств (Import-Clixml и т. д.), но это должен быть объект [PSCredential].

Изменить на основе комментариев:

GitHub нарушает RFC, как они объясняют в ссылке, которую вы предоставили :

API поддерживает базовую аутентификацию, как определено в RFC2617, с небольшими различиями. Основное различие заключается в том, что RFC требует, чтобы неаутентифицированные запросы отвечали с помощью 401 несанкционированных ответов. Во многих местах это раскрывает существование пользовательских данных. Вместо этого API GitHub отвечает 404 Not Found. Это может вызвать проблемы для HTTP-библиотек, которые принимают неавторизованный ответ 401. Решение состоит в том, чтобы вручную обработать заголовок авторизации.

Powershell's Invoke-WebRequest, насколько мне известно, дождался ответа 401 перед отправкой учетных данных, а поскольку GitHub никогда не предоставляет его, ваши учетные данные никогда не будут

Вручную создать заголовки

Вместо этого вам нужно будет создать основные заголовки auth самостоятельно.

Базовая аутентификация принимает строку, состоящую из имя пользователя и пароль, разделенные двоеточием user:pass, а затем отправляют результат с кодировкой Base64.

Такой код должен работать:

$user = 'user'
$pass = 'pass'

$pair = "$($user):$($pass)"

$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))

$basicAuthValue = "Basic $encodedCreds"

$Headers = @{
    Authorization = $basicAuthValue
}

Invoke-WebRequest -Uri 'https://whatever' -Headers $Headers

Вы могли бы объединить некоторые строки конкатенация, но я хотел разбить ее, чтобы сделать ее более ясной.

1
задан Owais Arshad 18 January 2019 в 03:24
поделиться