Изучайте power shell с помощью онлайн-курсов и программ

PowerShell Basics: PowerShell Basics refers to the foundational knowledge and understanding of the PowerShell scripting language. It covers topics such as cmdlets, variables, data types, and pipeline usage. This skill is important to measure as it assesses an individual’s proficiency in utilizing the core concepts of PowerShell.

PowerShell Scripting: PowerShell Scripting involves writing scripts using PowerShell to automate tasks and perform complex operations. It focuses on topics like functions, loop structures, conditional statements, and input/output operations. Measuring this skill helps evaluate an individual’s ability to create efficient and reusable scripts using PowerShell.

File and Folder Management: File and Folder Management in PowerShell refers to the ability to manipulate and manage files and directories using PowerShell commands. This skill covers tasks such as file creation, deletion, copying, moving, and folder traversal. Measuring this skill helps determine an individual’s proficiency in automating file and folder operations using PowerShell.

Командлет Invoke-WebRequest в PowerShell — удобный инструмент для отправки HTTP-запросов на веб-сайты. Если вы уже пользуетесь прокси-сервисами Bright Data, вы можете использовать этот командлет с прокси-сервером, указав параметр -Proxy, а затем сведения о прокси-сервере.

4 min read

Bright Data favicon

Invoke-Webrequest With a Proxy

Ознакомившись с этим руководством по прокси-серверу Invoke-WebRequest PowerShell, вы узнаете:

Давайте узнаем подробности! 

Что такое PowerShell Invoke-WebRequest?

Invoke-WebRequest — это командлет PowerShell для отправки запросов HTTP, HTTPS и FTP веб-серверам и веб-службам. По умолчанию он автоматически анализирует ответ, полученный от сервера, и возвращает подборки форм, ссылок, изображений и других важных элементов HTML. 

Обычно он используется для доступа к интерфейсам REST API, загрузки файлов из Интернета или взаимодействия с веб-службами. Ниже приведен базовый синтаксис запроса Invoke-WebRequest:

Invoke-WebRequest [-Uri] <Uri> [-Method <WebRequestMethod>] [-Headers <IDictionary>] [-Body <Object>]

Ключевые параметры, которые следует запомнить:

  • – Uri: URI веб-ресурса, на который отправлен запрос.
  • – Method: HTTP-метод для использования в запросе (например, GET, POST, PUT, DELETE). Invoke-WebRequest по умолчанию отправляет запросы GET.
  • – Headers — дополнительные HTTP-заголовки, которые необходимо включить в запрос.
  • – Body — тело запроса для отправки на сервер.

Как видите, единственный обязательный аргумент — это . Таким образом, вкратце, самый простой синтаксис для выполнения запроса GET к заданному URI:

Invoke-WebRequest <Uri>

Этот командлет был добавлен в PowerShell 3.0 в 2012 году. 

Установка Invoke-WebRequest

Чтобы использовать Invoke-WebRequest, вам понадобится PowerShell. Итак, давайте узнаем, как установить PowerShell и получить доступ к командлету Invoke-WebRequest!

Windows

Во-первых, вы должны понять, что Windows PowerShell и PowerShell — это две разных программы. Windows PowerShell — это версия PowerShell, поставляемая вместе с Windows, и ее последняя версия — 5.1. Windows PowerShell содержит командлет Invoke-WebRequest. Это означает, что если вы используете современную версию Windows, вы готовы сразу же приступить к делу! При наличии более старых версий следуйте указаниям в официальном руководстве по установке PowerShell.

В то же время некоторые функции Invoke-WebRequest доступны только в версии PowerShell 7.x и более поздних версиях. Дополнительные сведения о том, как установить PowerShell 7.x, приводятся в официальном руководстве по миграции с Windows PowerShell 5.1 на PowerShell 7. Обратите внимание, что PowerShell 7.x устанавливается в новый каталог и работает параллельно с Windows PowerShell 5.1.

Вы можете узнать, какая версия PowerShell установлена на вашем компьютере под управлением ОС Windows, с помощью следующей команды:

$PSVersionTable

В PowerShell 7.x нужно ввести что-то вроде этого:

PSVersion                      7.4.1
PSEdition                      Core
GitCommitId                    7.4.1
OS                             Microsoft Windows 10.0.22631
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

macOS и Linux

