ПоверСхелл верзија 3.0 уводи могућност директног приступа и рада са ХТМЛ веб страницама на Интернету. За то је развијен посебан цмдлет. Инвоке-ВебРекуест. Овај цмдлет вам омогућава да имплементирате многе сценарије: од могућности преузимања / отпремања датотеке са / на било које веб странице путем ХТТП / ХТТПС / ФТП, завршавајући са могућности рашчлањивања ХТМЛ страница, надгледања стања веб сервера, попуњавања и слања веб образаца. Опћенито, нови цмдлет пружа све потребне методе за кретање по ДОМ стаблу ХТМЛ документа. У овом чланку ћемо погледати неке основне примере рада са ПоверСхелл Инвоке-ВебРекуест цмдлет-ом..
Садржај:
- Коришћење рачунара Инвоке-ВебРекуест
- Добијамо листу свих ХТМЛ веза на страници
- Анализа ХТМЛ страница помоћу Поверсхелл-а
- Како преузети датотеку путем ХТТП-а помоћу програма ПоверСхелл
- Омогућује попуњавање и достављање веб образаца
- Недостаци цмдлета Инвоке-ВебРекуест
Коришћење рачунара Инвоке-ВебРекуест
Цмдлет Инвоке-Вебрекуест (алиас вгет) може слати и примати ХТТП, ХТТПС и ФТП захтеве, обрађивати одговор који је вратио сервер. Одговор је збирка образаца, веза, слика и других важних елемената ХТМЛ документа.
Покушајмо следећу команду:
Инвоке-ВебРекуест -Ури "хттп://винитпро.ру"
Као што видите, повратни одговор није једноставан ХТМЛ код за страницу. Видите различита својства веб документа. Цмдлет Инвоке-ВебРекуест, као и већина других ПоверСхелл цмдлета, ради на објектима. Инвоке-ВебРекуест враћа објект типа ХтмлВебРеспонсеОбјецт. Погледајмо сва својства овог објекта:
$ ВебРеспонсеОбј = Инвоке-ВебРекуест -Ури "хттп://винитпро.ру"
$ ВебРеспонсеОбј | Гет-мембер
Да бисте добили сирови ХТМЛ код веб странице која се налази у овом објекту, извршите:
$ ВебРеспонсеОбј.цонтент
Можете вратити ХТМЛ код заједно са ХТТП заглавима које је вратио веб сервер:
$ ВебРеспонсеОбј.равцонтент
Можете само да проверите код одговора веб сервера и ХТТП заглавља ХТМЛ странице:
$ ВебРеспонсеОбј.Хеадерс
Као што видите, веб сервер је вратио одговор 200, тј. захтев је успео и веб сервер је доступан и исправно ради.
Добијамо листу свих ХТМЛ веза на страници
Окрећемо се главној страници нашег вебсајта и добијамо листу веза на њему:$ СитеАдресс = "хттп://винитпро.ру"
$ ХттпЦонтент = Инвоке-ВебРекуест -УРИ $ СитеАдресс
$ ХттпЦонтент.Линкс | Фореацх $ _. Хреф
Да бисте добили текст везе (који се налази у елементу ИннерТект), можете користити ову конструкцију:
$ ХттпЦонтент.Линкс | фл иннерТект, хреф
Везе можете одабрати само са одређеном ЦСС класом:
$ ХттпЦонтент.Линкс | Вхере-Објецт $ _. Цласс -ек "бројеви страница" | фл иннерТект, хреф
Или одређени текст у УРЛ-у:
$ ХттпЦонтент.Линкс | Вхере-Објецт $ _. Хреф-лике "* екцханге *" | фл иннерТект, хреф
Анализа ХТМЛ страница помоћу Поверсхелл-а
Цмдлет Инвоке-ВебРекуест омогућава вам брзо и повољно анализирање садржаја било које веб странице. Приликом обраде ХТМЛ странице из њеног садржаја формирају се колекције веза (линкова), веб обрасци (обрасци), слике (слике), скрипте (скрипте) итд..
Користећи Поверсхелл, добијамо садржај главне странице нашег вебсајта:
$ Имг = Инвоке-ВебРекуест "хттпс://винитпро.ру/"
Затим набрајамо све слике на овој страници:
$ Имг.Имагес
Формираћемо колекцију пуних УРЛ путања за коришћене слике:
$ имагес = $ Имг.Имагес | селецт срц
Иницијализирајте нову инстанцу класе ВебЦлиент:
$ вц = Нев-Објецт Систем.Нет.ВебЦлиент
И преузмите све слике са странице (са оригиналним именима) у директорију ц: \ тоолс \:
$ имагес | фореацх $ вц.ДовнлоадФиле ($ _. срц, ("ц: \ тоолс \" + [ио.патх] :: ГетФилеНаме ($ _. срц))
Занимљив пример коришћења цмдлет-а Инвоке-ВебРекуест је начин налажења спољне ИП адресе рачунара из ПоверСхелл-а.
Како преузети датотеку путем ХТТП-а помоћу програма ПоверСхелл
Инвоке-ВебРекуест може радити као аналогни Вгет или цУРЛ за Виндовс, омогућавајући вам да преузмете жељену датотеку или датотеке са веб странице или фтп странице. Претпоставимо да морамо да користимо ПоверСхелл за преузимање одређене датотеке путем ХТТП-а (у нашем примеру Мозилла Фирефок дистрибуција). Покрените следећу наредбу:
Инвоке-ВебРекуест "хттпс://довнлоад.мозилла.орг/?продуцт=фирефок-32.0.3-ССЛ&ос=вин&ланг=ен" -филе "ц: \ тоолс \ фирефок сетуп 32.0.3.еке"
Као резултат покретања цмдлета, датотека ће бити преузета са наведеног УРЛ-а и сачувана у директорију ц: \ тоолс \ под именом фирефок сетуп 32.0.3.еке. Ако желите да преузмете датотеку са ФТП места, само замените хттп: // с фтп: //.
Такође можете да преузмете датотеке са веб сервера користећи БИТС у синхроном режиму.Тако на одређеној веб страници лако можете да пронађете све везе које спадају у одређене критеријуме (класа веза, резолуција у називу датотеке, урл адреса) и преузимате датотеке користећи примљене везе. На пример, постоји веб локација са гомилом веза до ПДФ докумената. Ваш задатак је да преузмете све те датотеке на свој рачунар. Окосница ПоверСхелл скрипте за масовно преузимање датотека може изгледати овако:
$ ОутДир = "Ц: \ Довнлоадс \ доцс \ ПДФ"
$ СитеАдресс = "хттпс://ввв.сите.ру/фрее-пдф-боокс/"
$ ХттпЦонтент = Инвоке-ВебРекуест -УРИ $ СитеАдресс
$ ХттпЦонтент.Линкс | Вхере-Објецт $ _. Хреф -лике "* .пдф" | % Инвоке-ВебРекуест -Ури $ _. Хреф -ОутФиле ($ ОутДир + $ (Гет-Рандом 100000) + ". Пдф")
Као резултат скрипте у циљном директорију, преузеће се све ПДФ датотеке са странице. Свака датотека се чува под произвољним именом..
У ПоверСхелл 6.1, цмдлет Инвоке-ВебРекуест подржава режим наставка. Стога, користећи параметар Инвоке-ВебРекуест -Ури $ Ури -ОутФиле $ ОутФиле -Настави можете да наставите са преузимањем датотеке у случају пада канала или сервера.Омогућује попуњавање и достављање веб образаца
Многи веб сервиси захтијевају уношење различитих података у ХТМЛ обрасце да би дјеловали. Коришћењем Инвоке-Вебрекуест Можете приступити било којем ХТМЛ обрасцу, испунити обавезна поља и попуњени образац вратити на сервер. У овом примеру ћемо показати како се помоћу Поверсхелл-а пријавити у поштанско сандуче популарног руског сервиса маил.ру преко његовог стандардног веб облика.
Помоћу следеће конструкције спремамо податке о колачићима за везу у засебну променљиву сесију:
$ маилру = Инвоке-ВебРекуест хттпс://е.маил.ру/логин -СессионВариабле сессион
Следећа наредба приказује листу поља која треба попунити у ХТМЛ ауторизацијском облику (образац се зове ЛогинЕктернал):
$ маилру.Формс ["ЛогинЕктернал"]. Поља
Доделите потребне вредности свим пољима:
$ маилру.Формс ["ЛогинЕктернал"]. Поља ["Логин"] = "тестмаил@маил.ру"
$ маилру.Формс ["ЛогинЕктернал"]. Поља ["Лозинка"] = "Стр0НгП $$ в0рд"
Итд ... .
Да бисте попуњени образац послали на веб сервер, позовите атрибут акције ХТМЛ обрасца.
$ Лог = Инвоке-ВебРекуест -метход ПОСТ -УРИ ("хттпс://е.маил.ру/логин" + $ маилру.Формс ["ЛогинЕктернал"]. Акција) -Боди $ маилру.Формс ["ЛогинЕктернал"]. Фиелдс -ВебСессион $ сесија
Недостаци цмдлета Инвоке-ВебРекуест
Један од главних недостатака цмдлет-а Инвоке-ВебРекуест је његова релативно мала брзина. Када се преузме ХТТП датотека, ток се у потпуности меморира у меморију, а тек након што је комплетно преузимање завршено, спрема се на диск. Дакле, при преузимању великих датотека може вам понестати меморије.
Још једно је питање што је цмдлет Инвоке-ВебРекуест уско повезан са Интернет Екплорер-ом. На пример, у издањима Виндовс Сервер Цоре где ИЕ није инсталиран, не можете да користите цмдлет Инвоке-ВебРекуест.
Ако се цертификат са властитим потписом користи на ХТТП локацији, онда цмдлет Инвоке-ВебРекуест одбија да прима податке са њега. Да бисте игнорисали неважећи ССЛ сертификат, користите следећи код:
Можете занемарити ССЛ сертификат овако:адд-типе @ "
користећи Систем.Нет;
користећи Систем.Сецурити.Цриптограпхи.Кс509Цертификате;
јавна класа ТрустАллЦертсПолици: ИЦертифицатеПолици
јавни боол ЦхецкВалидатионРесулт (
СервицеПоинт срвПоинт, Кс509Цертифицате цертификат,
Захтев за ВебРекуест, инт цертифицатеПроблем)
повратак истинит;
"@
[Систем.Нет.СервицеПоинтМанагер] :: ЦертифицатеПолици = Нови објекат ТрустАллЦертсПолици
$ ресулт = Инвоке-ВебРекуест -Ури "хттпс://сите.ру"