mirror of
https://github.com/Lissy93/web-check.git
synced 2025-05-18 21:20:45 +02:00
Adds support for Google Safe Browsing in threats API endpoint
This commit is contained in:
parent
759bb603df
commit
8ca747c02f
@ -2,6 +2,36 @@ const axios = require('axios');
|
|||||||
const xml2js = require('xml2js');
|
const xml2js = require('xml2js');
|
||||||
const middleware = require('./_common/middleware');
|
const middleware = require('./_common/middleware');
|
||||||
|
|
||||||
|
const getGoogleSafeBrowsingResult = async (url) => {
|
||||||
|
try {
|
||||||
|
const apiKey = process.env.GOOGLE_CLOUD_API_KEY;
|
||||||
|
const apiEndpoint = `https://safebrowsing.googleapis.com/v4/threatMatches:find?key=${apiKey}`;
|
||||||
|
|
||||||
|
const requestBody = {
|
||||||
|
threatInfo: {
|
||||||
|
threatTypes: [
|
||||||
|
'MALWARE', 'SOCIAL_ENGINEERING', 'UNWANTED_SOFTWARE', 'POTENTIALLY_HARMFUL_APPLICATION', 'API_ABUSE'
|
||||||
|
],
|
||||||
|
platformTypes: ["ANY_PLATFORM"],
|
||||||
|
threatEntryTypes: ["URL"],
|
||||||
|
threatEntries: [{ url }]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = await axios.post(apiEndpoint, requestBody);
|
||||||
|
if (response.data && response.data.matches) {
|
||||||
|
return {
|
||||||
|
unsafe: true,
|
||||||
|
details: response.data.matches
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return { unsafe: false };
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
return { error: `Request failed: ${error.message}` };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const getUrlHausResult = async (url) => {
|
const getUrlHausResult = async (url) => {
|
||||||
let domain = new URL(url).hostname;
|
let domain = new URL(url).hostname;
|
||||||
return await axios({
|
return await axios({
|
||||||
@ -52,10 +82,11 @@ const handler = async (url) => {
|
|||||||
const urlHaus = await getUrlHausResult(url);
|
const urlHaus = await getUrlHausResult(url);
|
||||||
const phishTank = await getPhishTankResult(url);
|
const phishTank = await getPhishTankResult(url);
|
||||||
const cloudmersive = await getCloudmersiveResult(url);
|
const cloudmersive = await getCloudmersiveResult(url);
|
||||||
if (urlHaus.error && phishTank.error && cloudmersive.error) {
|
const safeBrowsing = await getGoogleSafeBrowsingResult(url);
|
||||||
throw new Error(`All requests failed - ${urlHaus.error} ${phishTank.error} ${cloudmersive.error}`);
|
if (urlHaus.error && phishTank.error && cloudmersive.error && safeBrowsing.error) {
|
||||||
|
throw new Error(`All requests failed - ${urlHaus.error} ${phishTank.error} ${cloudmersive.error} ${safeBrowsing.error}`);
|
||||||
}
|
}
|
||||||
return JSON.stringify({ urlHaus, phishTank, cloudmersive });
|
return JSON.stringify({ urlHaus, phishTank, cloudmersive, safeBrowsing });
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new Error(error.message);
|
throw new Error(error.message);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user