Предварительные требования для начала работы с прокси-сервером в PowerShell

Чтобы начать использовать прокси-сервер PowerShell с Invoke-WebRequest, вам необходимо понять, как выглядит URL-адрес прокси-сервера. 

:/>  Как использовать колесико на ноутбуке без мышки

Вот URL-адрес прокси-сервера PowerShell Invoke-WebRequest:

<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]

Он включает следующее:

  • — протокол, используемый для подключения к прокси-серверу.
  • — IP-адрес или URL-адрес имени хоста прокси-сервера.
  • — номер порта, который прослушивает прокси-сервер.
  • — необязательное имя пользователя, которое нужна указать, когда требуется аутентификация на прокси-сервере.
  • — необязательный пароль, который нужно указать, когда требуется аутентификация на прокси-сервере.

Обратите внимание, что часть URL-адреса :// необходима для Invoke-WebRequest. Если вы не укажете ее, выполнение запроса завершится со следующей ошибкой:

Invoke-WebRequest: эта операция не поддерживается для относительного URI.

Что касается протоколов прокси-серверов, то наиболее популярными являются HTTP, HTTPS и SOCKS. В PowerShell 5.1 Invoke-WebRequest поддерживает только HTTP, а в PowerShell 7.x — также HTTPS и SOCKS.

Пора получить действительный прокси-сервер HTTP!

Вы можете найти его бесплатно в Интернете, как показано ниже:

Protocol: HTTP; IP Address: 190.6.23.219; Port: 999

Подготовьте эту информацию, чтобы получить следующий URL-адрес прокси-сервера:

http://190.6.23.219:999

Предупреждение

Бесплатные прокси-серверы можно использовать для обучения, но вы не можете полагаться на них в реальных ситуациях. Бесплатные прокси-серверы ненадежны, подвержены ошибкам, медленны, существенно ограничивают объем передаваемых данных и недолговечны. Не используйте их!

Каково решение? Прокси-серверы премиум-класса от Bright Data — лучшего поставщика данных услуг на рынке. Подпишитесь и попробуйте наши надежные прокси-серверы бесплатно.

http://admin-4521:@rUuH3tJqf45.103.203.109:9571

Как указать прокси-сервер HTTP в Invoke-WebRequest

Прежде чем начать, запустите следующую команду в PowerShell:

Invoke-WebRequest "https://httpbin.org/ip"
That should print something like:
StatusCode        : 200
StatusDescription : OK
Content           : {
                      "origin": "194.34.233.12"
                    }
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Length: 32
                    Content-Type: application/json
                    Date: Thu, 01 Feb 2024 10:46:14 GMT...
Forms             : {}
Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
                    true], [Content-Length, 32]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 32

Если вы хотите получить доступ только к полю «Контент», вы можете сделать это следующим образом:

$response = Invoke-WebRequest "https://httpbin.org/ip"
$response.Content
This would print:
{
  "origin": "194.34.233.12"
}

Использование параметра командной строки

Invoke-WebRequest предлагает флаг -Proxy для указания URL-адреса прокси-сервера для запроса.

Итак, синтаксис использования Invoke-WebRequest на прокси-сервере выглядит следующим образом:

Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>

Если теперь вы выполните эту команду PowerShell:

Invoke-WebRequest -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"
Invoke-WebRequest -Uri "http://httpbin.org/ip" -Proxy "http://brd.superproxy.io:22225" -ProxyCredential (New-Object System.Management.Automation.PSCredential("brd-customer-CUSTOMER_ID-zone-ZONE’S_NAME", ("ZONE’S_PASSWORD" | ConvertTo-SecureString -AsPlainText -Force)))
The result should be:
StatusCode        : 200
StatusDescription : OK
Content           : {
                      "origin": "190.6.23.219"
                    }
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Length: 31
                    Content-Type: application/json
                    Date: Thu, 01 Feb 2024 12:36:56 GMT...
Forms             : {}
Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
                    true], [Content-Length, 31]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 31

Примечание: не забывайте, что бесплатные прокси-серверы недолговечны! К тому времени, когда вы прочитаете это руководство, маловероятно, что вышеуказанный сервер все еще будет работать. В случае ошибки замените его новым прокси-сервером.

:/>  Как включить режим инкогнито в разных браузерах

Использование переменных окружения

