# IP Check is a free tool that attempts to determine how likely an IP address is a proxy/VPN IP using mathematical and modern computing techniques. <br> ## How Does It Work? Given an IP address, the proxy check system will return a ** probabilistic ** value (between a value of ```0``` and ```1```) of how likely the IP is a VPN / Proxy. A value of ```1``` means that IP is explicitly banned, and a value of ```0``` means the proxy check system doesn't think it's a proxy. <font color="red"> This page is deprecated, please see <a href="http://getipintel.net"> IPIntel </a> for up to date information. This page exist as reference only. Full API information and documentation are on <a href="http://getipintel.net"> IPIntel </a>. <br> Check.getipaddr.net will be fully retired on Nov. 21, 2015. All queries will no longer resolve and return a HTTP 404 error. Make sure you have changed domains by then and follow the new requirements. </font> The proxy check system uses: * 2 static files (manually updated) * 3 dynamic files * 7 unique dynamic checks / 9 unique dynamic checks on the new beta version * 1 cached IPs file (to reduce the number of dynamic check queries) It is assumed that the IP you're looking up is making a request to **your** services. Most if not all crawlers are explicitly banned (returns a value of 1); If you want to allow these crawlers, then whitelist them on your system. ## How Do I Use It? <font color="red"> This page is deprecated, please see <a href="http://getipintel.net"> IPIntel </a> for up to date information. If you're seeing this message, then Version 1 and Version 2 all have been migrated to the latest version on <a href="http://getipintel.net"> IPIntel</a>. There are more error codes and more options / features that will NOT be posted here. </font> ## Error codes The proxy check system will return negative values on error * -1 Invalid no input * -2 Invalid IP address (IPv6 is not supported) * -3 Unroutable address / private address * -4 No dynamic server could be reached for your request * If you exceed the number of allowed queries, you'll receive a HTTP 5xx error. ## A new beta version (v2) I'm currently working on a new version which should return results faster. If you have any comments or suggestions, please see my contact information below. # ** <font color="red"> EOL (End of Life) for V1 and V2 </font> ** The developement for V3 is ongoing and appears to work as I intended. There are various improvements (load times are ~20x faster than V2 and ~60x faster than V1, more dynamic checks on V3, more queries allowed per minute, etc) so V1 and V2 will have an estimated EOL of 1 month. After that, queries will be redirected to V3 server and this page will redirect to http://getipintel.net If you're viewing this page now, be aware that all information here is deprecated and this page exists for reference only. Further information such as new error status codes, additional options, etc, will not be posted here. If you need any help from me during the transition process, see my contact info below. ## FAQs #### What are dynamic checks? Dynamic checks are used if the IP address is not explicitly listed in the static and dynamic files. It makes external requests to slave nodes that look for *characteristics* of the given IP to determine how likely it is to be a proxy. This process can take up to 8 seconds, so be patient. #### How many queries can I make? We rate limit 40 request / minute to prevent abuse. There's also a burst parameter set to ensure smoothing of traffic. If you hit any of these limits, the web server will return a 503 error. #### What are slave nodes? They are worker nodes that fetch data and return 7 probabilistic values to the main server. These slave nodes are distributed across the globe so if one goes down, the system will query another slave node. It combines concepts from machine learning, distributed systems, and probability theory. #### Why should I use this service? There are many reasons. Here's some off the top of my head * Protect your site from automated XSS / SQLi / brute force / crawling attempts * Serve traffic / content to real users, not bots * Prevent trolls / people that are trying to bypass a ban * Reduce fraud on e-commerce sites * Use it with a combination of another fraud prevention service to make it even better. Some fraud prevention services do not explicitly look for proxy / VPN IPs. Similiar services such as blocked charges thousands of dollars for 2,000 queries per day. * It's free. ## Disclaimer No guaranatees, warranties, blah blah blah, is provided. Use at your own risk. If you're using this service, we recommend admins to not instantly ban IPs that have values > 0 (or even > 0.55). They should be marked for manual review. The results can be interpreted as "I'm ```x``` percent confident this is a proxy IP." <br><br> If you plan on using it for commerical purposes, please contact me so I can provide some consistency in the results. #### A list of my projects * <a href="http://dl.getipaddr.net"> Command line speed test / benchmark utility </a> - A nimble benchmark tool to test download, upload, I/O, and CPU speed. * <a href="http://check.getipaddr.net"> Free Proxy / VPN IP checker </a> - Probabilistically determine if a given IP address is a proxy/VPN or not. * <a href="https://github.com/blackdotsh/UptimeFlare"> Uptime Flare </a> - Auto switch to a failover server if your website goes down by using cloudflare (for DNS) and UptimeRobot (for monitoring). Alternatively, you can use StatusCake for monitoring, which can be found <a href="https://github.com/blackdotsh/StatusCake-CloudFlare"> here</a>. * <a href="https://github.com/blackdotsh/mandrillapp-cli"> Mandrillapp cli </a> - Send emails using mandrillapp's API directly in bash ## Contact You can find me on [twitter](https://twitter.com/blackdotsh) or [github](http://github.com/blackdotsh). <p align="center"> <a href="https://flattr.com/submit/auto?user_id=blacksh&url=http%3A%2F%2Fgetipintel.net" target="_blank"><img src="//button.flattr.com/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0"></a> </p>