Git Product home page Git Product logo

blackdotsh / getipintel Goto Github PK

View Code? Open in Web Editor NEW
309.0 27.0 50.0 49 KB

IP Intelligence is a free Proxy VPN TOR and Bad IP detection tool to prevent Fraud, stolen content, and malicious users. Block proxies, VPN connections, web host IPs, TOR IPs, and compromised systems with a simple API. GeoIP lookup available.

Home Page: http://getipintel.net

PHP 37.61% Python 11.38% Shell 17.12% Go 33.89%
proxy-detection vpn-detection bot-detection anti-fraud anti-proxy anti-vpn detect-proxy detect-vpn vpn-check fraud-detection

getipintel's Introduction

IP Intelligence is a free tool that attempts to determine how likely an IP address is a proxy / VPN / bad IP using mathematical and modern computing techniques

  • Greatly reduce fraud on e-commerce sites (anti-fraud)
  • Protect your site from automated hacking attempts such as XSS, SQLi, brute force attacks, application scanning and many others
  • Protect your site from crawlers that steal your content
  • Prevent users from abusing promotional offers / multiple sign-ups / affiliate abuse
  • Stop bots from scraping your content or bots spamming your website
  • Serve traffic / content to real users, not bots. Reduce fake views, clicks, and activity that results in click fraud and view fraud (anti-bot detection)
  • Prevent trolls / people that are trying to bypass a ban
  • Adjust your system to limit access (such as not allowing them to change their password, their email, etc) to prevent account hijacking
  • Since the system returns a real value and there's different flag options, you can customize the level of protection for a particular time frame and adjust accordingly
  • 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 / bad IPs

The system is serving millions of API requests a week and growing as more people find it useful in protecting their online infrastructure.

How it works

Given an IP address, the system will return a probabilistic value (between a value of 0 and 1) of how likely the IP is a VPN / proxy / hosting / bad IP. A value of 1 means that 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. On average, 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.

Interpretation of the Results

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 my 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. I only recommend automated action on high values ( > 0.99 or even > 0.995 ) but it's good practice to manually review IPs that return high values. For example, mark an order as "under manual review" and don't automatically provision the product for high proxy values. 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.


For a deeper understanding of how the API works and the different flags and oflags options available, please visit the API page. Standard recommendation is to start off with flags=m option if only proxy / VPN detection is needed. If flags=m does not have a noticeable impact, then use flags=b. The default query (no flags) is mostly used infront of a payment gateway to protect against fraud because bad IP detection is included.

Here are some example code to use GetIPIntel in various code formats. They mainly serve as a proof of concept and should not be implemented directly into your system.

Easy to use Web interface without any coding

A simple web interface lookup is available via https://getipintel.net/free-proxy-vpn-tor-ip-lookup/

Full API documentation

No registration or sign up required, only a valid contact email is needed.

Full API Documentation URL: https://getipintel.net/free-proxy-vpn-tor-detection-api/


⚠️ If your website / service is proxied through Cloudflare, make sure you're looking up CF-Connecting-IP in the headers. Any similiar infrastructure setup should also be aware that the correct IP is looked up.

PHP

  • requires php curl

Bash

  • requires curl

Installation

  • Please change the email variable to your own email
  • Read the documentation on the website for the latest features. If you wish to use flags, change query string.

New features

  • added Jun. 2023 - oflags=a will return the ASN number(s) of the IP that's being looked up. More information is available on the API page.
  • added Jun. 2023 - oflags=i will include Google One and Google Fi VPN IPs.
  • added Dec. 2021 - oflags=i for iCloud Relay Egress IPs - by definition it is still a proxy / VPN a user willingly enables, but this option will allow more flexibility on how to handle these IPs. More information is available on the API page.

New Changes & Notes

  • Apr. 21 2024 - Added a self lookup IP feature on the web interface. Easy 1 click lookup of your own IP.
  • Nov. 23 2023 - Malicious / abnormal traffic dataset has been fully incorporated into the proxy / VPN detection API. As always, you can use oflags=b option to see if an IP behaved badly or not.
  • added Nov. 3 2023 - A noticeable sized dataset related to malicious / abnormal traffic is being incorporated into the proxy / VPN detection API. It passed internal testing so I've rolled it out to the free API. I'll keep an eye on the weights and if there's no issues, I'll push it to all services. Feel free to reach out if you have any questions.

