mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-27 02:24:18 +00:00
Feature specification documentation.
This commit is contained in:
parent
80c3a9c9f8
commit
29ca64472d
88
README.mkd
88
README.mkd
@ -5,22 +5,23 @@ Pathod
|
||||
Pathod is a pathological HTTP/S daemon, useful for testing and torturing client
|
||||
software. At Pathod's core is a small, terse language for crafting HTTP
|
||||
responses. The simplest way to use Pathod is to fire up the daemon, and specify
|
||||
the respnse behaviour you want in the request URL, like this:
|
||||
the respnse behaviour you want using this language in the request URL. Here's a
|
||||
minimal example:
|
||||
|
||||
http://localhost:9999/p/200
|
||||
|
||||
Everything below the magic "/p/" path component is a response specifier - in
|
||||
this case we're just specifying a vanilly 200 OK response, see the docs below
|
||||
to get fancier. You can also add anchors to the Pathod server that serve a
|
||||
fixed response whenever a path matching a specified URL is requested:
|
||||
this case just a vanilla 200 OK response. See the docs below to get (much)
|
||||
fancier. You can also add anchors to the Pathod server that serve a fixed
|
||||
response whenever a matching URL is requested:
|
||||
|
||||
pathod --anchor /foo=200
|
||||
pathod --anchor "/foo=200"
|
||||
|
||||
Here, the part before the "=" is a regex specifying the anchor path, and the
|
||||
part after is again a response specifier.
|
||||
part after is a response specifier.
|
||||
|
||||
Pathod has a nifty web interface built in, which exposes activity logs, online
|
||||
help and various other goodies. Try it by visiting the server root:
|
||||
Pathod also has a nifty built-in web interface, which exposes activity logs,
|
||||
online help and various other goodies. Try it by visiting the server root:
|
||||
|
||||
http://localhost:9999
|
||||
|
||||
@ -39,20 +40,22 @@ OK message with no headers and no content:
|
||||
200
|
||||
|
||||
We can embellish this a bit by specifying an optional custom HTTP response
|
||||
message. By default for a 200 response code, this is just "OK", but we can
|
||||
change it like this:
|
||||
message (if we don't, Pathod automatically creates an appropriate one). By
|
||||
default for a 200 response code the message is "OK", but we can change it like
|
||||
this:
|
||||
|
||||
200"YAY"
|
||||
|
||||
The quoted string above is an example of a value specifier, a syntax that is
|
||||
used pervasively in the Pathod response specification language. In this case,
|
||||
we're specifying a literal string, but there are many other fun things we can
|
||||
do. For example, we can tell Pathod to generate 100k of random ASCII letters
|
||||
instead:
|
||||
The quoted string here is an example of a Value Specifier, a syntax that is
|
||||
used throughout the Pathod response specification language. In this case, the
|
||||
quotes mean we're specifying a literal string, but there are many other fun
|
||||
things we can do. For example, we can tell Pathod to generate 100k of random
|
||||
ASCII letters instead:
|
||||
|
||||
200@100k,ascii_letters
|
||||
|
||||
Full documentation on the value specification syntax can be found below.
|
||||
Full documentation on the value specification syntax can be found in the next
|
||||
section.
|
||||
|
||||
Following the response code specifier is a colon-separateed list of features.
|
||||
For instance, this specifies a response with a body consisting of 1 megabyte of
|
||||
@ -95,8 +98,8 @@ We can also ask Pathod to hang randomly:
|
||||
|
||||
200:b@1m:pr,a
|
||||
|
||||
Pathod has a similar mechanism for simply dropping a connection mid-response.
|
||||
So we can tell Pathod to disconnect after sending 50 bytes:
|
||||
There is a similar mechanism for dropping connections mid-response. So, we can
|
||||
tell Pathod to disconnect after sending 50 bytes:
|
||||
|
||||
200:b@1m:d50
|
||||
|
||||
@ -105,7 +108,7 @@ Or randomly:
|
||||
200:b@1m:dr
|
||||
|
||||
All of these features can be combined. Here's a response that pauses twice,
|
||||
then hangs:
|
||||
once at 10 bytes and once at 20, then disconnects at 5000:
|
||||
|
||||
200:b@1m:p10,10:p20,10:d5000
|
||||
|
||||
@ -113,17 +116,50 @@ then hangs:
|
||||
Features
|
||||
========
|
||||
|
||||
hVALUE=VALUE Set header
|
||||
bVALUE Set body
|
||||
cVALUE Set Content-Type header
|
||||
lVALUE Set Location header
|
||||
_h_KEY=VALUE
|
||||
------------
|
||||
|
||||
dOFF|r Disconnect after OFF bytes, measured from the beginning of the response.
|
||||
pNUM|f,OFF|r|a Pause for NUM seconds after OFF bytes.
|
||||
Set a header. Both KEY and VALUE are full _Value Specifiers_.
|
||||
|
||||
|
||||
_b_VALUE
|
||||
--------
|
||||
|
||||
Set the body. VALUE is a _Value Specifier_. When the body is set, Pathod will
|
||||
automatically set the appropriate Content-Length header.
|
||||
|
||||
_c_VALUE
|
||||
--------
|
||||
|
||||
A shortcut for setting the Content-Type header. Equivalent to:
|
||||
|
||||
h"Content-Type"=VALUE
|
||||
|
||||
_l_VALUE
|
||||
--------
|
||||
|
||||
A shortcut for setting the Location header. Equivalent to:
|
||||
|
||||
h"Content-Type"=VALUE
|
||||
|
||||
|
||||
_d_OFFSET
|
||||
---------
|
||||
|
||||
Disconnect after OFFSET bytes. The offset can also be "r", in which case Pathod
|
||||
will disconnect at a random point in the response.
|
||||
|
||||
|
||||
_p_SECONDS,OFFSET
|
||||
-----------------
|
||||
|
||||
Pause for SECONDS seconds after OFFSET bytes. SECONDS can also be "f" to pause
|
||||
forever. OFFSET can also be "r" to generate a random offset, or "a" for an
|
||||
offset just after all data has been sent.
|
||||
|
||||
|
||||
Value Specifiers
|
||||
----------------
|
||||
================
|
||||
|
||||
@500k - 500k of random data
|
||||
@500k,utf8 - 500k of utf8. Other specifiers: utf8,alphanum,alpha,printable
|
||||
|
Loading…
Reference in New Issue
Block a user