본문 바로가기

파워쉘

[파워쉘] InternetExplorer.Application에서 POST 방식으로 데이터 넘기기


아래 스크립트와 같이 만들면 된다.

이 스크립트의 앞 부분에는 

$ie = New-Object -com internetexplorer.application

$ie.Visible = $true
요런 스크립트들이 생략되어 있다.


#

# 내가 수집해야 하는 정보는 nn이라는 항목이다.(intro, chk는 고정 값)

#

$ie.Document.getElementsByName('nn') | %{ $nn = $_.value}

$ie.Document.getElementsByName('intro') | %{ $intro = $_.value}

$ie.Document.getElementsByName('chk') | %{ $chk = $_.value}

$ie.document.forms | %{$action = $_.action}

#

# 내가 직접 설정하는 정보는 아래와 같다.

# 한글 및 특수기호 때문에 url 인코딩이 필요하다.

#

$email = 'email+address@gmail.com'

$intro = '잘 부탁해'

Add-Type -AssemblyName System.Web

$email = [Web.Httputility]::UrlEncode($email)

$intro = [Web.Httputility]::UrlEncode($intro)

#

# POST data를 만든다.

#

$post = 'sex=1&by=1988&bm=11&bd=11&email='+$email+'&pass=qqqqwwww&nn='+$nn+'&intro='+$intro+'&chk='+$chk

$post = [System.Text.Encoding]::Default.GetBytes($post)

#

# 위에서 설정한 정보들을 이용하여 Post 방식으로 직접 action url을 호출한다.

# post를 의미하는 헤더 = Content-Type: application/x-www-form-urlencoded

$headers = "User-Agent:Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e Safari/8536.25"+[char]10+[char]13, "Content-Type: application/x-www-form-urlencoded"+[char]10+[char]13

$ie.Navigate2($action,0,0,$post,$headers)