CINXE.COM
HAR Analyzer
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta charset="utf-8" /> <title>HAR Analyzer</title> <meta name="keywords" content="troubleshoot, G Suite, Google Apps, Google Workspace, http archive, jserror, error 500, response code"> <link href="//fonts.googleapis.com/css?family=Product+Sans" rel="stylesheet"> <link href='https://fonts.googleapis.com/css?family=Roboto_old:400,500,700,400italic,500italic,300,300italic,100' rel='stylesheet' type='text/css'> <link rel="stylesheet" href="//www.gstatic.com/external_hosted/material_design_lite/mdl_css-teal-blue-bundle.css" /> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons+Extended"> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="/toolbox/static/toolbox.v2.css" type="text/css" media="screen" charset="utf-8" /> <link rel="shortcut icon" href="/toolbox/static/favicon.ico" > <link rel="stylesheet" href="static/harmd.css" type="text/css" media="screen" charset="utf-8" /> <script src="js/har_analyzer__en.js"></script> <script src="https://gstatic.com/external_hosted/material_design_lite/mdl_all_js_compiled.js"></script> <script type="text/javascript" src="/toolbox/static/toolbox.js"> </script> <script type="text/javascript"> var tag = ''; tag = 'G-G0TNCXY329'; window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', tag); var f = document.getElementsByTagName('script')[0]; var j = document.createElement('script'); j.async = true; j.src = 'https://www.googletagmanager.com/gtag/js?id=' + tag; f.parentNode.insertBefore(j,f); </script> </head> <body> <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header"> <header class="mdl-layout__header mdl-layout__header--scroll"> <div class="mdl-layout__header-row" id="maia-nav-x"> <span class="mdl-layout-title"> <h1 class="logo-row"> <div class="lockup"> <a href="/apps/main/"> <span class="lockup-text"> <span class="lockup-brand"> Google Admin Toolbox</span> </span> </a> <span class="lockup-text"> <span class="tool-label"> HAR Analyzer </span> </span> </div> </h1> </span> <div class="mdl-layout-spacer"></div> <div class="toolbox-nav-container "> <nav class="mdl-navigation mdl-layout--large-screen-only"> <a class="mdl-navigation__link" href="#help" onclick="javascript:toggle_visibility('toolbox-help-dialog');"> Help </a> </nav> <div id='toolbox-help-dialog' class="mdl-shadow--8dp" style='display:none;'> <div> <p> If you don't know how to get a HAR capture, please check the load page where you can find a how-to guide for the three major browsers: Chrome, Firefox and Internet Explorer. </p> To use this tool: <ul> <li> Click on the "Choose File" button</li> <li> Select the HAR file you want to analyze</li> </ul> <p> The file should load automatically and the analysis screen should appear. Remember that the tool shows all <b>times in UTC</b>. The main sections of this screen can be seen in the image bellow: <img src="static/img/imgs/harhelp.png" alt="Sections of the Analysis screen" /> <ul> <li> <dfn>Button to open a new HAR file</dfn> Use it to start analyzing a different file. </li> <li> <dfn>Grouping options for the entries</dfn> You can choose between showing all entries together, without separating entries related to the same page, or showing the entries associated with their page. </li> <li> <dfn>Timing display selector</dfn> You can choose between showing the timings in the entries' table relative to the page or independent. In the first mode the timing info for that entry will start in the position relative to the entry start time compared to the page start time, and will only expand what corresponds to the entry's duration compared to the page's duration. In the second mode the timing of each entry will occupy all available space.<br /> Of course the relative mode only makes sense when the entries are grouped by page. </li> <li> <dfn>The free text filter</dfn> is a powerful tool that allows you to create really complex searches among a har entries. The simplest way to create a search is to just write several search terms on it, like: [get drive]. This will search entries that have all those terms on their response and request. Note that quoted sentences will be treated as a single search term, so: ["number of events" week] will search that the sentence "number of events" appears somewhere on the query. Moreover the search tearms my occur as a field-term pairs like : [requst.url:term request.method:term response.status:term]. <p> You can make even more complex queries by using operator, creating groups or indicating the field you are interested in. </p> <ul> <li> Operators affect the search term immediately following them, changing the way it validates against the whole group or search. Supported operators: <ul> <li> <b>&</b>: It's the default operator, and will calculate the AND operation of the results of the following term with the results of all preceding calculations. </li> <li> <b>|</b>: It will calculate the OR operation of the results of the following term with the one resulting of all preceding calculations. </li> <li> <b>^</b>: It will calculate the XOR operation of the results of the following term with the one resulting of all preceding calculations. </li> <li><b>-</b>: It will negate the results of the following term.</li> </ul> </li> </ul> </li> <li> <dfn>Entries for the page</dfn> Displays the entries, each one showing in one row in the table. Inside that row, the "Analysis" column provides a quick and graphical view of the entry data. </li> <li> <dfn>Analysis of the selected entry</dfn> The space on the right shows the complete analysis for the selected entry. It will only appear when the user clicks on the row of the entry they are interested in.<br /> This analysis is separated on several sections, displayed as a group of several tabs. Note that some tabs will only be available if they make sense for the entry (for example, the one analyzing the POST data will only show for POST requests). </li> <li> <dfn>General Page analysis</dfn> Shows the general data for the whole page, like the accumulated timing for all entries, the size of the data uploaded/downloaded for all entries, etc. </li> </ul> </p> </div> </div> </div> </div> </header> <!-- Drawer menu --> <div class="mdl-layout__drawer custom-drawer"> <span class="mdl-layout-title">Google Admin Toolbox</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link " href='/apps/main/'> <i class="drawer-icons material-icons" role="presentation"> home </i> Home</a> <div class="my-drawer-separator"></div> <a class="mdl-navigation__link" href='/apps/browserinfo/'> Browserinfo </a> <a class="mdl-navigation__link" href='/apps/checkmx/'> Check MX </a> <a class="mdl-navigation__link" href='/apps/dig/'> Dig </a> <a class='active mdl-navigation__link' href='/apps/har_analyzer/'> HAR Analyzer </a> <a class="mdl-navigation__link" href='/apps/loganalyzer/'> Log Analyzer </a> <a class="mdl-navigation__link" href='/apps/loggershark/'> Log Analyzer 2 </a> <a class="mdl-navigation__link" href='/apps/messageheader/'> Messageheader </a> <a class="mdl-navigation__link" href='/apps/useragent/'> Useragent </a> <a class="mdl-navigation__link" href='/apps/other_tools/'> Additional Tools </a> <a class="mdl-navigation__link" href='/apps/encode_decode/'> Encode/Decode </a> <a class="mdl-navigation__link" href='/apps/screen_recorder/'> Screen Recorder </a> <div class="my-drawer-separator"></div> <a class='mdl-navigation__link' href="/apps/main/feedback"> <i class="drawer-icons material-icons" role="presentation">feedback</i> Feedback </a> <a class='mdl-navigation__link' href="//www.google.com/intl/en/policies"> <i class="drawer-icons material-icons" role="presentation">info</i> Privacy & Terms </a> <a class="mdl-navigation__link" href="#help" onclick="javascript:toggle_visibility('toolbox-help-dialog');"> <i class="drawer-icons material-icons" role="presentation">help</i> Help </a> </nav> </div> <main class="mdl-layout__content custom-main-content"> <div class="page-content custom-page-content"> <div id="errors" class="errors maia-promo"></div> <div class="input" id="inputDiv"> <fieldset> <h2>Select a HAR file</h2> <input id="fileSelector" type="file" name="fileSelector" class="inputfile" disabled="disabled"> <label class="mdl-button mdl-button--raised mdl-button--colored mdl-js-button mdl-js-ripple-effect mdl-button--accent" for="fileSelector"> Choose file </label> </fieldset> <div class="mdl-grid howto"> <h5>How to get a HAR capture</h5> <p class="mdl-cell--12-col"> <a href="//www.google.com/url?q=https://en.wikipedia.org/wiki/HAR_(file_format)"> HAR (HTTP Archive) </a> is a file format used by several HTTP session tools to export the captured data. The format is basically a JSON object with a particular set of fields. Note that not all the fields in the HAR format are mandatory, and in many cases, some information won't be saved to the file. </p> <div class="mdl-components__warning har-warning"> HAR files contain sensitive data! <ul> <li>Content of the pages you downloaded while recording.</li> <li>Your cookies, which would allow anyone with the HAR file to impersonate your account.</li> <li>All the information that you submitted while recording: personal details, passwords, credit card numbers, etc.</li> </ul> If needed, you can edit a HAR file in a text editor and redact sensitive information. </div> <br> <p class="mdl-cell--12-col"> You can get a capture of an HTTP session in many browsers, including Google Chrome, Microsoft Edge, and Mozilla Firefox. </p> <div class="browser mdl-cell--4-col mdl-cell--8-col-tablet" id="ie"> <div class="mdl-card mdl-shadow--3dp"> <div class="mdl-card__title"> <h2 class="mdl-card__title-text">Internet Explorer/Edge</h2> </div> <div class="mdl-card__supporting-text mdl-card--expand"> See detailed instructions in <a target="_blank" href="//www.google.com/url?q=https://docs.microsoft.com/en-us/microsoft-edge/devtools-guide-chromium/network/"> Inspect network activity in Microsoft Edge DevTools </a> on the Microsoft website. <ul> <li>Open the Developer Tools from the menu (Menu > More Tools > Developer tools), or by pressing F12 (or Fn-F12) on your keyboard.</li> <li>Open the Network tab.</li> <li> Look for a round button at the top left of the Network tab. Make sure it's red. If it's grey, click it once to start recording. </li> <li>Turn on "<i>Preserve log</i>".</li> <li>Reproduce the issue.</li> <li> Save the capture by right-clicking on the grid and choosing "<i>Save as HAR with Content</i>". </li> </ul> For Internet Explorer, use <a target="_blank" href="//www.google.com/url?q=https://www.httpwatch.com/"> HttpWatch</a>: <ul> <li>Download and Install HttpWatch.</li> <li> Start the HttpWatch capture right before reproducing the issue. </li> <li> Stop the HttpWatch capture right after reproducing the issue. </li> <li>Export the capture to HAR format.</li> </ul> </div> </div> </div> <div class="browser mdl-cell--4-col mdl-cell--8-col-tablet" id="ff"> <div class="mdl-card mdl-shadow--3dp"> <div class="mdl-card__title"> <h2 class="mdl-card__title-text">Firefox</h2> </div> <div class="mdl-card__supporting-text mdl-card--expand"> <ul> <li> Start Firefox Developer Tools in Network mode (Top right menu > Developer > Network, or Ctrl-Shift-E / Cmd-Alt-E on macOS). </li> <li>Turn on "<i>Persist logs</i>" on the right.</li> <li>Reproduce the issue.</li> <li> Save the capture by right-clicking on the grid and choosing "<i>Save all as HAR</i>". </li> </ul> </div> </div> </div> <div class="browser mdl-cell--4-col mdl-cell--8-col-tablet" id="chrome"> <div class="mdl-card mdl-shadow--3dp"> <div class="mdl-card__title"> <h2 class="mdl-card__title-text">Chrome</h2> </div> <div class="mdl-card__supporting-text mdl-card--expand"> You can record your HTTP session using the Network tab in the Developer Tools in Chrome. <ul> <li> Open the Developer Tools from the menu (Menu > More Tools > Developer tools), or by pressing F12 (or Fn-F12) on your keyboard. </li> <li>Click on the Network tab</li> <li> Look for a round button at the top left of the Network tab. Make sure it's red. If it's grey, click it once to start recording. </li> <li>Turn on "<i>Preserve log</i>".</li> <li> You can use the clear button (a circle with a diagonal line through it) right before trying to reproduce the issue to remove unnecessary header information. </li> <li>Reproduce the issue.</li> <li> Save the capture by right-clicking on the grid and choosing "<i>Save as HAR with Content</i>". </li> </ul> </div> </div> </div> </div> </div> <div class="content hidden mdl-grid" id="contentDiv"> <div class="mdl-cell mdl-cell--1-col"> <button id="loadAnother" title="Load another file" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--accent mdl-shadow--12dp"> <i class="material-icons">folder_open</i> </button> <button id="redact" title="Download version of this file without sensitive data" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--accent mdl-shadow--12dp"> <i class="material-icons-extended">incognito</i> </button> </div> <div class="controls mdl-cell mdl-cell--2-col mdl-cell--8-col-tablet mdl-cell--4-col-phone"> <p class="status-code-heading">Filter by HTTP status codes. <a href="https://www.w3schools.com/tags/ref_httpmessages.asp" target="_blank"> Learn More </a> </p> <label id="har-error" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect status-code-filter" for="checkbox-0"> <input type="checkbox" id="checkbox-0" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label" title="The HAR file does not contain any status code for this response. Often represented as 0. ">0</span> </label> <label id="provisional" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect status-code-filter" for="checkbox-1xx"> <input type="checkbox" id="checkbox-1xx" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label" title="Provisional HTTP responses such as 101 or 103 ">1xx</span> </label> <label id="success" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect status-code-filter" for="checkbox-2xx"> <input type="checkbox" id="checkbox-2xx" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label" title="Success HTTP responses such as 200 ">2xx</span> </label> <label id="redirection-cache-success" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect status-code-filter" for="checkbox-3xx"> <input type="checkbox" id="checkbox-3xx" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label" title="Redirection & cache-success HTTP responses such as 302 ">3xx</span> </label> <label id="client-error" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect status-code-filter" for="checkbox-4xx"> <input type="checkbox" id="checkbox-4xx" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label" title="Client error response codes such as 404 and 403 ">4xx</span> </label> <label id="server-error" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect status-code-filter" for="checkbox-5xx"> <input type="checkbox" id="checkbox-5xx" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label" title="Server error HTTP responses such as 500 ">5xx</span> </label> </div> <div class="filters mdl-cell mdl-cell--3-col"> <fieldset> <label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="pages"> <input type="radio" id="pages" class="mdl-radio__button" name="grouping" value="pages" checked> <span class="mdl-radio__label">Group by pages</span> </label> <br/> <label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="entries"> <input type="radio" id="entries" class="mdl-radio__button" name="grouping" value="entries"> <span class="mdl-radio__label">All entries</span> </label> </fieldset> </div> <div class="controls mdl-cell mdl-cell--2-col"> <button id="toggleSplit" title="Toggle Horizontal / Vertical Split" class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab mdl-button--accent mdl-shadow--12dp"> <i id="toggleSplit-icon" class="material-icons">swap_vert</i> </button> <span class="button-seperator"></span> <button id="closeAll" class="jfk-button-action maia-button control-button mdl-button mdl-js-button mdl-button--icon mdl-button--fab mdl-button--mini-fab mdl-button--colored" title="Collapse all"> <i class="material-icons">expand_less</i> </button> <button id="openAll" class="mdl-button mdl-js-button mdl-button--icon jfk-button-action maia-button control-button mdl-button--fab mdl-button--mini-fab" title="Expand all" disabled> <i class="material-icons">expand_more</i> </button> </div> <div class="controls mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-cell--4-col-phone"> <div class="mdl-textfield mdl-js-textfield search-box"> <input class="mdl-textfield__input jfk-textinput maia-textinput" type="text" id="searchInput"> <label class="mdl-textfield__label" for="searchInput"> Terms to filter by </label> </div> <button id="search" title="Search" class="maia-button control-button mdl-button mdl-js-button mdl-button--icon mdl-button--colored"> <i class="material-icons">search</i> </button> </div> <div class="mdl-cell mdl-cell--12-col tools-separator"> <hr> </div> <div id="harData mdl-cell"> <div class="mdl-grid" id="harEntries"> <div id="dataDiv" class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet"> <div id="controlHarGrids"> <div id="harGrids"></div> </div> </div> <div id="entryInfo" class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet"></div> <div id="domainListSplitHandle" class="goog-splitpane-handle"></div> </div> </div> </div> <script type="text/JavaScript"> function handleClientLoad() { window.console.log('handle client load'); var accessLevel = 20 harAnalyzer.main.setUp(accessLevel); } window.addEventListener('load', handleClientLoad, { capture: false, once: true }); </script> </div> <div class="cookie-notice mdl-components__warning" id="cookie-notice" style="display:none;"> <p class="cookie-notice"> This site uses cookies from Google to deliver its services and to analyze traffic. </p> <a href="https://policies.google.com/technologies/cookies" class="toolbox-external-link"> Learn more. </a> <button class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect" id="cookie-notice-ack-button"> Ok, Got it. </button> </div> <footer class="mdl-mini-footer toolbox-footer"> <div class="mdl-mini-footer__left-section"> <ul class="mdl-mini-footer__link-list"> <li><a href='/apps/main/'>Home</a></li> <li><a href="/apps/main/feedback">Feedback</a></li> <li><a href="//www.google.com">Google</a></li> <li><a href="//www.google.com/intl/en/policies">Privacy & Terms</a></li> </ul> </div> <div class="mdl-mini-footer__right-section custom-right-footer"> <div class="sc-locales"> <label> <span>Change language:</span> <select onchange="javascript:switch_language(this);" id="localeselector"> <option value="id" > Bahasa Indonesia </option> <option value="da" > Dansk </option> <option value="de" > Deutsch </option> <option value="en" selected="selected" > English </option> <option value="es" > Español (España) </option> <option value="fil" > Filipino </option> <option value="fr" > Français (France) </option> <option value="it" > Italiano </option> <option value="hu" > Magyar </option> <option value="nl" > Nederlands </option> <option value="no" > Norsk </option> <option value="pl" > Polski </option> <option value="pt-BR" > Português (Brasil) </option> <option value="pt-PT" > Português (Portugal) </option> <option value="fi" > Suomi </option> <option value="sv" > Svenska </option> <option value="vi" > Tiếng Việt </option> <option value="tr" > Türkçe </option> <option value="cs" > Čeština </option> <option value="ru" > Русский </option> <option value="uk" > Українська </option> <option value="hi" > हिन्दी </option> <option value="th" > ภาษาไทย </option> <option value="zh-CN" > 中文 (简体) </option> <option value="zh-TW" > 中文 (繁體) </option> <option value="ja" > 日本語 </option> <option value="ko" > 한국어 </option> </select> </label> </div> </div> </footer> </main> </div> </body> </html>