Skip to content

Instantly share code, notes, and snippets.

@cvan
Last active April 15, 2024 04:01
Show Gist options
  • Save cvan/03ffa0c71317cb6b0b95a41ab189b097 to your computer and use it in GitHub Desktop.
Save cvan/03ffa0c71317cb6b0b95a41ab189b097 to your computer and use it in GitHub Desktop.
get all URLs of all network requests made on a web page from the Chrome Dev Tools (from an exported HAR)

Setup

Using Homebrew on Mac OS X:

brew install jq

Add these aliases to your profile (e.g., ~/.zshrc, ~/.bashrc, ~/.profile, etc.):

alias hurlp='pbpaste | jq ".log.entries" | tee >(jq --raw-output "[.[] | .request.url] | sort | unique | .[]")'
alias hurld='pbpaste | jq ".log.entries" | jq --raw-output "[.[] | .request.url] | sort | unique | .[]" | harurls | tee >(xargs -n 1 curl -O $1)'

Usage

  1. Open the Chrome Developer Tools (Command+Option+i)
  2. Click the Network tab
  3. Reload the page (Command+r)
  4. In the Network tab, hover over any area in the table that is not a link (e.g., the Status column)
  5. Right click (Control+click) to open the context menu and click Copy All as HAR
  6. Open your favourite command-line interface (e.g., Terminal)
  7. Enter hurlp to print the URLs or hurld to download the files
@jgrisham
Copy link

jgrisham commented Mar 7, 2024

@Sifasol - you probably need to append something like | pbcopy to the end of hurlp to place the results back on the clipboard; the commands above just display the results (for hurlp) or download their contents as individual files (for hurld).

For a more universal solution (that works on Linux, et. al.), try:

  1. Use the Network tab of Chrome/Edge/etc. Developer Tools as described above, except use the 'Save all as HAR with content' option to save it as a .har file.

  2. Run one of the following from the directory where you saved that file, replacing requests.json with the filename you used when saving that .har file (note: these were tested in the bash shell):
    a. View the results (same results as 'hurlp' above):

    • cat requests.json | jq ".log.entries" | jq --raw-output "[.[] | .request.url] | sort | unique | .[]" | less

    b. Save the results to a text file:

    • cat requests.json | jq ".log.entries" | jq --raw-output "[.[] | .request.url] | sort | unique | .[]" >> sorted-urls-from-requests_$(date +%Y-%m-%d_%H:%M).txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment