Перейти к содержимому
Гайды 2 мин чтения 732 просмотров

Использование прокси в PowerShell

Работа с прокси в PowerShell: Invoke-WebRequest, System.Net.WebProxy, настройка системного прокси и автоматизация через скрипты.

Использование прокси в PowerShell

Прокси в PowerShell

PowerShell — мощный инструмент автоматизации в Windows. Работа с прокси важна для скриптов, работающих в корпоративных сетях или требующих анонимности.

Invoke-WebRequest с прокси

Базовый запрос через прокси

$proxy = "http://proxy_ip:8080"
$response = Invoke-WebRequest -Uri "https://httpbin.org/ip" -Proxy $proxy
$response.Content

С аутентификацией

$proxy = "http://proxy_ip:8080"
$proxyCred = New-Object System.Management.Automation.PSCredential(
    "username",
    (ConvertTo-SecureString "password" -AsPlainText -Force)
)

$response = Invoke-WebRequest -Uri "https://httpbin.org/ip" `
    -Proxy $proxy `
    -ProxyCredential $proxyCred

$response.Content

Invoke-RestMethod (для JSON API)

$proxy = "http://proxy_ip:8080"
$result = Invoke-RestMethod -Uri "https://httpbin.org/ip" -Proxy $proxy
$result.origin  # ваш IP через прокси

System.Net.WebProxy

Программная настройка

$webProxy = New-Object System.Net.WebProxy("http://proxy_ip:8080", $true)
$webProxy.Credentials = New-Object System.Net.NetworkCredential("user", "pass")

# Применение к WebClient
$client = New-Object System.Net.WebClient
$client.Proxy = $webProxy
$result = $client.DownloadString("https://httpbin.org/ip")
Write-Host $result

Обход прокси для определённых адресов

$webProxy = New-Object System.Net.WebProxy("http://proxy_ip:8080", $true)
$webProxy.BypassList = @("localhost", "*.local", "192.168.*")
$webProxy.BypassProxyOnLocal = $true

HttpClient (.NET)

Для продвинутых сценариев используйте .NET HttpClient:

$proxy = New-Object System.Net.WebProxy("http://proxy_ip:8080")
$proxy.Credentials = New-Object System.Net.NetworkCredential("user", "pass")

$handler = New-Object System.Net.Http.HttpClientHandler
$handler.Proxy = $proxy
$handler.UseProxy = $true

$client = New-Object System.Net.Http.HttpClient($handler)
$response = $client.GetStringAsync("https://httpbin.org/ip").Result
Write-Host $response

Системный прокси

Чтение текущих настроек

# Из реестра Windows
$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
$proxyEnabled = (Get-ItemProperty -Path $regPath).ProxyEnable
$proxyServer = (Get-ItemProperty -Path $regPath).ProxyServer
Write-Host "Proxy enabled: $proxyEnabled"
Write-Host "Proxy server: $proxyServer"

Установка системного прокси

$regPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"

# Включить прокси
Set-ItemProperty -Path $regPath -Name ProxyEnable -Value 1
Set-ItemProperty -Path $regPath -Name ProxyServer -Value "proxy_ip:8080"

# Исключения
Set-ItemProperty -Path $regPath -Name ProxyOverride -Value "localhost;*.local"

Write-Host "Proxy configured"

Отключение системного прокси

Set-ItemProperty -Path $regPath -Name ProxyEnable -Value 0
Write-Host "Proxy disabled"

Переменные окружения

Установка

$env:HTTP_PROXY = "http://proxy_ip:8080"
$env:HTTPS_PROXY = "http://proxy_ip:8080"
$env:NO_PROXY = "localhost,*.local"

Постоянная установка

[Environment]::SetEnvironmentVariable("HTTP_PROXY", "http://proxy_ip:8080", "User")
[Environment]::SetEnvironmentVariable("HTTPS_PROXY", "http://proxy_ip:8080", "User")

Проверка

Write-Host "HTTP_PROXY: $env:HTTP_PROXY"
Write-Host "HTTPS_PROXY: $env:HTTPS_PROXY"

Ротация прокси в скриптах

$proxies = @(
    "http://user:pass@proxy1:8080",
    "http://user:pass@proxy2:8080",
    "http://user:pass@proxy3:8080"
)

$urls = @(
    "https://httpbin.org/ip",
    "https://httpbin.org/headers",
    "https://httpbin.org/user-agent"
)

