Powershell v5.1 Invoke-RestMethod и обходной прокси - PullRequest
0 голосов
/ 25 ноября 2018

В настоящее время я нахожусь в Powershell V5.1 и хотел бы обойти прокси-сервер Internet Explorer по команде Invoke-RestMethod.

В Powershell V6 есть параметр -NoProxy, который указывает, что командлет не будет использоватьпрокси для достижения цели.Это нужно для обхода прокси-сервера, настроенного в Internet Explorer, и это именно то, что я хочу сделать.

В Powershell V6 код будет выглядеть примерно так:

$Result = Invoke-RestMethod -Uri $url  -NoProxy

Любой обходной путь в V5.1?

Спасибо, Филипп

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Как альтернатива, но я думаю, что у postanote отличный ответ.Как насчет погружения в .net?И на более глубоком уровне, чем обычно, в наши дни, поэтому вместо использования .net HttpClient с использованием WebRequest:

$request = [System.Net.WebRequest]::Create("https://www.example.org")
$request.Proxy = [System.Net.WebProxy]::new() #blank proxy
$response = $request.GetResponse()
$response

Я не тестировал подробно, если это обходит прокси (моя корпоративная политика усложнит проверку), но этот вопрос на c # предполагает, что он должен делать: Как удалить прокси из WebRequest и оставить DefaultWebProxy нетронутым

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

0 голосов
/ 29 ноября 2018

Итак, вот обходной путь, который я реализовал очень успешно:

Конец веб-запроса обычно игнорируется запрашиваемым сайтом (пожалуйста, проверьте, но это очень часто верно).Итак, я добавляю что-то случайное в конце своего URL: отметку времени.

Прокси-сервер считает, что это новый запрос каждый раз, поэтому кэширование не происходит.

$timestamp = (Get-Date -Date ((Get-Date).ToUniversalTime()) -UFormat %s)
$url = "https://www.example.org/$timestamp"
$Result = Invoke-RestMethod -Uri $url

Работаетотлично в моем случае !!!

0 голосов
/ 25 ноября 2018

Не изначально, поскольку это были некоторые улучшения, в веб-командлетах PSCore и MS заявляли, что ничего не будет перенесено.Вы можете просто выполнить оболочку в PSCore из PS5x, чтобы использовать командлет как есть.

Что-то подобное было сделано для Invoke-WebRequest с использованием этой функции:

Update-Proxy.ps1

В соответствии с этими вопросами и ответами

Обход прокси-сервера Invoke-WebRequest

   $p = proxy
   $p.Override += "*.domain.com" 
   $p | proxy
   Invoke-WebRequest ...
   #you could return old override here.

Таким образом, он может работать с Invoke-RestMethod, ноЯ не в месте, чтобы проверить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...