Files

3.3 KiB

title, description
title description
Proxy Configuration Enable and configure TRAWL's challenge-bypassing HTTP/HTTPS proxy.

Proxy configuration

Environment variables

Variable Default Purpose
MITM_PROXY_ENABLED false Starts the forward-proxy listener
MITM_PROXY_HOST 0.0.0.0 Listener bind address
MITM_PROXY_PORT 8192 Listener port
MITM_PROXY_CA_DIR /data/proxy-ca Persistent root CA certificate and private-key directory
MITM_PROXY_MAX_TIER 4 Highest solver tier available to proxy escalation
MITM_PROXY_DEBUG false Logs proxied requests and tier attempts

Example:

MITM_PROXY_ENABLED=true
MITM_PROXY_HOST=127.0.0.1
MITM_PROXY_PORT=8192
MITM_PROXY_CA_DIR=/data/proxy-ca
MITM_PROXY_MAX_TIER=4
MITM_PROXY_DEBUG=false

Use 127.0.0.1 for a local installation. Docker clients on a bridge network normally require 0.0.0.0; restrict access with container networking or a host firewall.

MITM_PROXY_MAX_TIER=3 prevents proxy requests from consuming a configured residential Tier 4 proxy. An empty or invalid value uses the normal maximum of Tier 4.

Docker Compose

The supplied Compose files publish the API and proxy ports and persist the root CA:

services:
  trawl:
    ports:
      - "8191:8191"
      - "8192:8192"
    environment:
      MITM_PROXY_ENABLED: "true"
      MITM_PROXY_HOST: 0.0.0.0
      MITM_PROXY_PORT: 8192
      MITM_PROXY_CA_DIR: /data/proxy-ca
    volumes:
      - trawl_proxy_ca:/data/proxy-ca

volumes:
  trawl_proxy_ca:

Start or recreate the service after changing proxy variables:

docker compose up -d --force-recreate trawl

Upstream proxy interaction

Tier 0 direct traffic leaves from the TRAWL host directly. PROXY_URL and RESIDENTIAL_PROXY_URL apply when a challenged request escalates into the scrape tiers; they do not turn the entire forward proxy into a chain through another proxy.

The normal sticky-per-domain rotation and failure cooldown rules apply during escalation. Use MITM_PROXY_MAX_TIER to cap which tiers the forward proxy may reach.

Verify the listener

Download the CA and test an HTTPS request:

curl http://127.0.0.1:8191/proxy-ca.crt -o trawl-ca.crt
curl --proxy http://127.0.0.1:8192 \
  --cacert ./trawl-ca.crt \
  https://example.com/

Test plain HTTP:

curl --proxy http://127.0.0.1:8192 http://neverssl.com/

Test Range forwarding:

curl --proxy http://127.0.0.1:8192 \
  --cacert ./trawl-ca.crt \
  -H 'Range: bytes=0-99' \
  -D - https://httpbin.org/range/1024

The Range request should return 206 and a 100-byte body when the upstream supports it.

Debug logging

Set MITM_PROXY_DEBUG=true to log direct forwarding, streaming decisions, challenge escalation, winning scrape tiers, statuses, content types, and payload sizes. Disable it after troubleshooting; general proxy clients can generate a large volume of requests.

The proxy has no authentication layer. Never publish port 8192 directly to the internet.