Skip to content

Latest commit

 

History

History
117 lines (81 loc) · 2.42 KB

README.md

File metadata and controls

117 lines (81 loc) · 2.42 KB

ipquery

A Python library to query IP addresses using the ipquery.io API. This library allows you to easily retrieve detailed information about IP addresses, including ISP data, geolocation details, and risk analysis.

Features

  • Query detailed information for a specific IP address.
  • Fetch your own public IP address.
  • Perform bulk queries for multiple IP addresses.
  • Includes Pydantic models for easy data validation and parsing.

Installation

Install the package using pip:

pip install ipcore

Usage

Importing the Package

from ipapi.client import IPAPIClient

Query a Specific IP Address

Fetch information about a specific IP address:

Synchronously

from ipapi.client import IPAPIClient

client = IPAPIClient()
ip_info = client.query_ip("8.8.8.8")
print(ip_info)

Asychronously

from ipapi.client import AsyncIPAPIClient

async def main():
    client = AsyncIPAPIClient()
    ip_info = await client.query_ip("8.8.8.8")
    print(ip_info)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

Example Output:

IPInfo(ip='8.8.8.8', isp=ISPInfo(asn='AS15169', org='Google LLC', isp='Google LLC'),
location=LocationInfo(country='United States', country_code='US', city='Mountain View',
state='California', zipcode='94035', latitude=37.386, longitude=-122.0838, timezone='America/Los_Angeles', localtime='2024-11-09T12:45:32'),
risk=RiskInfo(is_mobile=False, is_vpn=False, is_tor=False, is_proxy=False, is_datacenter=True, risk_score=0))

Fetch Your Own Public IP Address

Retrieve your machine's public IP address:

ip = client.query_own_ip()
print(f"Your IP: {ip}")

Example Output:

Your IP: 203.0.113.45

Bulk Query Multiple IP Addresses

Fetch details for multiple IP addresses in a single request:

ips = ["8.8.8.8", "1.1.1.1"]
results = client.query_bulk(ips)
for ip_info in results:
    print(ip_info)

Example Output:

IPInfo(ip='8.8.8.8', ...)
IPInfo(ip='1.1.1.1', ...)

Running Tests

If you want to run tests to verify functionality:

pytest tests/

Requirements

  • Python 3.7
  • Pydantic 2.x
  • httpx

License

This project is licensed under the MIT License. See the LICENSE file for more information.

Links