Advanced IP Intelligence Service Using Machine Learning & Modern Computing Techniques
IP Intelligence is a service that determines how likely an IP address is a proxy / VPN / bad IP using advanced mathematical and modern computing techniques
Greatly reduce fraud on e-commerce sites with anti-fraud protection and payment gateway security.
Protect your site from XSS, SQLi, brute force attacks, application scanning, and other automated hacking attempts.
Protect your site from crawlers that steal your content and stop bots from scraping your data.
Prevent users from abusing promotional offers, multiple sign-ups, affiliate abuse, and spam.
Reduce fake views, clicks, and activity that results in click fraud and view fraud with anti-bot detection.
Stop trolls and users trying to bypass bans. Protect account hijacking with enhanced security measures.
oflags=r has been added.
The system is serving millions of API requests a week and growing as more people find it useful in protecting their online infrastructure. Our service is used by gaming communities, e-commerce websites, research universities & institutions, law enforcement, and large financial institutions.
Not all proxy / VPN detection services are the same. The techniques involved can be vastly different and produce noticeable differences. Feel free to compare the results from this service to any other, including paid options from various vendors.
Given an IP address, the system will return a probabilistic value (between 0 and 1) of how likely the IP is a VPN / proxy / hosting / bad IP.
A value of 1 means that the IP is explicitly banned (a web host, VPN, or TOR node) by our dynamic lists. Otherwise, the output will return a real number value between 0 and 1, of how likely the IP is bad / VPN / proxy, which is inferred through machine learning & probability theory techniques using dynamic checks with large datasets.
Billions of new records are parsed each month to ensure the datasets have the latest information and old records automatically expire. The system is designed to be efficient, fast, simple, and accurate.
A quick start to checking any IP address. The web interface by default uses flags=f.
The proxy check system takes in an input via HTTP GET request. The URL is http://check.getipintel.net/check.php and the parameter is ip. The system fully supports IPv4 with partial support for IPv6.
http://check.getipintel.net/check.php?ip=IPHere&contact=YourEmailAddressHere
Include your contact information so I can notify you if a problem arises or if there are core changes. In some situations, people query the system in a wrong manner and assume everything is working (but due to the lack of or improper handling of error codes), it's not the case. Since I only have the connecting IP address, I cannot help the person correct the error.
To include your contact information, add another parameter to your request called contact and provide your email.
If you are contacted, please respond in 2 days or your contact information could be considered as inaccurate. Your information will only be used for the purpose of communication with GetIPIntel.
On a valid request, the system will return a value between 0 - 1 (inclusive) of how likely the given IP is a proxy. On error, a negative value will be returned. If format=json is used, a valid JSON format will be returned with extra information.
If a value of 0.50 is returned, then it is as good as flipping a 2-sided fair coin, which implies it's not very accurate. From personal experience, values > 0.95 should be looked at and values > 0.99 are most likely proxies.
Anything below the value of 0.90 is considered as "low risk". Since a real value is returned, different levels of protection can be implemented. It is best for a system admin to test some sample datasets with this system and adjust implementation accordingly.
Be sure to experiment with the results of this system before you use it live on your projects. If you believe the result is wrong, don't hesitate to contact me, I can tell you why. If it's an error on my end, I'll correct it. If you email me, expect a reply within 12 hours.
| Flags | Data Sets Used | Pros | Cons | Response Time | Suggested Use |
|---|---|---|---|---|---|
| flags=m | dynamic ban lists | fastest, smallest chance for false positives | IPs not on blocklists will get through | < 60 ms | Least false positives | fastest speeds | ok letting some IPs through | only care about proxies & VPNs |
| flags=b | dynamic ban lists, dynamic checks, some bad IP checks | fast, catches more proxy/VPN IPs than flags=m, skips some compromised system detection | higher chance of false positives than flags=m | < 130 ms | fast speeds, want to let less proxy/VPN IPs through than flags=m | do not want full bad IP detection | only care about proxies & VPNs |
| no flags (default) | dynamic ban lists, dynamic checks, full bad IP checks | fast, full IP check, balance between speed and full IP check | higher chance of false positives than flags=m | might require 1 more query after 5 seconds | < 130 ms | fast speeds, ok with making multiple queries with the same IP |
| flags=f | dynamic ban lists, dynamic checks, full bad IP checks | forces a full IP check which does not take additional queries | higher chance of false positives than flags=m, slowest | < 5000 ms | ok with waiting for a full lookup that can take up to 5 secs |
The proxy check system will return negative values on error. For standard format (non-json), an additional HTTP 400 status code is returned:
GetIPIntel provides this service on an "as is" and "as available" basis without any express or implied warranties. Use of this service is entirely at your sole risk and discretion. In no event shall GetIPIntel, its owners, operators, or affiliates be liable for any damages or claims of any kind.
By using this service, you agree to:
You can find me on Twitter, GitHub, or email.
If I do not respond to your email within 24 hours then something is wrong, check your spam folder. Please send an email to my gmail address, or contact me via twitter.
Ultimately, I want the system to be as accurate as possible, so please let me know if there are any inaccuracies, I'd like to fix the issue. Let me know if you have any custom requirements such as more queries per minute, skip cache so it always gets the latest data and recompute the result, etc.