PHP Integración - Detector de tráfico fraudulento

PHP Integración

Integración básica en PHP

Como código de ejemplo, lo haremos lo más sencillo posible. Lo primero será hacer una petición curl a nuestro endpoint. Pasaremos la respuesta a un Array ($output) con json_decode($response,1); para tratar la respuesta, y recibiremos un status de la petición en $http_status

<?php
$ip = '148.56.53.217'; //-- IP a consultar
$apiKey = 'your_api_key';

$headers = [
    'X-Key: '.$apiKey,
];
$ch = curl_init("https://www.iphunter.info:8082/v1/ip/".$ip);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$output = json_decode(curl_exec($ch), 1);
$http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

Tipos de respuestas de error

En $http_status (integer) podemos recibir los siguientes valores:

- 400 Esto nos indica que hay parámetros que no están bien.

- 429 Significa que hemos alcanzado el máximo de peticiones al día permitidos por el plan adquirido.

Ejemplo de respuesta de error en $output (Array):

Array
(
    [status] => error
    [code] => Bad params
)

Para controlar el error en la petición haríamos lo siguiente:

if($http_status != 200) {
    echo $output['code']; //-- nos avisará que tipo de error hemos cometido
}

Respuesta correcta

Cuando la respuesta es correcta recibiremos en $http_status (integer) el siguiente valor:

- 200 Petición realizada correctamente.

Ejemplo de respuesta correcta en $output (Array):

Array
(
    [status] => success
    [data] => Array
        (
            [ip] => 148.56.53.217
            [ip_num] => 2486711769
            [country_code] => ES
            [country_name] => Spain
            [city] => Madrid
            [isp] => Vodafone Espana S.A.U.
            [domain] => vodafone.es
            [block] => 0
        )

)

Si la petición ha sido correcta podemos hacer lo siguiente:

if($http_status == 200) {
    //-- Si es 1, procederemos a bloquear al usuario
    if($output['data']['block'] == 1) {
        //-- acción para bloquear al usuario
    }
}