Skip to main content

URL Probe

Test Status Code Coverage

This tool helps test complex cloud network setups, like those with private services that have specific exit points. It's especially useful for checking if your cloud services can talk to each other within a virtual private cloud and those services can make requests to the outside world as expected.

Use Case Say you have a Cloud Load Balancer, two Cloud Run services (Service A and Service B) and a Cloud Subnetwork with a static egress IP. You have deployed this infrastructure and want to verify that the Cloud Load Balancer can access Service A, that Service A can access Service B and that requests from Service B appear from the subnetwork static egress IP.

    Internet
        |
        |
    +-------+
    |       |
    | Cloud |
    |  Run  |  (A) - Publicly Accessible
    +-------+
        | (Target URL Parameter)
        |
        v (Internal Network Traffic)
    +-------+
    |       |
    | Cloud |
    |  Run  |  (B) - Internal Service
    +-------+
        | (Outbound Request via Static IP)
        |
        v
    +---------------+
    | External      |
    | Target Server |
    +---------------+

The network connectivity and the public IP can be verified by deploying the urlprobe tool to Service A and Service B and sending a chained curl request to the exposed service and requesting the public IP from https://api.ipify.org as the last step in the chain. For example, if the network is configured as per this use case, a curl request:

curl -s http://external-cloud-run-service-a-ip/?url=http://internal-cloud-run-service-b-ip/?url=https://api.ipify.org?format=json

will be received at Service A, then at Service B and finally at https://api.ipify.org will return the public IP.

Installation

The urlprobe tool is available on PiPy and can be installed via pip:

  1. Install Python 3.10+: Ensure you have Python 3.10 or a later version installed.
  2. Install the package from PyPI using pip:
pip install urlprobe
  1. (optional) Install the package from TestPyPI using pip:
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ urlprobe

How you deploy the urlprobe tool depends on the type of infrastructure under test e.g. packaged as a Docker image or deployed as a cloud function.

Usage

Running as a standalone application

  1. Run the server:
python -m urlprobe

(optionally) run the server with non-default args

python -m urlprobe --host 0.0.0.0 --port 8081 --debug
  1. Send a GET request to the server with the url parameter:
curl -s "http://<edge-service-ip>:8080/?url=https://<internal-service-ip>"

Replace <edge-service-ip> with the IP address or hostname of your externally accessible edge service. For example, when running as a standalone application on localhost:

curl -s "http://localhost:8080/?url=https://api.ipify.org?format=json"

Output

The server will return a JSON object containing detailed information the request chain, including:

  • Edge Service Response: Status code, headers, and body from the target service."
  • Error Messages: Detailed error messages for any failures encountered during the request chain.

Contributing

Please see Contributing Guidelines for details on:

  • Setting up your development environment
  • Code style and standards
  • Pull request process
  • Running tests

Versioning

This project follows Semantic Versioning. For the versions available, see the tags on this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for urlprobe 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for urlprobe 1.1.1
File Size Uploaded Provenance Actions
urlprobe-1.1.1.tar.gz 6.3 kB With provenance Details for urlprobe-1.1.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for urlprobe 1.1.1
File Interpreter ABI Platform Actions
urlprobe-1.1.1-py3-none-any.whl Python 3 none any Details for urlprobe-1.1.1-py3-none-any.whl

Total release size: 13.8 kB

Release files / urlprobe-1.1.1.tar.gz

Download URL urlprobe-1.1.1.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
10e99d96b368d18d3acfb5b8db1d41da7d25040a216e7b2cf73efcdaf43b616c
BLAKE2b-256 checksum
How to use checksums
16cb17e6894a39f515229608960286cce3b017e25126f7d03e3e8d8a1dc8b191
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / urlprobe-1.1.1-py3-none-any.whl

Download URL urlprobe-1.1.1-py3-none-any.whl
Size 7.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
59f2ef1beaa92b2a7c1d4c08f37921b9f509d4939ce90e67de7b9eb7178c22fd
BLAKE2b-256 checksum
How to use checksums
e1b4687008c398c749cde3412eef69d7c74dafdf522e10f0c37044d6528e5f1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for urlprobe 1.1.1

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for urlprobe-1.1.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page