diff --git a/app/Http/Controllers/HumanVerification.php b/app/Http/Controllers/HumanVerification.php
index 671b39f57bde472731ebdb2d4614e963e85ac7eb..e610f63dfa4ca7687fcff83f0bc804b23f3767db 100644
--- a/app/Http/Controllers/HumanVerification.php
+++ b/app/Http/Controllers/HumanVerification.php
@@ -108,7 +108,7 @@ class HumanVerification extends Controller
     private static function removeUser($request, $uid)
     {
         $redis = Redis::connection('redisCache');
-        $id = hash("sha512", $request->ip());
+        $id = hash("sha512", HumanVerification::getIP($request));
 
         $userList = $redis->smembers(HumanVerification::PREFIX . "." . $id);
         $pipe = $redis->pipeline();
@@ -168,10 +168,30 @@ class HumanVerification extends Controller
 
     private static function checkId($request, $id)
     {
-        if (hash("sha512", $request->ip() . $_SERVER["AGENT"] . "uid") === $id) {
+        if (hash("sha512", HumanVerification::getIP($request) . $_SERVER["AGENT"] . "uid") === $id) {
             return true;
         } else {
             return false;
         }
     }
+
+    private static function getIP($request)
+    {
+        $ip = $request->ip();
+        $serverAddress = empty($_SERVER['SERVER_ADDR']) ? "144.76.88.77" : $_SERVER['SERVER_ADDR'];
+        $queryUrl = "https://tor.metager.org?password=" . urlencode(env("TOR_PASSWORD")) . "&ra=" . urlencode($ip) . "&sa=" . urlencode($serverAddress) . "&sp=443";
+
+        $ch = curl_init($queryUrl);
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        curl_setopt($ch, CURLOPT_TIMEOUT, 1);
+        curl_exec($ch);
+        $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
+        curl_close($ch);
+
+        if ($httpcode === 200) {
+            return "999.999.999.999";
+        } else {
+            return $ip;
+        }
+    }
 }