PowerShell. Разбор на сайт или вземане на стойност от сайт.

Понякога, когато изпълнявате скрипт, трябва да разчитате на стойности от уеб сайтове. PowerShell от версия 3.0 има чудесен Invoke-WebRequest cmdlet за това.

Нека да разгледаме по-подробно скрипта:

. В реда $trash = $li.innerhtml -match " \ ( ( . * ? ) \ ) " премахнете интервалите вътре в кавичките » \ ( ( . * ? ) \ ) «.

Този скрипт извършва следното действие: на сайта "http://coolcode.ru" намираме заглавието "Администриране" и виждаме колко статии има в това заглавие.

Първо създаваме обект със страница на уебсайт:

Това използва най-важния cmdlet Invoke-WebRequest

В този пример използваме само необходимите параметри:

Кратката команда Invoke-WebRequest поддържа следните протоколи: HTTP, HTTPS, FTP и FILE. В този параметър трябва да посочите URL адреса на страницата, в нашия случай това е http://coolcode.ru'.

Указва метода, използван за уеб заявката. Валидни стойности са Default, Delete, Get, Head, Merge, Options, Patch, Post, Put и Trace.

Нека да преминем през тях:

Глава Получаване на главата, без тялото. Използва се главно за получаване на метаданни.

Вземи Използва се за получаване на съдържанието на посочения ресурс.

Опции Използва се за определяне на възможностите на уеб сървъра или опциите за връзка.

Публикуване Използва се за изпращане на данни към сървъра.

Поставяне Зареждане на съдържание в указания uri.

Кръпка Същото като Put, но се прилага само към фрагмент от ресурс

Изтриване Изтрива посочения ресурс.

Проследяване Връща получената заявка с информация за добавяне и промяна на заявката от междинни сървъри.

Обединяване...

-Тип съдържание

Указва типа съдържание в уеб заявката.по подразбиране е "application/x-www-form-urlencoded". Използвам този метод, за да получа данните в правилното кодиране :-ContentType "text/plain; charset=utf-8". По някаква причина този параметър работи за мен с "-Method GET" веднъж, след промяна на "-Method POST" всичко работи правилно.

Командлетът Invoke-WebRequest също има много по-интересни параметри, които може да ви заинтересуват:

Този параметър задава тялото на заявката и се използва за попълване на полетата на сайта. (ще обсъдим тази опция в друга статия)

-Сертификат

Указва сертификата за прилагане на защита в уеб заявката. За да намерите сертификата, използвайте cmdlet Get-PfxCertificate или използвайте Get-ChieldItem на устройството Cert:. Ако сертификатът не е валиден или няма достатъчно пълномощия, командата ще бъде неуспешна.

- Сертификат Thumbprint

Указва потребителския акаунт, който има право да подаде заявка за цифров сертификат с публичен ключ (X509).

- Удостоверение

Указва потребителския акаунт, който има разрешение да изпрати заявката. По подразбиране е текущият потребител.

-Деактивирайте KeepAlive

Задава стойността на постоянната HTTP връзка в HTTP заглавката на False. По подразбиране постоянната HTTP връзка е активирана.

Задава заглавката на уеб заявката. Можете да посочите хеш таблица или речник.

Получаване на съдържанието на уеб заявка от файл.

Указва колко пъти Windows PowerShell може да опита да се свърже с дадения URI, преди да възникне грешка при свързване. Стойността по подразбиране е 5. Стойност 0 блокира всички опити.

Записва тялото на отговора в посочения файл.

Връща резултатите в конзолата, в допълнение към писанеторезултати във файл. Използва се във връзка с опцията -OutFile

Настройва прокси сървъра да изпълни заявката.

-ProxyCredential

Настройки на акаунта за проксито. Например „User01“ или „Domain01\User01“.

-ProxyUseDefaultCredentials

Използвайте идентификационните данни на текущия потребител, за да се свържете с проксито.

-SessionVariable

Създава сесия на уеб заявка и я съхранява в стойността на посочената променлива. Променливата трябва да бъде въведена без знака за долар "$". Когато е указана променлива на сесия, Invoke-WebRequest създава обект на сесия на уеб заявка и го присвоява на променлива с указаното име. Ще можете да използвате тази променлива веднага щом заявката бъде завършена. Този обект не е постоянна връзка. Той съдържа информация за връзката на заявката, бисквитките, идентификационните данни, максималните стойности за броя на връзките и низовете на потребителския агент. Този обект може да се използва за обмен на състояния на данни между уеб заявки.

-TimeoutSec

Този параметър задава времето, през което заявката може да бъде чакаща. Времето е посочено в секунди. Стойността по подразбиране е 0, което показва неопределено изчакване (произволно дълго).

-Трансферно кодиране

Указва стойността на компресия за HTTP заглавката. Валидни стойности са Chunked, Compress, Deflate, GZip и Identity.

-UseBasicParsing

Използване на обект за отговор за HTML без анализ на DOM.

-UseDefaultCredentials

Използване на идентификационните данни на текущия потребител за изпращане на уеб заявка.

Използвайте низ за удостоверяване със сайта на агента. По подразбиране е "Mozilla/5.0 (Windows NT; Windows NT 6.1; en-US) WindowsPowerShell/3.0".

-WebSession

Назначава сесияуеб заявка. Променливата е посочена със знака за долар ($).

За да промените стойността на параметрите в уеб сесия, използвайте параметри на cmdlet като UserAgent или Credential. Параметрите на cmdlet имат предимство пред стойностите в сесията на уеб заявката.

Получената променлива ще съдържа информация за