foreach ($url in $urls) {
    $proxy = $proxies | Get-Random
    try {
        $response = Invoke-RestMethod -Uri $url -Proxy $proxy -TimeoutSec 10
        Write-Host "OK: $url via $proxy"
        Write-Host $response
    } catch {
        Write-Host "FAIL: $url via $proxy - $($_.Exception.Message)"
    }
}

Проверка прокси

function Test-Proxy {
    param(
        [string]$ProxyServer,
        [string]$ProxyPort,
        [string]$Username,
        [string]$Password
    )

    $proxy = "http://${ProxyServer}:${ProxyPort}"
    $cred = $null

    if ($Username) {
        $cred = New-Object System.Management.Automation.PSCredential(
            $Username,
            (ConvertTo-SecureString $Password -AsPlainText -Force)
        )
    }

    try {
        $params = @{
            Uri = "https://httpbin.org/ip"
            Proxy = $proxy
            TimeoutSec = 10
        }
        if ($cred) { $params.ProxyCredential = $cred }

        $response = Invoke-RestMethod @params
        Write-Host "OK - IP: $($response.origin)" -ForegroundColor Green
        return $true
    } catch {
        Write-Host "FAIL - $($_.Exception.Message)" -ForegroundColor Red
        return $false
    }
}

# Использование
Test-Proxy -ProxyServer "proxy_ip" -ProxyPort "8080" -Username "user" -Password "pass"

Массовая проверка прокси

$proxyList = Get-Content "proxies.txt"  # формат: ip:port:user:pass

$results = foreach ($line in $proxyList) {
    $parts = $line.Split(":")
    $ip = $parts[0]; $port = $parts[1]
    $user = $parts[2]; $pass = $parts[3]

    $proxy = "http://${ip}:${port}"
    try {
        $cred = New-Object PSCredential($user, (ConvertTo-SecureString $pass -AsPlainText -Force))
        $resp = Invoke-RestMethod "https://httpbin.org/ip" -Proxy $proxy -ProxyCredential $cred -TimeoutSec 5
        [PSCustomObject]@{Proxy=$line; Status="OK"; IP=$resp.origin}
    } catch {
        [PSCustomObject]@{Proxy=$line; Status="FAIL"; IP="N/A"}
    }
}

$results | Format-Table -AutoSize
$results | Export-Csv "proxy_check_results.csv" -NoTypeInformation

Заключение

PowerShell предоставляет гибкие инструменты для работы с прокси: от простых командлетов (Invoke-WebRequest) до полного .NET API. Возможность управления системным прокси через реестр и переменные окружения делает PowerShell идеальным для автоматизации настройки прокси на Windows-машинах.

Обновлено: 06.03.2026
Назад к категории

Читайте также

Гайды 2 мин

Прокси для Nike SNKRS: покупка дропов и мультизаявки

Используйте резидентные или мобильные прокси для Nike SNKRS: мультизаявки, обход лимитов на IP и покупка дропов без банов. Какой тип выбрать и как настроить.

Гайды 2 мин

Как настроить прокси на iPhone (Wi-Fi и SOCKS5)

Настройте прокси на iPhone через штатные настройки Wi-Fi (HTTP/HTTPS) или приложение вроде Shadowrocket для SOCKS5 и сотовой сети. Пошаговая настройка iOS и её ограничения.

Гайды 3 мин

Прокси для Tinder: несколько аккаунтов и защита от банов

Используйте мобильные или резидентные прокси для Tinder, чтобы вести несколько профилей и избегать теневых банов по IP. Почему мобильные лучшие, как настроить и почему прокси не сменит город.

Гайды 2 мин

Прокси для StockX: мониторинг цен и ведение аккаунтов

Используйте резидентные, ISP или мобильные прокси для StockX, чтобы мониторить цены, вести несколько аккаунтов и покупать дропы без банов. Какой тип выбрать и как настроить.

Гайды 3 мин

Прокси для OpenAI API: доступ, лимиты и настройка

Пустите OpenAI API через резидентный или ISP-прокси для доступа из поддерживаемых регионов, обхода лимитов 429 и изоляции аккаунтов. Какой прокси выбрать и примеры настройки на Python.

Гайды 1 мин

Настройка прокси в Cypress для E2E-тестирования

Настройка прокси в Cypress: HTTP_PROXY переменные, cy-proxy-middleware и тестирование гео-зависимого контента.

Попробуйте наши прокси

20,000+ прокси в 100+ странах мира

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.