Как стать автором
Обновить
0
0
Владислав @HackVan

Сети

Отправить сообщение
Ок. Понял, причесал код. В заголовке пусто. Странно конечно, может он по NTML пытается авторизоваться.
try {
  Invoke-WebRequest -Uri "http://ya.ru" -Proxy "http://xx.xx.xx.xxx:xxxx" -ProxyCredential(Get-Credential)
} catch {
        Write-Host -f Red "Error: [$($_.Exception.Message)]."
        break
}

Значит, так правильнее.
Invoke-WebRequest -Uri "http://ya.ru" -Proxy $Proxy -Headers $Headers
Согласен с вами по поводу пароля. «Расчехлил» tcpdump, попробывал еще 3proxy с basic авторизацией.
Провел 2 теста с 3proxy и squid.

Тест 1.
$Proxy = "http://xxx.xxx.xxx.xxx:xxxx"
$ProxyCreds = "user"

$cred = Get-Credential $ProxyCreds
$UserName = $cred.UserName
$Password = $cred.GetNetworkCredential().Password

try {
  Invoke-WebRequest -Uri "http://ya.ru" -Proxy $Proxy -ProxyUseDefaultCredentials 
} catch {
        Write-Host -f Red "Error: [$($_.Exception.Message)]."
        break
}


3proxy и squid ругнулись — 407, в HTTP заголовке отсутсвует Proxy-Authorization
HTTP заголовок в wireshark
image

Тест 2.
$Proxy = "http://xxx.xxx.xxx.xxx:xxxx"
$ProxyCreds = "user"

$cred = Get-Credential $ProxyCreds
$UserName = $cred.UserName
$Password = $cred.GetNetworkCredential().Password

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

$Headers = @{
    'Proxy-Authorization' = "Basic $encodedCreds"
}

try {
  Invoke-WebRequest -Uri "http://ya.ru" -Proxy $Proxy -ProxyUseDefaultCredentials -Headers $Headers
} catch {
        Write-Host -f Red "Error: [$($_.Exception.Message)]."
        break
}


Ура! Заработало. В HTTP заголовке уже появился Proxy-Authorization и basic авторизация прошла.
HTTP заголовок в wireshark
image

На этом варианте похоже я и остановлюсь.
Сам отвечу на свой же вопрос. Получилось только так

$ProxyUser = "user"
$ProxyPass = "pass"
$Proxy = "http://xxx.xxx.xxx.xxx:xxxx"

$url = 'http://www.adobe.com/ru/products/flashplayer/distribution3.html'

#Auth
$pair = "$($ProxyUser):$($ProxyPass)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))

#Proxy
$prox = new-object net.WebProxy;
$prox.Address = $Proxy

# Request
$req = [net.webRequest]::Create($url)
$req.method = "GET"
$req.Host = "www.adobe.com"
$req.UserAgent = "Mozilla/5.0 (Windows NT 5.1; rv:42.0) Gecko/20100101 Firefox/42.0"
$req.Proxy = $prox
$req.Headers['Proxy-Authorization'] = "Basic $encodedCreds";


#Responce
$resp = $req.GetResponse()
$stream = new-object io.streamreader $resp.GetResponseStream()
$res = $stream.readtoend()
$res
А как заставить Invoke-WebRequest работать через squid
Пробывал:
    #$cred = Get-Credential $ProxyCreds
    $SecPass = ConvertTo-Securestring $ProxyPass -AsPlainText -Force 
    $cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ProxyUser, $SecPass
    $WebrequestParams['ProxyCredential']=$cred


Не пускает прокси.
Getting ADOBE server version (ESR)...FAIL!
Can't verify ADOBE server version! Error: [The remote server returned an error:
(407) Proxy Authentication Required.].
Стоит ли ожидать обновленный MicroServer Gen9 в 2016 году?
мда… не ожидал увидеть такого на хабре. разочарован.

Информация

В рейтинге
Не участвует
Откуда
Оренбургская обл., Россия
Дата рождения
Зарегистрирован
Активность