Print headers and POST data from entries in a Charles proxy log in a format suitable for the requests library for python.
deprecate this. har2requests does what I wanted it to do in a much better way.
parse multipart forms into a dict of field:val
add option to filter by site for noisy logs.


browse  log 



You can also use your local clone with git send-email.


#Don't Use This

Unless you only have a bunch of chlsj logs and can't run charles, this is probably the wrong project to use.

This tool does less than half of what the tool I was imagining could do, and was thrown together out of desperation when I needed to automate a task on a broken SaaS product I was stuck with. I did it because I didn't know about .har files. If I had known about those, I would have instantly found https://github.com/louisabraham/har2requests and started with that for my automation instead of hacking this together.

If you have found this page, you almost certainly really want har2requests and should go there instead.

#Original README content

This is a quick-and-dirty commandline gadget that operates in two modes.

#List POST requests in file

parse-charles-log.py log.chlsj

Enumerates the POST requests in the specified Charles JSON file and prints the index and URL for each to standard output.

#Dump POST request details

parse-charles-log.py -d 0 log.chlsj

Dumps the headers and body of the POST request at the specified index to standard output in a format suitable for pasting into a python dict that can be used with the requests module.


This uses a slightly modified version of @richtermb's pycharles library. I haven't thought my changes through carefully enough to contribute them upstream yet, so the source for that library is copied here, used under the MIT license.


All source code in this repository is offered under the MIT license. See LICENSE for details.