Giter VIP home page Giter VIP logo

httptoolkit's Introduction

HTTP Toolkit

Follow @httptoolkit on Twitter GitHub Org's stars Desktop downloads counter Open feature suggestions 100% open-source

HTTP Toolkit is an open-source tool for debugging, testing and building with HTTP(S) on Windows, Linux & Mac.

You can use it to intercept, inspect & rewrite HTTP(S) traffic, from everything to anywhere. Explore Android app traffic, mock requests between your microservices, and x-ray your browser traffic to debug, understand and test anything.


➡️ Find out more and try it out now at httptoolkit.com ⬅️

Want to give feedback, report bugs, or get help? File an issue.

Want to contribute to HTTP Toolkit's development yourself? Dive in.


Features

With HTTP Toolkit, you can:

  • Instantly intercept browsers, most backend & scripting languages (from Node.js to PHP), Android devices, Electron apps and more with one-click setup.
  • Collect interesting traffic without intercepting everything on your whole machine, so there's no extra noise and no side-effects - just the traffic you care about.
  • Inspect the full headers & body for every request & response from every client, to immediately see what's really being sent & received on the wire.
  • Easily understand collected HTTP traffic, with inline documentation for all standard headers & responses statuses, plus body decoding, highlighting, folding, and other niceties, powered by the same internals as Visual Studio Code.
  • Quickly find the data you care about, with exchanges highlighted by client and tagged by category (images, JSON responses, errors), and free-text & structured filtering across all request & response data.
  • Breakpoint live requests or responses, to rewrite HTTP traffic on the fly.
  • Mock endpoints or servers, with a flexible rule configurations to match and handle requests automatically, to send responses, inject failures & timeouts, or transparently redirect requests elsewhere.
  • Intercept any HTTP traffic: HTTP Toolkit is a transparent HTTP proxy, and can intercept plain HTTP, encrypted HTTPS, WebSockets, HTTP/2, proxy requests, direct requests, manually redirected packets, you name it, all on one port.

An HTTP Toolkit demo video


➡️ Find out more and try it out now at httptoolkit.com ⬅️


Send your feedback

HTTP Toolkit is driven by its community of users and their feedback. Have some ideas, problems or questions about HTTP Toolkit? Post an issue in this repo. If that's too public, you can also send a message directly.

Would you like to help design the perfect HTTP debugging tool? Take a look through the open issues, and add a 👍 on topics you care about to prioritize them.

Contributing directly

Want to go further, to build & contribute the HTTP Toolkit features & fixes you're looking for yourself? HTTP Toolkit is 100% open source, so you can help shape it directly! All contributors get free HTTP Toolkit Pro (more background on this over here).

That includes code contributions, but documentation improvements, article & blog posts elsewhere about the project, bug & security reports, and anything else that helps drive HTTP Toolkit forwards. The goal is to reward anything that helps drive HTTP Toolkit development or bring it to new people. To claim your Pro account, get in touch once you've made your contribution, with the email you'd like associated with your account. Feel free to get in touch with any other questions about this too.

Where to start

This github organization contains the entire project.

Yes, even the account management servers, even the paid features, everything. All of that is open source, licensed as a mixture of copyleft AGPL (for the HTTP Toolkit-specific components, ensuring all direct derivative projects are open-source too) and permissive Apache-2/MIT licenses (for all the general-purpose reusable libraries).

The main repos you might be interested in are:

  • HTTP Toolkit Website - the source for the website, including the marketing pages, the blog, and the docs.
  • HTTP Toolkit UI - the core of the product, a TypeScript + React app that powers most of the functionality you use, except for things that can't be done in a web page (i.e. starting a proxy, and setting up client interception).
  • HTTP Toolkit Server - the backend of the product, a TypeScript + node.js server that does the things the UI can't do: starting a proxy, and setting up client interception.
  • Mockttp - the HTTP(S) proxy itself, and all low-level logic around that, as a standalone TypeScript library. Used in HTTP Toolkit for traffic interception, but also usable standalone as a testing tool, or as a programmatically controllable intercepting HTTP(S) proxy.
  • HTTP Toolkit for Android - the Android app, a native Kotlin + Java app that manages certificate trust & enforces HTTP interception on Android devices.
  • HTTP Toolkit Desktop - a TypeScript + Electron wrapper, which combines the UI & the server and builds convenient per-platform installers.

Each repo has its own readme explaining how to get set up and outlining how the component works. Check out the issues in this repo for ideas, feel free to ask questions, and dive in!

httptoolkit's People

Contributors

jsoref avatar pimterry avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

httptoolkit's Issues

Fatal error on start, app is crashed

When app starts, I get an error and app exits.

My platform is Windows 7 64bit. My account has restricted access.

But app starts ok when I run it as admin.

Maybe, related to #19

If app doesn't work with restricted user accounts, it should be mentioned elsewhere, I think.

HTTPToolkit error screenshot

Advanced exchange list filtering tools

It would be useful to be able to filter the exchange list more precisely, not just by simple text matching. Some suggested filters:

  • By URL/host
  • By specific headers
  • By body contents
  • By status
  • Negated filters for the above
  • By label/tag (with some kind of exchange-tagging system)
  • By source

Any other ideas?


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Create a more fully featured hex editor

The initial hex editor is ok for basic viewing of hex data, but doesn't provide many other features, such as automatic ASCII decoding, showing the address of each byte, or editing hex data (in breakpoints or on the mock page).

In some use cases (e.g. protobuf data until #80 is fully supported) raw binary data is used heavily in APIs, where this could be very useful.


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

Request forwarded to a new host updated Host: header

I thought this tool would be useful for testing a new CDN; I've been looking for something that I can hand to business users or other folks that aren't super technical. I purchased the Pro version and setup a simple Mock rule to forward requests for www.ni.com to the new CDN's CNAME, www.ni.com.cdn.cloudflare.net. That worked, sort of; the problem is that it also updates the HTTP request's Host header, which created a request that is broken.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Clarify the differences between this and in-browser debug tools

Hello, the tool visually looks nicer than the built-in debug tools included with browser. However, can you please point out any differences between this and the built-in tool? I see nice color coding of the response body, but what else? Maybe a comparison checkbox between your tool and what is available in Chrome, Firefox, Safari, Edge, etc.

Thanks and keep up the great work!


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Report HTTPS certificate client rejections

If an HTTPS client connects to HTTP Toolkit, but rejects the certificate and so never sends a request, currently HTTP Toolkit shows nothing.

With a few small changes, we could report & include these requests, and at least show the host they were trying to talk to (but of course not any of the other details, since the request is never sent).

This might be useful to debug manual interception setup, or to detect clients that are explicitly pinning their own certificates, and thereby rejecting HTTP Toolkit's interception.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Crash with Chrome Dev channel

The application crashes on startup (immediately after the loading progress bar) with this error message:

image

Server crashed with 'Error: Conflict on chrome.channel: "stable" !== "dev"' (1).

(that error toast disappears almost instantly, took a few tries to get a screenshot of it)

The message looks correct in that I have Chrome Dev channel installed.

Does HTTP Toolkit only support the stable Chrome channel?

  • Windows 10 Pro x64 - Version 1903 - Build 18362.356
  • Chrome Dev - Version 79.0.3921.0 (Official Build) dev (64-bit)

Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Unable to see mock tab

Hi Tim, Jake here! Not sure if you remember me from your Softwire days :)

I've just downloaded the latest version of HTTP Toolkit for WIndows from your website (HTTP.Toolkit-0.1.14.Setup.exe), and I don't seem to be able to find the mock option:
image
Not sure if there's something simple I'm missing or not - let me know if you'd like any more info.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Server crashed (Chrome bitness 32!==64)

