В интерне­те есть мно­жес­тво сер­висов, с которы­ми мож­но работать, обра­щаясь к их ресур­сам по про­токо­лу HTTP. Веб‑раз­работ­чики пос­тоян­но работа­ют с такими HTTP-зап­росами для дос­тупа к фун­кци­ям внеш­них API или для тес­тирова­ния собс­твен­ных при­ложе­ний. PowerShell для обра­щения к вебу по HTTP пред­лага­ет два стан­дар­тных коман­дле­та: Invoke-WebRequest и Invoke-RestMethod.
 

Командлет Invoke-WebRequest

С помощью коман­дле­та Invoke-WebRequest мож­но нап­равить веб‑сер­веру HTTP-зап­рос и получить от него ответ.

 

Анализ HTML-страниц

Этот коман­длет хорошо под­ходит для ана­лиза HTML-стра­ниц. Еще он уме­ет сох­ранять стра­ницы на локаль­ном дис­ке. В этом он похож на кон­соль­ную ути­литу wget и даже име­ет такой псев­доним:

PSC:\Script>Get-Aliaswget
CommandTypeName
---------------
Aliaswget->Invoke-WebRequest

Об­ратим­ся с помощью Invoke-WebRequest к какой‑нибудь прос­той стра­нице, нап­ример Example Domain.
По умол­чанию Invoke-WebRequest выпол­няет HTTP-зап­рос с методом GET к ресур­су на веб‑сер­вере, адрес ресур­са ука­зыва­ется в качес­тве зна­чения парамет­ра -Uri. В резуль­тате воз­вра­щает­ся объ­ект типа HtmlWebResponseObject, в котором хра­нит­ся информа­ция об отве­те сер­вера:

PSC:\Script>$web=Invoke-WebRequest-Urihttps://example.com/index.html
PSC:\Script>$web|Get-Member
TypeName:Microsoft.PowerShell.Commands.HtmlWebResponseObject
...
PSC:\Script>$web
StatusCode:200
StatusDescription:OK
Content:<!doctypehtml>
<html>
<head>
<title>ExampleDomain</title>
<metacharset="utf-8"/>
<metahttp-equiv="Content-type"content="text/html; char
set=utf-8"/>
<metaname="viewport"conten...
RawContent:HTTP/1.1200OK
Age:497890
Vary:Accept-Encoding
X-Cache:HIT
Content-Length:1256
Cache-Control:max-age=604800
Content-Type:text/html;charset=UTF-8
Date:Mon,12Jul202116:05:14GMT
Exp...
Forms:{}
Headers:{[Age,497890],[Vary,Accept-Encoding],[X-Cache,HIT],[Co
ntent-Length,1256]...}
Images:{}
InputFields:{}
Links:{@{innerHTML=Moreinformation...;innerText=Moreinformation
...;outerHTML=<Ahref="https://www.iana.org/domains/example
">Moreinformation...</A>;outerText=Moreinformation...;ta
gName=A;href=https://www.iana.org/domains/example}}
ParsedHtml:mshtml.HTMLDocumentClass
RawContentLength:1256

В поле StatusCode содер­жится код отве­та от сер­вера (200 для нашего при­мера), в поле StatusDescription — тек­сто­вое опи­сание это­го отве­та (OK).

Содержимое ответа от сервера и HTTP-заголовки

Со­дер­жимое отве­та от сер­вера хра­нит­ся в виде стро­ки в поле Content. В нашем слу­чае здесь будет записан HTML-код:

PSC:\Script>$web.Content
<!doctypehtml>
<html>
<head>
<title>ExampleDomain</title>
<metacharset="utf-8"/>
<metahttp-equiv="Content-type"content="text/html; charset=utf-8"/>
<metaname="viewport"content="width=device-width, initial-scale=1"/>
<styletype="text/css">
body{
background-color:#f0f0f2;
margin:0;
padding:0;
font-family:-apple-system,system-ui,BlinkMacSystemFont,"Segoe UI","Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
}
div{
width:600px;
margin:5emauto;
padding:2em;
background-color:#fdfdff;
border-radius:0.5em;
box-shadow:2px3px7px2pxrgba(0,0,0,0.02);
}
a:link,a:visited{
color:#38488f;
text-decoration:none;
}
@media(max-width:700px){
div{
margin:0auto;
width:auto;
}
}
</style>
</head>
<body>
<div>
<h1>ExampleDomain</h1>
<p>Thisdomainisforuseinillustrativeexamplesindocuments.Youmayusethis
domaininliteraturewithoutpriorcoordinationoraskingforpermission.</p>
<p><ahref="https://www.iana.org/domains/example">Moreinformation...</a></p>
</div>
</body>
</html>

В поле RawContent записы­вает­ся пол­ный ответ от сер­вера с HTTP-заголов­ками в начале:

PSC:\Script>$web.RawContent
HTTP/1.1200OK
Age:497890
Vary:Accept-Encoding
X-Cache:HIT
Content-Length:1256
Cache-Control:max-age=604800
Content-Type:text/html;charset=UTF-8
Date:Mon,12Jul202116:05:14GMT
Expires:Mon,19Jul202116:05:14GMT
ETag:"3147526947+ident"
Last-Modified:Thu,17Oct201907:18:26GMT
Server:ECS(dcb/7F83)
<!doctypehtml>
<html>
<head>
<title>ExampleDomain</title>
...

За­голов­ки отве­та тоже хра­нят­ся отдель­но — в виде хеш‑таб­лицы в свой­стве headers:

PSC:\Script>$web.headers
KeyValue
--------
Age497890
VaryAccept-Encoding
X-CacheHIT
Content-Length1256
Cache-Controlmax-age=604800
Content-Typetext/html;charset=UTF-8
DateMon,12Jul202116:05:14GMT
ExpiresMon,19Jul202116:05:14GMT
ETag"3147526947+ident"
Last-ModifiedThu,17Oct201907:18:26GMT
ServerECS(dcb/7F83)

Скачать:









Важно:


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





Заходи на mc.foxygame.ru:25565

Советуем прочитать