To detect if an IP address is a VPN using IP2Location.io in Scala, you can use the IP2Location.io API to retrieve geolocation and related data.
import com.google.gson.*
import java.net.URI
import java.net.http.{HttpClient, HttpRequest, HttpResponse}
@main def Test(): Unit = {
try {
val key = "YOUR_API_KEY"
val ip = "8.8.8.8"
val url = "https://api.ip2location.io/?format=json&key=" + key + "&ip=" + ip
val request = HttpRequest.newBuilder.uri(new URI(url)).GET.build
val client = HttpClient.newHttpClient
val response = client.sendAsync(request, HttpResponse.BodyHandlers.ofString).join()
val statusCode = response.statusCode()
if (statusCode == 200) {
val rawJSON = response.body()
val myObj = JsonParser.parseString(rawJSON).getAsJsonObject
if (myObj.has("proxy")) {
if (myObj.getAsJsonObject("proxy").get("is_vpn").getAsBoolean) {
System.out.println("The IP " + ip + " is a VPN.")
}
else {
System.out.println("The IP " + ip + " is NOT a VPN.")
}
} else {
throw Exception("ERROR: The is_vpn field requires a paid subscription to the Security plan.")
}
} else if (statusCode == 400 || statusCode == 401) {
val rawJSON = response.body()
if (rawJSON.contains("error_message")) {
throw Exception("ERROR: " + JsonParser.parseString(rawJSON).getAsJsonObject.getAsJsonObject("error")
.get("error_message").getAsString
)
}
throw Exception(rawJSON)
} else {
throw Exception(response.body())
}
} catch {
case e: Exception => System.out.println(e)
}
}
This script will check if the specified IP address is a VPN. Make sure to replace 8.8.8.8 with the IP address you want and replace YOUR_API_KEY to your own API key.
Empower your applications with accurate IP geolocation information now.
Try It for Free