Hi!

I am just trying out your tool. It installed correctly, but when it launches, I get the following dialog:

HTTP Toolkit hit an error
Server crashed with 'Error: Conflict on chrome.bitness: 32 !== 64' (1).
Please file an issue at github.com/httptoolkit/feedback.

It will then restart and attempt again and crash again a few more times.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Configuration to change the proxy port

By default, HTTP Toolkit defaults to 8000, and increments that if that is not available until it finds a port that is free.

Sometimes other applications require port 8000 though, so this isn't perfect. For those cases, it would be useful to allow configuration of a specific port.

What should happen if you configure a specific port, and that port isn't available on startup?


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Automatic interception for Chromium and Firefox-Nightly

I only have Chromium and Firefox-Nightly installed on my system.

Chromium is not supported by "Fresh Chrome": Error: chrome is not installed in your system.
Firefox-Nightly is not supported by "Fresh Firefox": Error: firefox is not installed in your system.

HTTP Toolkit Crashed

Hello, I install HTTP Toolkit on my Windows 7 professionnal computer.
This computer is protected by company security policies but I'm admin of it and I can install software or open port in the firewall.
When I launch it, I have this error message (who appears less than 1s...) :
HTTP Toolkit crashed
Server shutdown unexpectedly with code 1.
Please file an issue at github.com/httptoolkit/feedback
I doesn't found log or other information who can explain this error.
Is it possible to activate more debug log ?
Thanks.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Add tools for HTTP Fuzzing

In addition to #48, a useful extension would be to send fuzzed requests.

I.e. not just send this one request, but define a request generator that sends a bunch of different requests, trying different edge cases, to see what happens and find bugs/security issues.


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

Application crash on Ubuntu with 'Unexpected token }'

Hi Tim,

Thanks for this tool. I just download the .deb file, but I can't test it on my computer because the application crash after display the main windows.

Log output :

$ httptoolkit
undefined:28
}}
 ^

SyntaxError: Unexpected token } in JSON at position 662
    at JSON.parse (<anonymous>)
    at /usr/lib/httptoolkit/resources/app/httptoolkit-server/node_modules/@james-proxy/james-browser-launcher/lib/config.js:35:34
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:408:3)
undefined:28
}}
 ^

SyntaxError: Unexpected token } in JSON at position 662
    at JSON.parse (<anonymous>)
    at /usr/lib/httptoolkit/resources/app/httptoolkit-server/node_modules/@james-proxy/james-browser-launcher/lib/config.js:35:34
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:408:3)
undefined:28
}}
 ^

SyntaxError: Unexpected token } in JSON at position 662
    at JSON.parse (<anonymous>)
    at /usr/lib/httptoolkit/resources/app/httptoolkit-server/node_modules/@james-proxy/james-browser-launcher/lib/config.js:35:34
    at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:408:3)
Failed to start server, exiting. Error: Server shutdown unexpectedly with code 1.
    at Promise.then (/usr/lib/httptoolkit/resources/app/src/index.ts:149:31)
    at process._tickCallback (internal/process/next_tick.js:68:7)

Some information about my Ubuntu version :

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

$ uname -r
 4.15.0-43-generic

Translate into other languages

A large number of HTTP Toolkit users are from non-English-speaking countries. It's likely that many software developers speak English anyway, but to varying degrees, so HTTP Toolkit is likely to be easier to use for many developers in their native language.

There is an open question of which languages to translate to first. Please post below if you have any suggestions!


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

WebSocket support

I'm loving HTTPToolkit, nice work!

One of my main use cases is inspecting/troubleshooting WebSocket connections. Any plans to support WebSockets in the future?

The current crop of WebSocket cli clients and browser extensions aren't great, so I think a high quality tool like HTTPToolkit would be very successful.


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

HTTP/2 not supported

I have tested the master branch of httptoolkit-ui, with a terminal launched from http://local.httptoolkit.tech:8080/intercept.

