ipqs-isAnonymized.js
/*
IPQualityScore's Proxy Detection & Fraud Scoring API allows you to
Proactively Prevent Fraud™ via a simple API that provides over 25 data
points for risk analysis, geo location, and IP intelligence.
https://www.ipqualityscore.com/documentation/proxy-detection/overview
Outcomes:
"error"
"tor"
"vpn"
"proxy"
"not_detected"
*/
var USER_AGENT = "Put Your User Agent Here"
var API_KEY = "Put Your API Key Here"
outcome = "error";
var payload = sharedState.get("IPQualityScore")
if (payload) {
var jsonResult = JSON.parse(payload);
} else {
var ipaddress = requestHeaders.get("X-FORWARDED-FOR").get(0).split(",")[0].trim();
var request = new org.forgerock.http.protocol.Request();
request.setMethod("GET");
request.setUri("https://ipqualityscore.com/api/json/ip/" + API_KEY + "/" + ipaddress + "?strictness=0&allow_public_access_points=false&fast=false&lighter_penalties=false&mobile=false");
request.getHeaders().add("Accept","application/json");
request.getHeaders().add("User-Agent", USER_AGENT);
var response = httpClient.send(request).get();
if (response.getStatus().getCode() === 200) {
var payload = response.getEntity().getString();
var jsonResult = JSON.parse(payload)
if (jsonResult.success === true) {
sharedState.put("IPQualityScore", payload);
}
}
}
if (jsonResult) {
if (jsonResult.tor === true) {
outcome = "tor";
} else if (jsonResult.vpn === true) {
outcome = "vpn";
} else if (jsonResult.proxy === true) {
outcome = "proxy";
} else {
outcome = "not_detected";
}
}