Anura Docs

Anura SDK for Python

The Anura SDK for Python provides a simpler integration process for Anura Direct within their Python projects. Empowering developers to begin analyzing their traffic.

Getting Started

  1. Have an open active account with Anura - You can see more about Anura's offerings here.
  2. Minimum Requirements - To use the SDK, you will need Python >=3.10.
  3. Install the SDK
  4. View our Quick Examples to immediately begin using the SDK!

Installing the SDK

The easiest and recommended way to install the SDK is to use pip. You can install it with the following command:

Terminal
pip3 install anura

Or, install from source by using one of the following examples according to your operating system:

Linux/Mac:

Terminal
git clone https://github.com/anuraio/anura-sdk-python.git
cd anura-sdk-python
python3 -m pip3 install -r requirements.txt
python3 -m pip3 install -e .

Windows:

Terminal
git clone https://github.com/anuraio/anura-sdk-python.git
cd anura-sdk-python
py -m pip3 install -r requirements.txt
py -m pip3 install -e .

Quick Examples

Create the Anura Direct client

from anura.direct.client import AnuraDirect
import asyncio # used for asynchronous result fetching
import aiohttp # used for asynchronous result fetching

direct = AnuraDirect('your-instance-id-goes-here')

Set a custom source, campaign, and additional data for Anura Direct

direct.source = 'your-source-value'
direct.campaign = 'your-campaign-value'
direct.add_additional_data('1', 'your-data-value')

Updating additional data at a specific index

# To update an element of additional data at a specific index,
# simply add the element again but with a new value.
direct.add_additional_data('1', 'your-new-data-value')

Removing an element from additional data

index_to_remove = 1
direct.remove_additional_data(index_to_remove)

Get a result from Anura Direct

try:
    result = direct.get_result(
        'visitors-ip-address', # required
        'visitors-user-agent', # optional
        'visitors-app-package-id', # optional
        'visitors-device-id' # optional
    )
    print('result: ' + result)
except Exception as e:
    print(e)

Get a result from Anura Direct asynchronously

async def main():
    direct = AnuraDirect('your-instance-id')

    async with aiohttp.ClientSession() as session:
        try:
            result = await direct.get_result_async(
                session,
                'visitors-ip-address', # required
                'visitors-user-agent', # optional
                'visitors-app-package-id', # optional
                'visitors-device-id' # optional
            )
            print('result: ' + result)
except Exception as e:
    print(e)

 # Use asyncio to run the coroutine (asynchronous function).
asyncio.run(main()) 

API Reference

AnuraDirect

Can get results from Anura Direct. These results are fetched using Direct's /direct.json API endpoint.

Methods

get_result() -> DirectResult

Parameters:

Name Type Description Required
ip_address str The IP address of your visitor. Both IPv4 & IPv6 addresses are supported. Yes
user_agent str The user agent string of your visitor.
app str The application package identifier of your visitor (when available.)
device str The device identifier of your visitor (when available.)
get_result_async() -> Awaitable[DirectResult]

Parameters:

Name Type Description Required
session aiohttp.ClientSession The aiohttp client session object. Yes
ip_address str The IP address of your visitor. Both IPv4 & IPv6 addresses are supported. Yes
user_agent str The user agent string of your visitor.
app str The application package identifier of your visitor (when available.)
device str The device identifier of your visitor (when available.)
add_additional_data(key: str, value: str) -> None remove_additional_data(key: str) -> None @property instance() -> str @property source() -> str @property campaign() -> str @property additional_data() -> dict @instance.setter instance(instance: str) -> None @source.setter source(source: str) -> None @campaign.setter campaign(campaign: str) -> None @additional_data.setter additional_data(additional_data: dict) -> None

DirectResult

The result upon a successful call to get_result() or get_result_async() from the AnuraDirect client. It contains not only the result from the Anura Direct API, but some other methods to help you use the result as well.

Methods

is_suspect() -> bool is_non_suspect() -> bool is_mobile() -> bool

Properties

result: str rule_sets: str[] | None invalid_traffic_type: str | None