> For the complete documentation index, see [llms.txt](https://docs.hypersolutions.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.hypersolutions.co/request-based-basics/installing-powhttp.md).

# Installing powhttp

powhttp is a local HTTP debugging proxy built for request-based scraping. Unlike browser DevTools or a HAR export, it captures your script's **real wire traffic**, including the true header order and TLS fingerprint your HTTP client actually sent. That makes it the most reliable way to see why a request is being blocked.

## Downloading and installing

Download powhttp and follow the install steps on their website: <https://powhttp.com/>

## Routing your script through powhttp

Once powhttp is running, it exposes a capture proxy at:

```
http://127.0.0.1:8080
```

Point your script's HTTP client at this proxy. powhttp can chain to an upstream scraping proxy, so you can keep your normal proxy configured and add powhttp in front of it. Run your failing flow so the requests are captured.

{% hint style="info" %}
powhttp captures details a HAR cannot, the real header order on the wire and the TLS ClientHello fingerprint. When a request "looks fine but still gets blocked," this is usually where you find the mismatch.
{% endhint %}

## Using powhttp with the Claude Code / Codex plugin

powhttp ships an MCP server that lets our [Claude Code plugin](/ai-plugins/claude-code-plugin.md) (or [Codex plugin](/ai-plugins/codex-plugin.md)) read your captured traffic and diagnose blocks for you.

1. In powhttp, open **Settings → MCP Server** and start it (there's an **Auto-start on app launch** option). It listens at `http://localhost:8383/mcp`.
2. Route your failing script through the capture proxy as described above and run it.
3. Ask the plugin to debug, for example: *"Capture my script with powhttp and tell me why my request is blocked."*

## Finished!

You can now inspect exactly what your client put on the wire and compare it to a real Chrome request. If you'd rather analyze a saved capture instead, see [Recording HAR files](/request-based-basics/recording-har-files-for-harvey.md).

For the full workflow — recording browser sessions, searching a capture to trace where dynamic tokens come from, diffing your request against the browser's until they match, replay, and routing through an external proxy — see the [powhttp guide](https://hypersolutions.co/blog/how-to-use-powhttp-web-scraping).

Get in touch: [discord.gg/akamai](https://discord.gg/akamai)