getipintel's People

Contributors

blackdotsh avatar lionelmarbot avatar pandaninjas avatar stdsu avatar tlongren avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

getipintel's Issues

Returning the response code value = 0

I am using this API to kick players who join with VPN to my SAMP Game Server.
usually response code = 200 means OK but I am getting response code 0 and it is kicking all the players.
Please help me.

CORS blocked

Hi! I am implementing the service on a webapp, but my requests aren't getting through due to the lack of 'Access-Control-Allow-Origin' header on the api. Is this intended or simply skipped? Thanks!

XMLHttpRequest cannot load https://check.getipintel.net/check.php?ip=this_is_an_ip&contact=this_is_an_email_address&format=json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

Location Flag for Result = 0

I may be answering my own question, but when an IP returns a result of 0, the Location is set to NULL (when viewing in JSON format) or doesn't return anything (when viewing normally).

Is this by design, or a glitch ? As in, is it assumed that a GOOD IP the end-user really doesn't need to see the location.

Thank you for all you do and your great platform

Cloudflare IP's are getting caught in VPN filter

Hello,

I have Cloudflare to protect my website from DDOS attacks. If I use the PHP Proxy Detection API, it will only detect Cloudflare IP's.

Do you have a proper way to bypass this, so I can implement it on my website?

Regards,
Mike

Getting non-json result starting with skipped d

On some requests I get this response (response code is 200):

skipped d{"status":"success","result":"0","queryIP":"185.94.111.19","queryFlags":"udefied","queryOFlags":"coflags=b","queryFormat":"json","contact":"[email protected]","BadIP":0,"Country":"RU"}

This is causing my json parser to choke. What does skipped d mean, and can I assume this is a bug in the response?

request for removal system

does it exist?

Seems you operating some kind of blacklisting database system, which obviously will have false positives.

I tested with a few random ip's

One is a personal server which has never ran a TOR node, proxy or VPN, yet scores 1.
Other ip's were broadband ip's but one of those scored 1 as well.

So false positives in the system but no reporting system.

If there is no way for people to report false positives then this isnt a credible system for my services to use, please advice thanks if there is such systems in place.

Thanks

email?

hey,thanks for your amazing work,but how can i get your email address? i have lots of questions about it, it is amazing.

Disambiguate the "-5" error code

Hi! Thanks so much for this service, I use it a lot, so much that I'm getting the "-5" response code.

The documentation says "Your connecting IP has been banned from the system or you do not have permission to access a particular service. Did you exceed your query limits? Did you use an invalid email address? If you want more information, please use the contact links below."

It would be nice to have this code split into several other error codes for debugging. For example, I think I've hit my quota, but my server has been hitting your service regularly and I want to make sure I'm not permanently banned for some reason. If the former, I don't need to take further action and can wait until further requests are allocated, if the latter, I would need to email you and beg for forgiveness. Having separate codes for quota usage, invalid contact info, and perma-ban would be helpful on my side.

Thanks!

FR: Result Value JSON Description Field

I create and maintain an OSINT browser extension for Chrome & Firefox on GitHub called Sputnik.

We recently got a feature request for an IP lookup to detect VPNs:
mitchmoser/sputnik#14

I’ve been looking into open source tools available for this and came across getIPIntel.
Reviewing the documentation, this seems like a good integration for this feature request.
Looking over the JSON output from an IP search, I noticed there is no description that would be helpful for an uninformed user looking at this information.

Here is an example of what I was looking at:

Request:
https://check.getipintel.net/check.php?format=json&[email protected]&oflags=c&flags=b&ip=102.129.239.43

Response:
{
  "status": "success",
  "result": "1",
  "queryIP": "102.129.239.43",
  "queryFlags": "b",
  "queryOFlags": "c",
  "queryFormat": "json",
  "contact": "[email protected]",
  "Country": "US"
}

Would it be possible to integrate a description of the result value in the JSON output of a request?

For example:

{
  ...
  "result":"1"
  "description":"IP is explicitly banned (a web host, VPN, or TOR node) by our dynamic lists"
   ...
}
{
  ...
  "result":".5"
  "description":"numeric value between 0 and 1 of how likely the IP is bad / VPN / proxy"
  ...
}

Thanks for considering this feature request!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.