{"id":27009880,"url":"https://github.com/streanger/abuseipdb-wrapper","last_synced_at":"2025-08-13T21:42:41.957Z","repository":{"id":40279055,"uuid":"428402183","full_name":"streanger/abuseipdb-wrapper","owner":"streanger","description":"python wrapper for abuseipdb api","archived":false,"fork":false,"pushed_at":"2024-07-09T19:07:54.000Z","size":966,"stargazers_count":4,"open_issues_count":7,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-07T03:15:23.448Z","etag":null,"topics":["abuseipdb","abuseipdb-api","abuseipdb-cli"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/streanger.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-15T19:52:32.000Z","updated_at":"2025-02-17T15:46:44.000Z","dependencies_parsed_at":"2024-03-06T17:02:06.763Z","dependency_job_id":"710a0665-5b3b-448e-b071-c81427edb2f6","html_url":"https://github.com/streanger/abuseipdb-wrapper","commit_stats":{"total_commits":54,"total_committers":1,"mean_commits":54.0,"dds":0.0,"last_synced_commit":"57a7e3dea750ae13694d9e325229cb352482aa6c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/streanger/abuseipdb-wrapper","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streanger%2Fabuseipdb-wrapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streanger%2Fabuseipdb-wrapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streanger%2Fabuseipdb-wrapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streanger%2Fabuseipdb-wrapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/streanger","download_url":"https://codeload.github.com/streanger/abuseipdb-wrapper/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/streanger%2Fabuseipdb-wrapper/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263872554,"owners_count":23523079,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abuseipdb","abuseipdb-api","abuseipdb-cli"],"created_at":"2025-04-04T10:52:59.399Z","updated_at":"2025-07-06T08:38:04.694Z","avatar_url":"https://github.com/streanger.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"*********************\r\nabuseipdb-wrapper\r\n*********************\r\n\r\nInfo\r\n###########################\r\n\r\n- python wrapper for abuseipdb API (https://docs.abuseipdb.com/#introduction)\r\n\r\n- gives you informations about abuse level of specified IP addresses\r\n\r\n- focuses on caching results in local db\r\n\r\nInstall\r\n###########################\r\n\r\nstable version from pypi\r\n\r\n.. code-block:: bash\r\n\r\n    pip install abuseipdb-wrapper\r\n\r\nor newest version from github\r\n\r\n.. code-block:: bash\r\n\r\n    pip install git+https://github.com/streanger/abuseipdb-wrapper.git\r\n\r\nCommand-line usage\r\n###########################\r\n\r\n.. code-block:: bash\r\n\r\n    abuse\r\n\r\nor as module\r\n\r\n.. code-block:: bash\r\n\r\n    python -m abuseipdb_wrapper\r\n\r\nPython usage\r\n###########################\r\n\r\n- **init `AbuseIPDB` object**\r\n\r\n  Init ``AbuseIPDB`` object using API KEY created on https://www.abuseipdb.com/. Optionally you can provide `db_file` for your local database. It is recommended because this project focuses on storing data for further quick access without need of another requests.\r\n\r\n  .. code-block:: python\r\n\r\n    from abuseipdb_wrapper import AbuseIPDB\r\n    API_KEY = 'YOUR_API_KEY'\r\n    abuse = AbuseIPDB(api_key=API_KEY, db_file='abuseipdb.json')\r\n    abuse.colors_legend()\r\n\r\n- **check list of IPs**\r\n\r\n  Specify list of IPs to be checked using ``add_ip_list`` method. Then call ``check`` method and wait for results.\r\n\r\n  .. code-block:: python\r\n\r\n    ips = ['1.2.3.4', '5.6.7.8', '9.10.11.12', '13.14.15.16']\r\n    abuse.add_ip_list(ips)\r\n    abuse.check()\r\n\r\n- **no db caching approach**\r\n\r\n  If you are not interested in caching data in local database and only want to request for IP addresses one by one use the following code.\r\n  Have in mind that `.check_ip` method enriches results and removes `reports` section.\r\n  If using wrapper is like overkill in your project, go to: https://docs.abuseipdb.com/?python#check-endpoint\r\n\r\n  .. code-block:: python\r\n\r\n    from abuseipdb_wrapper import AbuseIPDB\r\n    API_KEY = 'YOUR_API_KEY'\r\n    abuse = AbuseIPDB(api_key=API_KEY)\r\n    ips = ['1.2.3.4', '2.3.4.5', '3.4.5.6']\r\n    for IP in ips:\r\n        result = abuse.check_ip()  # enriched with url and request time\r\n        result = abuse.check_ip_orig()  # results in original form\r\n        print(result)\r\n\r\n- **show local db**\r\n\r\n  To display collected informations use ``show`` method. Alternatively call ``print`` on your ``AbuseIPDB`` object. You can specify columns to be displayed using ``apply_columns_order`` method. It affects both vertical and table view.\r\n\r\n  .. code-block:: python\r\n\r\n    columns = ['ipAddress', 'abuseConfidenceScore', 'totalReports', 'countryCode', 'domain', 'isp']\r\n    abuse.apply_columns_order(columns)\r\n    # show db by print or using .show method\r\n    print(abuse)\r\n    abuse.show(matched_only=False, table_view=True)\r\n\r\n- **viewer**\r\n\r\n  For interactive IP check use ``.viewer`` method. It let you to provide multiple IPs at once. Use help for more information.\r\n\r\n  .. code-block:: python\r\n\r\n    abuse.viewer()\r\n    ~\u003c abuse \u003e~: columns [columns list]         # shows or apply columns order\r\n    ~\u003c abuse \u003e~: export [csv, html, xlsx, md]   # export to file\r\n    ~\u003c abuse \u003e~: all                            # check/show all database\r\n\r\n- **exports**\r\n\r\n  .. code-block:: python\r\n\r\n    abuse.export_csv('out.csv', matched_only=False)\r\n    abuse.export_html_styled('out.html', matched_only=False)\r\n    abuse.export_xlsx_styled('out.xlsx', matched_only=False)\r\n    abuse.export_md('out.md', matched_only=False)\r\n\r\n- **convert to dataframe object**\r\n\r\n  .. code-block:: python\r\n\r\n    import pandas as pd\r\n    matched = abuse.get_db(matched_only=False)\r\n    df = pd.DataFrame(matched.values())\r\n\r\n- **json columns**\r\n\r\n  - :code:`abuseConfidenceScore`\r\n  - :code:`countryCode`\r\n  - :code:`date`  # additional\r\n  - :code:`domain`\r\n  - :code:`hostnames`\r\n  - :code:`ipAddress`\r\n  - :code:`ipVersion`\r\n  - :code:`isPublic`\r\n  - :code:`isWhitelisted`\r\n  - :code:`isp`\r\n  - :code:`lastReportedAt`\r\n  - :code:`numDistinctUsers`\r\n  - :code:`totalReports`\r\n  - :code:`url`  # additional\r\n  - :code:`usageType`\r\n  - :code:`isTor`\r\n\r\nScreenshots\r\n###########################\r\n\r\n- banner\r\n\r\n.. image:: https://raw.githubusercontent.com/streanger/abuseipdb-wrapper/main/screenshots/banner.png\r\n\r\n- colors legend\r\n\r\n.. image:: https://raw.githubusercontent.com/streanger/abuseipdb-wrapper/main/screenshots/legend.png\r\n\r\n- help\r\n\r\n.. image:: https://raw.githubusercontent.com/streanger/abuseipdb-wrapper/main/screenshots/help.png\r\n\r\n- vertical view\r\n\r\n.. image:: https://raw.githubusercontent.com/streanger/abuseipdb-wrapper/main/screenshots/abuse-vertical-view.png\r\n\r\n- table view\r\n\r\n.. image:: https://raw.githubusercontent.com/streanger/abuseipdb-wrapper/main/screenshots/abuse-table-view.png\r\n\r\nChangelog\r\n###########################\r\n- `v.0.2.0`:\r\n\r\n  - removed pandas and Jinja2 dependencies\r\n  - custom export functions\r\n  - :code:`date` as isoformat with timezone\r\n\r\n- `v.0.1.9`:\r\n\r\n  - additional :code:`isTorNode` field replaced with :code:`isTor` supported by api\r\n\r\n- `v.0.1.8`:\r\n\r\n  - more flexible exports\r\n  - passing :code:`api_key` to :code:`AbuseIPDB` is now optional\r\n  - keep order for passing IPs\r\n  - viewer:\r\n      - skip private IPs flag\r\n      - sumup flag\r\n      - force new check flag\r\n      - more verbose logs\r\n      - asterisks for api key using pwinput\r\n  - colors support for: windows-cmd, windows-terminal, windows-powershell, vscode, linux-terminal\r\n  - tests coverage for most features\r\n  - export to markdown\r\n  - and few smaller changes\r\n\r\n- `v.0.1.7`:\r\n\r\n  - `abuse` entrypoint\r\n  - `columns` command in interactive view\r\n  - `export` command in interactive view (to .csv, .html, .xlsx)\r\n  - tor exit nodes enrichment\r\n  - storing db file in user home directory\r\n  - original API request using `.check_ip_orig`\r\n  - getpass and keyring for API_KEY read \u0026 store\r\n\r\n- `v.0.1.6` and before:\r\n\r\n  - black background for better view in powershell\r\n  - export to csv, html, xlsx (from pandas df)\r\n  - wrap text in table cells - made using rich table\r\n  - return dataframe object\r\n  - enrich results with date of last check\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreanger%2Fabuseipdb-wrapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstreanger%2Fabuseipdb-wrapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstreanger%2Fabuseipdb-wrapper/lists"}