Начиная с версии PowerShell 7.0, Invoke-WebRequest поддерживает конфигурацию прокси-сервера с помощью переменных окружения

Таким образом, другой способ использования прокси-сервера PowerShell в Invoke-WebRequest заключается в установке следующих двух окружений:

  • HTTP_PROXY — это URL-адрес прокси-сервера, используемый для HTTP-запросов;
  • HTTPS_PROXY — это URL-адрес прокси-сервера, используемый для HTTPS-запросов.

В Windows можно задать две переменные окружения, используя следующий синтаксис PowerShell:

$env:HTTP_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
$env:HTTPS_PROXY = "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

В нашем примере команды будут выглядеть следующим образом:

$env:HTTP_PROXY = "http://190.6.23.219:999"
$env:HTTPS_PROXY = "http://190.6.23.219:999"

В macOS и Linux вам необходимо использовать следующий синтаксис:

export HTTP_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"
export HTTPS_PROXY="<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]"

Итак, две команды будут следующими:

export http_proxy="http://190.6.23.219:999"
export https_proxy="http://190.6.23.219:999"

Отныне каждый запрос Invoke-WebRequest будет проходить через указанные прокси-серверы без необходимости добавлять опцию -Proxy. После настройки envs запустите следующую команду:

Invoke-WebRequest "https://httpbin.org/ip"
You will get the same result as before:
StatusCode        : 200
StatusDescription : OK
Content           : {
                      "origin": "190.6.23.219"
                    }
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Length: 31
                    Content-Type: application/json
                    Date: Thu, 01 Feb 2024 12:36:56 GMT...
Forms             : {}
Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
                    true], [Content-Length, 31]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 31

Чтобы отключить прокси-серверы Invoke-WebRequest, отключите переменные окружения с помощью:

$env:HTTP_PROXY = ""
$env:HTTPS_PROXY = ""
Or on macOS and Linux:
unset HTTP_PROXY
unset HTTPS_PROXY

Как использовать прокси HTTPS и SOCKS в PowerShell

Если вам требуется использовать прокси-сервер HTTPS или SOCKS, необходимо обновить PowerShell до версии 7.x и выше. В противном случае Invoke-WebRequest завершится ошибкой:

Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой https.

Или в случае прокси-сервера SOCKS:

Invoke-WebRequest: ServicePointManager не поддерживает прокси-серверы со схемой socks.

При работе с прокси-серверами HTTPS или SOCKS в PowerShell 7.x структура команд Invoke-WebRequest остается прежней:

Invoke-WebRequest -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>

Отличия заключаются в том, что будет использовать https, socks4, socks4a, socks5 или socks5a вместо http.

Если вы попытаетесь вызвать запрос через прокси-сервер, использующий протокол, отличный от указанного выше, вы получите следующую ошибку:

Invoke-WebRequest: Only the 'http', 'https', 'socks4', 'socks4a' and 'socks5' schemes are allowed for proxies.

Таким образом, полный пример прокси-запроса Invoke-WebRequest SOCKS выглядит так:

Invoke-WebRequest -Proxy "socks5://94.14.109.54:3567" "http://httpbin.org/ip"
As you can expect, the result will be:
StatusCode        : 200
StatusDescription : OK
Content           : {
                      "origin": "94.14.109.54"
                    }
RawContent        : HTTP/1.1 200 OK
                    Connection: keep-alive
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Length: 31
                    Content-Type: application/json
                    Date: Thu, 01 Feb 2024 12:47:56 GMT...
Forms             : {}
Headers           : {[Connection, keep-alive], [Access-Control-Allow-Origin, *], [Access-Control-Allow-Credentials,
                    true], [Content-Length, 31]...}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 31

Необходимые советы и рекомендации

Ознакомьтесь с полезными уловками и ценными советами по работе с прокси-сервером PowerShell Invoke-WebRequest на профессиональном уровне.

:/>  Как сделать фото онлайн с веб камеры?. Как получить от сайта качественные фотографии в хорошем качестве

Игнорирование конфигурации прокси-сервера PowerShell

Если вы хотите запретить Invoke-WebRequest использовать настроенный прокси-сервер PowerShell для чтения из переменных окружения, вы можете воспользоваться параметром -NoProxy следующим образом:

Invoke-WebRequest -NoProxy <Uri>

