OpenAPI Scanner
A tool for scanning and testing OpenAPI specifications.
Features
- Support for both JSON and YAML OpenAPI specifications
- Flexible authentication system
- Automatic path parameter replacement
- Custom header support
- Multiple report formats (Console, HTML, CSV, JSONL)
Installation
# Install dependencies
pip install -r requirements.txt
# Install in development mode
pip install -e .
Usage
Basic Usage
# Using JSON specification
python -m specphp_scanner spec.json --host localhost --port 8080
# Using YAML specification
python -m specphp_scanner spec.yaml --host localhost --port 8080
Using Authentication
# Using module path
python -m specphp_scanner spec.json --auth-class examples.koel.auth.KoelAuth --auth-params '{"email": "user@example.com", "password": "secret"}'
# Using file path
python -m specphp_scanner spec.json --auth-class ./examples/koel/auth.py --auth-params '{"email": "user@example.com", "password": "secret"}'
Using Custom Headers
python -m specphp_scanner spec.json --headers '{"X-Custom-Header": "value"}'
Generating Reports
# Console output (default)
python -m specphp_scanner spec.json
# HTML report
python -m specphp_scanner spec.json --format html --output report.html
# CSV report
python -m specphp_scanner spec.json --format csv --output report.csv
# JSONL report
python -m specphp_scanner spec.json --format jsonl --output report.jsonl
Command Line Options
spec_file: Path to OpenAPI specification file (JSON or YAML)--host: Target host (default: localhost)--port: Target port (default: 8080)--auth-class: Authentication class path or Python file path--auth-params: JSON string containing authentication parameters--headers: JSON string containing custom headers--format: Report format (console, html, csv, jsonl)--output: Output file path for the report--verbose,-v: Enable verbose logging
Creating Custom Authentication Classes
Create a class that inherits from BaseAuth:
from specphp_scanner.auth.base import BaseAuth
class MyCustomAuth(BaseAuth):
def __init__(self, **kwargs):
# Initialize your authentication parameters
self.token = None
def authenticate(self):
# Implement your authentication logic
# This method should be called before making API requests
pass
def get_headers(self):
# Return headers required for authentication
return {"Authorization": f"Bearer {self.token}"}
def get_cookies(self):
# Return cookies required for authentication
return {}
Examples
See the examples directory for sample implementations.
Project Structure
specphp_scanner/
├── __init__.py
├── cli.py
├── scanner.py
├── auth/
│ ├── __init__.py
│ ├── base.py
│ └── factory.py
└── utils/
├── __init__.py
├── param_generator.py
├── report.py
└── templates/
└── report.html
Running Tests
pytest
Metadata
Release files for specphp-scanner 0.0.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| specphp_scanner-0.0.13.tar.gz | 57.2 kB | Without provenance | Details for specphp_scanner-0.0.13.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| specphp_scanner-0.0.13-py3-none-any.whl | Python 3 | none | any | Details for specphp_scanner-0.0.13-py3-none-any.whl |
Total release size: 79.4 kB
Release files / specphp_scanner-0.0.13.tar.gz
| Download URL | specphp_scanner-0.0.13.tar.gz |
|---|---|
| Size | 57.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
268e267f241ca09405252f647aae7fcd356539f774ba15dccb3433bebc756465
|
|
BLAKE2b-256 checksum How to use checksums |
0c8e6a959db21bc5a591612270a77b0558c8542f951f7f4e1cdc2f3e99fd80e3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.8.12
|
Release files / specphp_scanner-0.0.13-py3-none-any.whl
| Download URL | specphp_scanner-0.0.13-py3-none-any.whl |
|---|---|
| Size | 22.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7e0069c119a0b186d42d656e92a669a7f345735638dbdab7def9d7f3ecb67b67
|
|
BLAKE2b-256 checksum How to use checksums |
e3e23ed3a9977bcb69bb6a009c894a6bf078a786972de4c822aa94d53356705d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.8.12
|
Security for specphp-scanner 0.0.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.