"Copy to cURL" in Chrome to Apache Bench command
#!/usr/bin/env python3 | |
import sys | |
import os | |
def curl_to_ab(curl_cmd: list, num: int=200, cur: int=4) -> str: | |
""" | |
Translate a cURL command created by Chrome's developer tools into a | |
command for ``ab``, the ApacheBench HTTP benchmarking tool. | |
Parameters | |
---------- | |
curl_cmd | |
The string given to you by the "Copy to cURL" context action in | |
Chrome's developer tools. | |
num : int | |
The number of requests ApacheBench should make in total | |
cur : int | |
The number of concurrent requests ApacheBench should make | |
Note | |
---- | |
Not all headers play nice with ApacheBench, so ``headers_to_copy`` has | |
been set to a reasonable default. Tweak this if you need something | |
else in there. | |
""" | |
url = curl_cmd[1] | |
headers_to_copy = [ | |
'Origin', | |
'Authorization', | |
'Accept' | |
] | |
headers = [] | |
for i, part in enumerate(curl_cmd): | |
if part == '-H': | |
header = curl_cmd[i+1] | |
if any([h in header for h in headers_to_copy]): | |
headers.append("'{}'".format(header)) | |
cmd = ['ab -n {} -c {}'.format(num, cur)] | |
cmd += ['-H {}'.format(part) for part in headers] | |
cmd.append("'{}'".format(url)) | |
return ' '.join(cmd) | |
if __name__ == '__main__': | |
"""Usage: python curl_to_ab.py <cURL command from Chrome> | |
""" | |
os.system(curl_to_ab(sys.argv[1:])) |
This comment has been minimized.
This comment has been minimized.
I wasn't expecting google to find something this perfect |
This comment has been minimized.
This comment has been minimized.
@ctolsen Thanks for sharing! I had to slightly tweak it so that it used my current session (I was testing an authenticated URL) https://gist.github.com/etagwerker/eeb54fa1fdcd8ea6d5b9b168fdfa9952 |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Helped me a lot so I published it online to be more easy to use. |
This comment has been minimized.
This comment has been minimized.
@ahivert, that is awesome, but please update the output command to take the URL in quotes. Otherwise it blows up in the command line, especially for URLs with parameters like http://foo.bar/path?param1=value2¶m2=value2 |
This comment has been minimized.
This comment has been minimized.
Thanks @pokrovskyy I fixed it |
This comment has been minimized.
This comment has been minimized.
@ctolsen Thanks for sharing! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
not all heros wear capes!