Registry / http-networking / harfile

harfile

JSON →
library0.5.0pypypi✓ verified 28d ago

harfile is a zero-dependency Python library designed for writing HTTP Archive (HAR) files. It provides a straightforward way to construct HAR-compliant logs of HTTP requests and responses programmatically. The library is currently at version 0.4.0 and maintains a stable API for its core functionality.

pip install harfile
INSTALL
IMPORT
SIG · HARFILE
H
harfile
http-networkingpythonv0.5.0
Install
1.5s avg
Import
142ms
Disk
16MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.9–3.13
musl
3.9–3.13
Install & Compatibility
Where this runs
tested against v0.5.0 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.152s · 17.8MB
glibc
py 3.10–3.95 runs
installs and imports cleanly · install 1.5s · import 0.132s · 18MB
16MB installed
● package 16MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

open
✓ from harfile import open
Request
✓ from harfile import Request
Response
✓ from harfile import Response
Timings
✓ from harfile import Timings

This quickstart demonstrates how to create a HAR file by adding HTTP entries. It shows examples of writing to a physical file and an in-memory string buffer, including basic request and response details.

import datetime import io from harfile import open, Request, Response, Timings # Example 1: Write to a file with open("example.har") as har_file: har_file.add_entry( startedDateTime=datetime.datetime.now(datetime.timezone.utc), time=42, request=Request( method="GET", url="http://example.com", httpVersion="HTTP/1.1", ), response=Response( status=200, statusText="OK", httpVersion="HTTP/1.1", ), timings=Timings( send=0, wait=0, receive=0, ), ) # Example 2: Write to a string buffer buffer = io.StringIO() with open(buffer) as har_buffer: har_buffer.add_entry( startedDateTime=datetime.datetime.now(datetime.timezone.utc), time=100, request=Request( method="POST", url="http://api.example.com/data", httpVersion="HTTP/1.1", headers=[{"name": "Content-Type", "value": "application/json"}], postData={ "mimeType": "application/json", "text": "{\"key\": \"value\"}" } ), response=Response( status=201, statusText="Created", httpVersion="HTTP/1.1", content={ "mimeType": "application/json", "text": "{\"status\": \"success\"}" } ), timings=Timings( send=5, wait=50, receive=45, ), ) print("HAR file 'example.har' created.") print("HAR content written to string buffer (first 200 chars):\n", buffer.getvalue()[:200])
Debug
Known issues
gotchaThe `harfile` library is designed with the assumption of a single-threaded environment. Using it in a multi-threaded application without proper synchronization could lead to unexpected behavior or data inconsistencies in the generated HAR file.
fix
Ensure `harfile` operations are performed in a single-threaded context or implement external locking mechanisms if absolutely necessary within a multi-threaded application.
affects: >=0.1.0
gotchaThe `harfile` library explicitly states that 'Pages are not supported'. This means the generated HAR file will not contain the 'pages' array, which is an optional but common top-level object in the HAR specification.
fix
If 'pages' functionality is required, consider alternative HAR generation libraries or post-processing the `harfile` output to manually add page entries.
affects: >=0.1.0
gotchaHAR files, by their nature, can contain sensitive information such as authentication tokens, cookies, and request/response bodies. Users generating HAR files should be aware of this and exercise caution when sharing these files.
fix
Before sharing a HAR file, thoroughly review its content and redact any sensitive data (e.g., Auth Bearer tokens, HttpOnly cookies, personal information in payloads). Consider using HAR sanitization tools if available.
affects: All versions (inherent to HAR format)
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'harfile'
The 'harfile' library has not been installed in your Python environment or there's a typo in the import statement.
fix
Install the library using pip: `pip install harfile`
TypeError: 'harfile.Request' object is not callable
This error occurs when trying to call a HAR object attribute (like Request, Response, Timings) as a function, instead of instantiating it as a class.
fix
Instantiate the HAR object attributes as classes: `request=harfile.Request(...)` instead of `request=harfile.Request(...)` if you accidentally use parentheses as if it were a function call.
TypeError: add_entry() missing 1 required positional argument: 'response'
The `add_entry` method requires specific arguments, and one or more of the mandatory arguments (e.g., `startedDateTime`, `time`, `request`, `response`, `timings`) were omitted or incorrectly passed.
fix
Ensure all required arguments for `harfile.add_entry` are provided and correctly typed according to the library's API. For example: `har.add_entry(startedDateTime=datetime.datetime.now(datetime.timezone.utc), time=42, request=harfile.Request(...), response=harfile.Response(...), timings=harfile.Timings(...))`.
AttributeError: 'HarFile' object has no attribute 'write_entry'
This error likely occurs when attempting to call a method that does not exist on the `HarFile` object, or mistaking a method from a different HAR-related library for `harfile`'s API.
fix
The correct method for adding entries in `harfile` is `add_entry`, not `write_entry`. Use `har.add_entry(...)`.
Upgrade
Version history
0.5.0latest on PyPI · released May 29, 2026
Audit
Dependencies

No dependency data recorded yet.

Agent activity
20 hits · last 30 days
node
16
Anthropic
1
Resources
harfile — pip install harfile · libregistry