#powershell #web-scraping
Вопрос:
Моя цель здесь-очистить данные с веб-страницы, на которую я должен войти с помощью PowerShell. Чтобы быть прозрачным, это веб-сайт типа недвижимости, и я не знаю, кто еще пытается очистить эти данные, поэтому я действительно не хочу разглашать полный URL-адрес.
У меня есть рабочий код, который, как я полагаю, заходит на веб-страницу, но при попытке посетить какие-либо URL-адреса, кроме этого, каким-то образом говорится, что я не вошел в систему и не возвращает никаких данных.
Этот код является результатом просмотра инструментов разработчика браузера Opera при входе в систему и при переходе к нужному списку содержимого. Я могу щелкнуть правой кнопкой мыши и скопировать как PowerShell запрос GET, но даже отправка его обратно не увенчалась успехом.
$DashboardGet
возвращается свойство ссылки с URL-адресом входа, которое сообщает мне данные, которые я отправляю (в заголовке? Или в переменной сеанса) неправильно сохраняет сеанс в системе?
Но я могу видеть и проверять $PageLogin
, что он вошел на сайт, я просто не могу понять ничего, кроме этого.
$base_URL = 'https://site.webpage.com/'
$site = Invoke-WebRequest $base_URL
$user = Import-Clixml C:Appswebsite_login.xml
$site.Forms.fields.email = $user.UserName
$site.Forms.fields.password = $user.Password
$LoginPayload = $site.Forms.fields | ConvertTo-Json
$loginSite = $site.Forms[0].Action
$PageLogin = Invoke-WebRequest $loginSite -UseBasicParsing -Method POST -Body $LoginPayload -SessionVariable ScapeWebPage
$ScapeWebPage.Cookies.Add((New-Object System.Net.Cookie("XSRF-TOKEN", "lots of boring characters here", "/", "site.webpage.com")))
$ScapeWebPage.Cookies.Add((New-Object System.Net.Cookie("key01", "more boring characters", "/", "site.webpage.com")))
$DashboardGet = Invoke-WebRequest -UseBasicParsing -Uri "https://site.webpage.com/app/dashboard" `
-WebSession $ScapeWebPage -Method GET
$DashboardGet
Комментарии:
1. Ваша
$ScapeWebPage
переменная не определена для вашего первого вызоваInvoke-WebRequest
. Возможно, при последующих вызовах просто отсутствует источник ссылки или источник домена.2. @leeharvey1 к сожалению, сайт упрям, и это не имело никакого значения. Я перешел
-SessionVariable
к первомуInvoke-WebRequest
, но по-прежнему вижу только ссылку «Забыли пройти». Я даже попытался установить PowerShell core 7.1 дляPreserveAuthorizationOnRedirect
параметра, но это не помогло, скорее я не могу войти в систему сейчас.