A tool for Python developers to easily debug the HTTP(S) client requests in a Python program.
httpdbg
is a tool for Python developers to easily debug the HTTP(S) client requests in a Python program.
To use it, execute your program using the pyhttpdbg
command instead of python
and that’s it. Open a browser to http://localhost:4909
to view the requests:
Full documentation => https://httpdbg.readthedocs.io/
pip install httpdbg
Open an interactive console using the command pyhttpdbg
.
(venv) dev@host:~/dir$ pyhttpdbg
.... - - .--. -.. -... --. .... - - .--. -.. -... --. .... - - .--. -.. -... --.
httpdbg - HTTP(S) requests available at http://localhost:4909/
.... - - .--. -.. -... --. .... - - .--. -.. -... --. .... - - .--. -.. -... --.
Python 3.10.6 (main, Aug 10 2022, 11:40:04) [GCC 11.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>
Perform HTTP requests.
You can inspect the HTTP requests directly in your web browser at http://localhost:4909.
You can trace all the HTTP requests performed by a script
pyhttpdbg --script filename.py [arg1 --arg2 ...]
You can trace all the HTTP requests performed by a library module run as a script using the -m
command line argument.
For example, you can view which HTTP requests are performed by pip
when you install a package.
pyhttpdbg -m pip install hookdns --upgrade
You can trace all HTTP requests made during your tests (pytest, unittest).
pyhttpdbg -m pytest [arg1 --arg2 ...]
In that case, the requests will be grouped by test, and any requests made within a fixture or the setup/teardown methods will be identified by a tag.
An initiator is the function/method that is at the origin of the HTTP requests. By default, we already support some packages but you can add your own initiators.
To add a new package in the list of initiators, you can use the -i
command line argument:
pyhttpdbg -i api_client_pck --script my_script.py
You can use any package as an initiator, this is not limited to HTTP requests.
packages | status |
---|---|
requests | supported |
urllib3 | supported |
httpx | supported |
aiohttp | supported |
pytest | supported |
unittest | supported |
your_package | yes, with the arg -i your_package |
No configuration is necessary to start but some few settings are available for particular use.
usage: pyhttpdbg [-h] [--host HOST] [--port PORT] [--version] [--initiator INITIATOR] [--keep-up | --force-quit]
[--console | --module MODULE | --script SCRIPT]
httdbg - a very simple tool to debug HTTP(S) client requests
options:
-h, --help show this help message and exit
--host HOST the web interface host IP address
--port PORT, -p PORT the web interface port
--version, -v print the httpdbg version
--initiator INITIATOR, -i INITIATOR
add a new initiator (package)
--keep-up, -k keep the server up even if the requests have been read
--force-quit, -q stop the server even if the requests have not been read
--console run a python console (default)
--module MODULE, -m MODULE
run library module as a script (the next args are passed to pytest as is)
--script SCRIPT run a script (the next args are passed to the script as is)
Some options are available to customize the UI:
You can also pin a request or delete all unpinned requests.
To keep your configuration, bookmark the page with the full search query.
Fox example, if you want to hide the group rows by default, the url will be:
http://localhost:4909/?hi=on
All the requests recorded are available on the web interface.
The requests: