【PHP】使用 Google Safe Browsing API v4 進行線上網頁安全掃描

有時候我們會看見有些網站會有『網址安全性掃描由Google提供』的字樣
這是採用了Google Safe Browsing API的服務

Google Safe Browsing

一般的使用者,可以直接使用 Google 資訊公開報告 的 安全瀏覽網站狀態
或是透過網址參數進行查詢網頁安全性 ( 範例網址 )

https://www.google.com/safebrowsing/diagnostic?site=欲檢測網址

 
然而 網站的架設者可以參考 Google Safe Browsing API 說明進行資訊的擷取
目前 Safe Browsing API v3 僅支援至 2017 年初,建議直接使用 v4
 

Google Safe Browsing API v4

1. 首先,至 Cloud Platform Console > api資料庫管理員 > 搜尋 Safe Browsing APIs
2. 啟動該API > 前往憑證 > 啟動 > 獲得 API金鑰
3. safe_api.php

<?php
$TestUrl=$_GET["url"];
$apikey = "YOUR_API_KEY";
$data='{
	"client":{"clientId": "SafeiZO","clientVersion": "1.0"},
	"threatInfo":{
		"threatTypes":["MALWARE", "SOCIAL_ENGINEERING"],
		"platformTypes":["WINDOWS"],
		"threatEntryTypes":["URL"],
		"threatEntries":[{"url": "'.$TestUrl.'"}]
	}
}';
$url_api ="https://safebrowsing.googleapis.com/v4/threatMatches:find?key=".$apikey."";
function GETData($url, $post){
	$ch=curl_init();
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", 'Content-Length: ' . strlen($post)));
	curl_setopt($ch, CURLOPT_POST, 1);
	curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	$result=curl_exec($ch);
	return $result;
}
$GOtest=GETData($url_api, $data);
$str=json_decode($GOtest);
$stats=$str->matches[0]->threatType;
if(isset($stats)){echo"該網頁已受感染";}
?>

4. 進入 http://localhost/safe_api.php?url=欲檢測網址