Как я могу запросить несколько URL-адресов с помощью Google Safe Browsing API с помощью Powershell? - PullRequest
1 голос
/ 27 мая 2020

Приведенный ниже сценарий отлично работает для проверки одного URL-адреса, но каков самый простой способ проверить список URL-адресов в одном запросе? Превращение $URL в массив не работает (проверяется только первая запись).

$HEADERS = @{ 'Content-Type' = "application/json" }
$GOOGLE_API_KEY='[API Key]'
$Uri = 'https://safebrowsing.googleapis.com/v4/threatMatches:find?key='+ $GOOGLE_API_KEY
$URL = 'http://www.sitetocheck.com'
$BODY = @()
$BODY +=[pscustomobject]@{"client" = @{"clientId" = "company"; "clientVersion" = "1.0"}; "threatInfo" = @{"threatTypes" = "MALWARE","SOCIAL_ENGINEERING","THREAT_TYPE_UNSPECIFIED","UNWANTED_SOFTWARE","POTENTIALLY_HARMFUL_APPLICATION"; "platformTypes" = "ANY_PLATFORM"; "threatEntryTypes" = "URL"; "threatEntries" = @{"url" = $URL}}}
$JSONBODY = $BODY | ConvertTo-Json
Invoke-RestMethod -Method 'POST' -Uri $Uri -Body $JSONBODY -Headers $HEADERS

1 Ответ

1 голос
/ 27 мая 2020

Если вы посмотрите на свой существующий код, вы обнаружите, что единственное, что выводит его значение из целевого URL, - это тело запроса.

Подготовьте значения URL в виде массива, а затем возьмите код, создает тело запроса и вызывает Invoke-RestMethod и помещает его внутрь al oop (или ForEach-Object):

$URLs = 'http://www.sitetocheck.com','http://www.othersitetocheck.com','http://somethingelse.com'

$HEADERS = @{ 'Content-Type' = "application/json" }
$GOOGLE_API_KEY='[API Key]'
$Uri = 'https://safebrowsing.googleapis.com/v4/threatMatches:find?key='+ $GOOGLE_API_KEY

foreach($URL in $URLs) {
    $BODY = @([pscustomobject]@{"client" = @{"clientId" = "company"; "clientVersion" = "1.0"}; "threatInfo" = @{"threatTypes" = "MALWARE","SOCIAL_ENGINEERING","THREAT_TYPE_UNSPECIFIED","UNWANTED_SOFTWARE","POTENTIALLY_HARMFUL_APPLICATION"; "platformTypes" = "ANY_PLATFORM"; "threatEntryTypes" = "URL"; "threatEntries" = @{"url" = $URL}}})
    $JSONBODY = $BODY | ConvertTo-Json
    Invoke-RestMethod -Method 'POST' -Uri $Uri -Body $JSONBODY -Headers $HEADERS
}
...