Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide mechanism to inspect an apps network traffic #47

Open
jonek opened this issue Nov 2, 2018 · 1 comment
Open

Provide mechanism to inspect an apps network traffic #47

jonek opened this issue Nov 2, 2018 · 1 comment
Labels

Comments

@jonek
Copy link
Member

jonek commented Nov 2, 2018

It would be nice if the CLI would provide a way to inspect an app's network traffic.
That is any calls of the app to:

That traffic would be transmitted from a running app to the CLI using the existing web-socket mechanism already used to transfer the logging messages.

Having separate XHR and Request channels would be nice. This would be similar to the channels of the same name available in the Chrome dev tools.

There could be two types of output of the network traffic on the CLI side (all three toggles could work independently):

  1. simple one-line meta data on stdout
  • toggle --enable-request-log and --disable-XHR-log
  • example output GET 200 http://foo.bar.net/some/path?queryparam=value 120ms
  1. raw network traffic in form of one JSON object per request
  • toggle --enable-raw-network
  • example output
{
        "time": 34.19247499189805,
        "request": {
          "method": "GET",
          "url": "http://foo.bar.net/some/path?queryparam=value",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Host",
              "value": "foo.bar.net"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "Upgrade-Insecure-Requests",
              "value": "1"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36"
            },
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"
            },
            {
              "name": "Referer",
              "value": "http://baz.net/"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate, br"
            },
            {
              "name": "Accept-Language",
              "value": "en-US,en;q=0.9,de;q=0.8"
            },
            {
              "name": "Cookie",
              "value": "SOME_ID=asdfasdfasdf; SOME_OTHER_KEY=1234;"
            }
          ],
          "queryString": [
            {
              "name": "queryparam",
              "value": "value"
            }
          ],
          "cookies": [
            {
              "name": "SOME_ID",
              "value": "asdfasdfasdf",
              "expires": null,
              "httpOnly": false,
              "secure": false
            },
            {
              "name": "SOME_OTHER_KEY",
              "value": "1234",
              "expires": null,
              "httpOnly": false,
              "secure": false
            }
          ],
          "headersSize": 1661,
          "bodySize": 0
        },
        "response": {
          "status": 303,
          "statusText": "See Other",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Server",
              "value": "nginx/1.10.3 (Ubuntu)"
            },
            {
              "name": "Date",
              "value": "Fri, 02 Nov 2018 16:54:03 GMT"
            },
            {
              "name": "Content-Length",
              "value": "0"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Location",
              "value": "http://some.other.url"
            },
            {
              "name": "Strict-Transport-Security",
              "value": "max-age=15768000"
            }
          ],
          "cookies": [],
          "content": {
            "size": 0,
            "mimeType": "x-unknown",
            "compression": 0
          },
          "redirectURL": "http://some.other.url",
          "headersSize": 492,
          "bodySize": 0,
          "_transferSize": 492
        }
}
@jonek jonek added the feature label Nov 2, 2018
@jonek
Copy link
Member Author

jonek commented Nov 2, 2018

The JSON example was a request I exported from my Chrome dev tools' "network" tab via "right click" -> "Copy" -> "Copy all as HAR".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant