2017-03-08 40 views
1

我正在更新這個標題,因爲我確定它是接受cookie,將它記錄在會話變量中,並將它傳遞給websession中的下一個web請求。儘管我可能更接近,但我仍然無法做到。Invoke-WebRequest:接受一個cookie

關於以下URI:https://support.microsoft.com/en-us/hotfix/kbhotfix 假如沒有什麼餅乾,一個呈現兩個按鈕:

  • 我接受
  • 我不接受

使用PowerShell的Invoke-WebRequest的,我如何「點擊」我接受?

使用各種例子來自各地的網,我一直在努力的以下變化:

$baseUri = "https://support.microsoft.com" 
$uri = $baseURI +"/en-us/hotfix/kbhotfix" 

$Response = Invoke-WebRequest -Uri $uri -SessionVariable sv 

$Response.forms[0].Action #= /en-us/Hotfix/KbHotfix 

$Form = $Response.forms[0] 
$form.fields["accept"] = "Accept" 

$MainPage = Invoke-WebRequest -Uri ($baseUri + $Form.Action) -Method 
$form.Method -Body $form.fields -WebSession $sv 
$MainPage 

但是當我執行「$ MainPage.forms [0]點域,得到的值是」我不接受「或」我接受「這對我來說,表明它沒有」點擊我接受「。

我是否需要調用onClick事件?

任何建議/例如將受到感謝。

(PowerShell的V5)

回答

0

你只需要添加一個額外的cookie:

$cookie = New-Object System.Net.Cookie("hotfixEulaCookie", "1", "/", "support.microsoft.com") 
$sv.Cookies.Add($cookie) 

我想你甚至都不需要的第一個請求。只需創建WebRequestSession變量並將其添加到該變量。

如何解決今後這樣的問題:

  • 使用Web瀏覽器的F12開發人員工具來查看交流和餅乾
  • 看看錶單的HTML代碼和腳本
  • 播放與在提琴手的請求作曲家HTTP請求

這是形式的外觀在HTML:

<input class="eulabutton" id="cancel" name="cancel" onclick="onHotfixEulaAction('cancel', '/kb//')" type="button" value="I Do Not Accept" ms.cmptyp="button" ms.cmpnm="noacpt" ms.title="Donot Accept" ms.interactiontype="22"> 
<input class="eulabutton" id="accept" name="accept" onclick="onHotfixEulaAction('accept', '/hotfix/kbhotfix?kbnum=&amp;kbln=')" type="button" value="I Accept" ms.cmptyp="button" ms.cmpnm="acpt" ms.title="Accept" ms.interactiontype="22"> 

我們尋找onHotfixEulaAction並找到

https://az623152.vo.msecnd.net/cdnresources/2.38/common/script/gsfx/default.js

function onHotfixEulaAction(arg, url) { 
    setcookieval("hotfixEulaCookie", (arg == "accept") ? '1' : '0', '', false); 
    document.location.href = url; 
}