Skip to content

A python implementation of the IPQualityScore flat file DB Reader.

License

Notifications You must be signed in to change notification settings

IPQualityScore/PythonIPQSDBReader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IPQualityScore IP Address Reputation & Proxy Detection Python DB Reader

Flat File Version 1.0

Our flat file proxy detection database allows you to lookup important details about any IP address using a straight forward library. Simply install the reader, download a database and instantly check IP addresses against our large volume of data.

Click here to see the full Python IPQualityScore flat file database documentation or click here for a more in depth explanation of what our proxy detection database does.
Installation

Installation can be achieved via python's built in package manager pip like such:


pip install git+https://github.com/IPQualityScore/PythonIPQSDBReader
			
Usage

Using our flat file database system to lookup an IP address is simple:


from IPQualityScore.DBReader import DBReader

ipv4_client = DBReader("IPQualityScore-IP-Reputation-Database-IPv4.ipqs")

ipv4_record = ipv4_client.Fetch("8.8.0.0")

print(f"IPv4 Is Proxy: {ipv4_record.IsProxy()}")

ipv6_client = DBReader("IPQualityScore-IP-Reputation-Database-IPv6.ipqs")

ipv6_record = ipv6_client.Fetch("2001:4860:4860::8888")

print(f"IPv6 Is Proxy: {ipv6_record.IsProxy()}")

IPQSRecord Struct Fields

Depending on which database file you receive some of these fields may be unavailable. If the field in question is unavailable in your database it will default to Python's default value for that type.

Field Type Description
record.IsProxy() bool Is this IP address suspected to be a proxy? (SOCKS, Elite, Anonymous, VPN, Tor, etc.)
record.IsVPN() bool Is this IP suspected of being a VPN connection? This can include data center ranges which can become active VPNs at any time. The "proxy" status will always be true when this value is true.
record.IsTOR() bool Is this IP suspected of being a TOR connection? This can include previously active TOR nodes and exits which can become active TOR exits at any time. The "proxy" status will always be true when this value is true.
record.IsCrawler() bool Is this IP associated with being a confirmed crawler from a mainstream search engine such as Googlebot, Bingbot, Yandex, etc. based on hostname or IP address verification.
record.IsBot() bool Indicates if bots or non-human traffic has recently used this IP address to engage in automated fraudulent behavior. Provides stronger confidence that the IP address is suspicious.
record.RecentAbuse() bool This value will indicate if there has been any recently verified abuse across our network for this IP address. Abuse could be a confirmed chargeback, compromised device, fake app install, or similar malicious behavior within the past few days.
record.IsBlacklisted() bool This value will indicate if the IP has been blacklisted by any 3rd party agency for spam, abuse or fraud.
record.IsPrivate() bool This value will indicate if the IP is a private, nonrouteable IP address.
record.IsMobile() bool This value will indicate if the IP is likely owned by a mobile carrier.
record.HasOpenPorts() bool This value will indicate if the IP has recently had open (listening) ports.
record.IsHostingProvider() bool This value will indicate if the IP is likely owned by a hosting provider or is leased to a hosting company.
record.ActiveVPN() bool Identifies active VPN connections used by popular VPN services and private VPN servers.
record.ActiveTOR() bool Identifies active TOR exits on the TOR network.
record.PublicAccessPoint() bool Indicates if this IP is likely to be a public access point such as a coffee shop, college or library.
record.ConnectionTypeRaw() int

A numerical representation for the suspected type of connection for this IP address. It is generally reccomended you call the ToString() function listed below instead of using this value, but it is available as an option.

# Enum Description
1 Residential IP
2 Mobile IP
3 Corporate IP
4 Data Center IP
5 Educational IP
record.ConnectionType() int

A string representation for the suspected type of connection for this IP address. (Residential, Mobile, Corporate, Data Center, Education or Unknown)

record.AbuseVelocityRaw() int

How frequently the IP address is engaging in abuse across the IPQS threat network. Can be used in combination with the Fraud Score to identify bad behavior. It is generally reccomended you call the ToString() function listed below instead of using this value, but it is available as an option.

# Enum Description
1 Low Recent Abuse IP
2 Medium Recent Abuse IP
3 High Recent Abuse IP
record.AbuseVelocity() int

How frequently the IP address is engaging in abuse across the IPQS threat network. Values can be "high", "medium", "low", or "none".

record.Country() string

Two character country code of IP address or "N/A" if unknown.

record.City() string

City of IP address if available or "N/A" if unknown.

record.ISP() string

ISP if one is known. Otherwise "N/A".

record.Organization() string

Organization if one is known. Can be parent company or sub company of the listed ISP. Otherwise "N/A".

record.Zipcode() string

Zip code of IP address if one is known. Otherwise "N/A".

record.ASN() int

Autonomous System Number if one is known. Zero if nonexistent.

record.Timezone() string

Timezone of IP address if available or "N/A" if unknown.

record.Latitude() float

Latitude of IP address if available or 0.00 if unknown.

record.Longitude() float

Longitude of IP address if available or 0.00 if unknown.

record.FraudScore() Dictionary[int]int

A map containing multiple possible fraud scores. The key is the "strictness level" of the query and can be 0, 1 or 2. Some databases may contain 1 entry, others all 3. It is reccomended that you use the lowest strictness for Fraud Scoring. Increasing this value will expand the tests we perform. Levels 2+ have a higher risk of false-positives.

Usage Notes

Each database only holds either IPv4 or IPv6 data. Therefore you may need two instances of the reader available depending on your use case.

About

A python implementation of the IPQualityScore flat file DB Reader.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages