Skip to main content

A very simple tool to debug HTTP(S) client requests

Project description

httpdbg

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/

installation

pip install httpdbg

usage

interactive console

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.

script

You can trace all the HTTP requests performed by a script

pyhttpdbg --script filename.py [arg1 --arg2 ...]

pytest

You can trace all the HTTP requests performed during your tests

pyhttpdbg -m pytest [arg1 --arg2 ...]

If you use the pytest-xdist plugin to execute your tests in parallel, then you must install the pytest-httpdbg plugin if you want to trace the requests done by the pytest workers.

pip install httpdbg[pytest]

module

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

Initiators

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.

Already supported packages

packages status
requests supported
urllib3 supported
httpx supported
aiohttp supported
pytest supported
your_package yes, with the arg -i your_package

configuration

No configuration is necessary to start but some few settings are available for particular use.

command line

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)

web interace

Clic on the button on the top right of the page.

Some options are available:

  • Hide the netloc in the url
  • Hide the initiator rows
  • Hide the tags

To keep your configuration, bookmark the page with the full search query.

Fox example, if you want to hide the initiator rows by default, the url will be:

http://localhost:4909/?hi=on

web interface

All the requests recorded are available on the web interface.

The requests:

  • are still available in the web page even if the python process stopped (except if you force quit before the requests have been loaded by the web page).
  • are automatically cleaned if a new execution is detected.

documentation

https://httpdbg.readthedocs.io

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

httpdbg-0.28.0.tar.gz (57.6 kB view details)

Uploaded Source

Built Distribution

httpdbg-0.28.0-py3-none-any.whl (62.8 kB view details)

Uploaded Python 3

File details

Details for the file httpdbg-0.28.0.tar.gz.

File metadata

  • Download URL: httpdbg-0.28.0.tar.gz
  • Upload date:
  • Size: 57.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for httpdbg-0.28.0.tar.gz
Algorithm Hash digest
SHA256 61e6233e314b04ac55a3da6a8fb57860f62519bf35ed2545bd9788c0cc3e3b6c
MD5 49e9e75514cc56558c3e9e43db2f21a4
BLAKE2b-256 e61831a2ecee7edb1e27f40e3c4533ec495dbace3cc6d07c379ddc58984d803e

See more details on using hashes here.

File details

Details for the file httpdbg-0.28.0-py3-none-any.whl.

File metadata

  • Download URL: httpdbg-0.28.0-py3-none-any.whl
  • Upload date:
  • Size: 62.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for httpdbg-0.28.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c8e8a0f9317b25edadfd5298880cd9ea9adad6de4b9330833c942e5adc2ac7fe
MD5 979cc8d0f56f2a4aac4be0a02edfaf82
BLAKE2b-256 4ee57f48fcbbf199cb245bfd48049a349493b7659c062955dbcf53515af05a20

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page