$ curl --http2-prior-knowledge https://nghttp2.org
curl: (16) Error in the HTTP2 framing layer

Supporting HTTP/2 with prior knowledge would be important for traffic interception on Android, several Google services are connecting with HTTP/2 directly.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Windows standalone version missing electron compiler error

The standalone version cannot be loaded because there is no electron compiler, as this message indicates.

image

My system is Windows 10 1809 up to date (17763.253).
I've tried put it another place to avoid space in the path, but the error still exists.
Do I need install something beforehand?

Tools for handling base64-encoded content

Many clients send base64-encoded content, either in the body of the response or the header values. It would be useful to have an easy way to decode this.

Unclear what format this should take, since we can't easily tell when it's required...


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Add tools for sending & resending HTTP requests

Would be useful to have something like Postman built-in, so you can send requests (intercepted & recorded automatically). Useful for resending other intercepted requests, and manually testing out API queries for yourself too.

Lots of potential more complex options here (post any ideas below!) but a simple initial version plus a "rerun request" button next to intercepted traffic should be easy & immediately useful.


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

Development SSL certs: "Error: unable to verify the first certificate"

Using "Fresh Chrome" option on macOS:

When accessing a local development site that has a self-signed certificate (which is trusted in the system keychain), we see the error "Error: unable to verify the first certificate".

Let me know what other information I can provide.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Clearer formatting of headers

Header data is presented in a fairly raw form right now. There's a lot we could do with this (e.g. splitting out cookie data by cookie, highlighting key headers like Location of 30X responses). Ideas welcome, and I'd love to hear about the headers that are most important to you, and how you'd like to see them.


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

Unable to launch Firefox session on Windows

Worked great for several days. Suddenly the "Fresh Firefox" option is labeled not available, and when I click it, Debug tools state that it is not installed. It most certainly is.

vendors~main.bundle.js:70 Error: Server error: Unexpected error value: "firefox is not installed in your system." at activateInterceptor
    at f (app.js:1)

Same results on 2 machines.
Windows 10 Pro, Firefox developer edition


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Make it possible to use self-signed/bad certificates

Currently, HTTP Toolkit will reject self-signed or otherwise invalid certificates from the upstream site.

In many cases, devs use self-signed certificates locally, so this can cause problems. As a workaround, you can run the app with certificate verification completely disabled by setting the env var NODE_TLS_REJECT_UNAUTHORIZED to 0. E.g. on Linux:

export NODE_TLS_REJECT_UNAUTHORIZED=0
httptoolkit

A proper solution to this is doable though... Probably by forwarding on certificate issues (e.g. bad hostnames, expired certificates) so they appear in the certificate your browser/client sees and you can handle them as normal, and by signing intercepted but untrusted certificates with our own untrusted CA, to simulate that behaviour too.


Does this affect you too? Click the +:smiley: icon in the top right and add a :+1: on issues to help decide where HTTP Toolkit goes next, or go take a look & vote on the most popular ideas so far.

Allow scripting of mock rule behaviour

As of just now, you can mock & rewrite traffic, using the set of matchers & handlers available on the mock page. You can do a little dynamic logic there by forwarding matching requests to your own local server, which can include whatever logic it likes, but that is still a quite limited form and makes rewriting of remote responses, among other things, very challenging.

Unfortunately, embedding a scripting language inside HTTP Toolkit is quite limiting. Do you have to edit it inside the app? Can you use external packages and data stores? Do you have to use a specific language, that a significant subset of users probably won't already know?

It would be good to find a way to allow scripting, whilst avoiding some or (in a perfect world) all of these limitations.

If you're keen on this feature, context of how you'd use it would be super helpful. Please comment below to describe the kind of scripts you'd like to write!


Does this affect you too? Click below and add a 👍 to vote for this and help decide where HTTP Toolkit goes next, or go vote on the other most popular ideas so far.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.