在跳板機只有Windows情況,而且安裝別的程式又沒權限,只好利用Windows的PowerShell來達成command line做Http GET的作用:
在PowerShell提示下只需一行:就可以做到網路爬蟲
(Invoke-WebRequest "http://172.22.1.201:8080/api/cmd?cmd=api&type=Query").content
在Invoke-WebRequest後接的URL字串可以不用雙引號,但&是特殊字元,所以遇到&就要雙引號。
而若遇到中文參數要encode,但並非所有Windows平台都有支援System.Web套件,所以要使用前先執行
Add-Type -AssemblyName System.Web
這樣才能把套件引進來,接著call法如下:
(Invoke-WebRequest ("http://172.22.1.201:8080/twnicapi/cmd?cmd=api&type=¶m={0}" -f [System.Web.HttpUtility]::UrlEncode("中文"))).content
用括號把字串括起,${0}為引數,-f後面接的參數依序對映引數${0}、${1}...,而${0}就是[System.Web.HttpUtility]::UrlEncode("中文”),把中文二字encode。
下載檔案:
Invoke-WebRequest -Uri "http://www.contoso.com" -OutFile ./Downloads/file1
有時為解決弱掃問題,需要取得HTTP Response的headers資訊。程式如下:
param(
[Parameter(ValueFromPipeline=$true)]
[string] $Url
)
$request = [System.Net.WebRequest]::Create( $Url )
$headers = $request.GetResponse().Headers
$headers.AllKeys |
Select-Object @{ Name = "Key"; Expression = { $_ }},
@{ Name = "Value"; Expression = { $headers.GetValues( $_ ) } }
使用方式:
> ./Get-HTTPHeaders.ps1 http://10.7.20.56:9080/sfa/assets/lib/html2canvas.min.js
Key Value
--- -----
Cache-Control max-age=0
Date Tue, 29 Nov 2022 08:11:45 GMT
Content-Type application/javascript
Last-Modified Thu, 17 Mar 2022 16:13:36 GMT
Content-Length 166735
Content-Language zh-TW