Эта команда предписывает Invoke-WebRequest связаться с без использования прокси-сервера.

Чтобы убедиться в работоспособности данного подхода, настройте прокси-сервер в envs и запустите его:

Invoke-WebRequest -NoProxy "https://httpbin.org/ip"
Avoid SSL Certificate Errors

При использовании прокси-сервера HTTP ваши запросы могут не выполняться из-за ошибок SSL-сертификата. Чтобы избежать этого, задайте параметр -SkipCertificateCheck:

Invoke-WebRequest -SkipCertificateCheck -Proxy "<PROTOCOL>://[<USERNAME>:<PASSWORD>]@<HOST>[:<PORT>]" <Uri>

– SkipCertificateCheck помогает избежать ошибок сертификатов, разрешая небезопасные подключения к серверу. Имейте в виду, что использование этого параметра небезопасно. Задавайте его только при работе с известными хостами.

Например, вы можете связываться с HTTPBin через прокси-сервер, обходя проблемы с SSL, с помощью следующего:

Invoke-WebRequest -SkipCertificateCheck -Proxy "http://190.6.23.219:999" "https://httpbin.org/ip"

Какой прокси-сервер PowerShell следует использовать?

Ответ на этот вопрос меняется в зависимости от того, чего вы хотите достичь с помощью запроса Invoke-WebRequest. Чтобы найти подходящий прокси-сервер PowerShell для ваших нужд, ознакомьтесь с различными типами доступных прокси-серверов:

  • Прокси-серверы центров обработки данных: они быстрые и дешевые, но сайты могут легко обнаружить и заблокировать их из-за их идентифицируемых диапазонов IP-адресов.
  • Резидентные прокси-серверы: они предлагают ротацию подлинных IP-адресов с реальных устройств в определенных местах. Это означает, что они могут гарантировать высокий уровень анонимности. Резидентные прокси-серверы идеально подходят для доступа к сайтам, использующим географические ограничения, или для обхода мер по борьбе с ботами.
  • Прокси-серверы интернет-провайдеров (ISP): они безопасны, быстры и очень надежны, поскольку предоставляют статические IP-адреса устройств, зарегистрированных у интернет-провайдеров. Прокси-серверы ISP также называют резидентными статическими прокси-серверами, и они являются идеальным решением для мониторинга оптимизации поисковых систем (SEO) и исследования рынка.
  • Мобильные прокси-серверы: они предоставляют IP-адреса с реальных мобильных устройств для обеспечения высокого уровня анонимности. Они полезны для доступа к приложениям, сайтам или контенту, специально разработанному для мобильных устройств.

Заключение

Из этого руководства по прокси-серверу PowerShell вы узнали, что представляет собой инструмент Invoke-WebRequest, как он работает и как его использовать с прокси-сервером HTTP/HTTPS/SOCKS. Как оказалось, нельзя полагаться на прокси-серверы от бесплатных поставщиков. Поэтому единственное решение, которое необходимо принять, — это выбор поставщика услуг прокси-серверов. Экономьте время и энергию и обращайтесь непосредственно к Bright Data — лучшей компании на рынке в этой области.

Bright Data управляет лучшими прокси-серверами в мире, обслуживая компании из списка Fortune 500 и более 20 000 клиентов. Ее всемирная сеть прокси-серверов включает в себя:

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

Поговорите с одним из наших торговых представителей и узнайте, какие продукты Bright Data лучше всего отвечают вашим потребностям.

Кредитная карта не требуется

Use CodeInterview’s Online PowerShell IDE to streamline your interviews. Our platform supports effective real-time collaboration between interviewers and candidates.

PowerShell at CodeInterview

Getting Started with Our Online PowerShell IDE

This environment runs PASH 7.0.0.

Here is a simple example of a PowerShell script:

# A simple PowerShell script to greet a predefined user
$name = "John Doe"
Write-Host "Hello, $name! Welcome to the PowerShell scripting tutorial." 

Simplify your Technical Interviews

Discover the power of our Online PowerShell IDE. Our advanced tools streamline the evaluation process, helping you identify top talent quickly and accurately. Transform your hiring strategy and build a stronger team with ease.

Get started with CodeInterview now

No credit card required, get started with a free trial or choose one of our premium plans
for hiring at scale.