# Full power of pathoc

**URL:** <https://discourse.mitmproxy.org/t/full-power-of-pathoc/569>\
**Category:** help\
**Created:** [July 31, 2017, 11:40am UTC](https://discourse.mitmproxy.org/t/full-power-of-pathoc/569 "2017-07-31T11:40:51Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mkagenius](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/mkagenius/32/32_2.png) [@mkagenius](https://discourse.mitmproxy.org/u/mkagenius)\
**Post date:** [July 31, 2017, 11:40am UTC](https://discourse.mitmproxy.org/t/full-power-of-pathoc/569/1 "2017-07-31T11:40:51Z")

</div>

After reading [http://blog.portswigger.net/2017/07/cracking-lens-targeting-https-hidden.html](http://blog.portswigger.net/2017/07/cracking-lens-targeting-https-hidden.html).  
I wanted to do  
$ pathoc [google.com](http://google.com) [get:@tester.com](mailto:get:@tester.com)

But I get an error as below. It seems we cannot start a path with ‘@’ symbol. Or Am I doing something wrong. Pathoc seems really powerful feature to test HTTP protocol/servers but this seems to not work.

* * *

(venv) mitmproxy manish $ pathoc [google.com](http://google.com) [get:@tester.com](mailto:get:@tester.com)  
Error parsing request spec: Expected {{‘wf’ Suppress:([":"]) [{Suppress:([":"]) {{Suppress:(“c”) {‘binary’ | ‘text’ | ‘ping’ | ‘continue’ | ‘close’ | ‘pong’ | integer}} | {Suppress:(“l”) integer} | {["-"] Suppress:(“fin”)} | {["-"] Suppress:(“rsv1”)} | {["-"] Suppress:(“rsv2”)} | {["-"] Suppress:(“rsv3”)} | {["-"] Suppress:(“mask”)} | {Suppress:(“p”) {integer | “r” | “a”} Suppress:(",") {integer | “f”}} | {Suppress:(“d”) {integer | “r” | “a”}} | {Suppress:(“i”) {integer | “r” | “a”} Suppress:(",") {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}} | ‘knone’ | {Suppress:(“k”) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}}} | {Suppress:(“x”) integer} | {Suppress:(“b”) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}}} | {Suppress:(“r”) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}}} | {Suppress:(“f”) {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}}}]…} ^ {{{‘ws’ [{Suppress:([":"]) {‘GET’ | ‘HEAD’ | ‘POST’ | ‘PUT’ | ‘DELETE’ | ‘OPTIONS’ | ‘TRACE’ | ‘CONNECT’ | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}}]} | {‘GET’ | ‘HEAD’ | ‘POST’ | ‘PUT’ | ‘DELETE’ | ‘OPTIONS’ | ‘TRACE’ | ‘CONNECT’ | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}} Suppress:([":"]) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} [{Suppress:([":"]) {{Suppress:(“h”) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}} Suppress:("=") {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}} | {Suppress:(“c”) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}}} | {Suppress:(“u”) {‘a’ | ‘l’ | ‘b’ | ‘c’ | ‘f’ | ‘g’ | ‘i’ | ‘p’ | ‘h’ | ‘s’ | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}} | ‘r’ | {Suppress:(“s”) {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}} | {Suppress:(“b”) {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}}} | {Suppress:(“x”) integer} | {Suppress:(“p”) {integer | “r” | “a”} Suppress:(",") {integer | “f”}} | {Suppress:(“d”) {integer | “r” | “a”}} | {Suppress:(“i”) {integer | “r” | “a”} Suppress:(",") {{{Suppress:("@") integer} [{“k” | “b” | “m” | “t” | “g”}] [{Suppress:(",") {“digits” | “ascii\_lowercase” | “whitespace” | “ascii\_letters” | “punctuation” | “bytes” | “hexdigits” | “ascii\_uppercase” | “ascii” | “octdigits”}}]} | {Suppress:("\<") {quoted string, starting with " ending with " | quoted string, starting with ’ ending with ’ | W:(0123…)}} | {quoted string, starting with " ending with " | quoted string, starting with ’ ending with '}}}}}]…}}  
[get:@tester.com](mailto:get:@tester.com)  
^

---

<div class="post-metadata">

**Author:** ![mkagenius](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.mitmproxy.org/mkagenius/32/32_2.png) [@mkagenius](https://discourse.mitmproxy.org/u/mkagenius)\
**Post date:** [August 1, 2017, 8:08am UTC](https://discourse.mitmproxy.org/t/full-power-of-pathoc/569/2 "2017-08-01T08:08:01Z")

</div>

I realized it is due to ‘@100’ type of feature. Maybe we should add a flag to disable the interpretation of ‘@’ or such symbols. While at it, we can perhaps support any text in place of GET method.

EDIT: created a feature request: [https://github.com/mitmproxy/mitmproxy/issues/2497](https://github.com/mitmproxy/mitmproxy/issues/2497)
