Uncurl is a library that allows you to convert curl requests into python code that uses Requests. Since the Chrome network inspector has a nifty "Copy as cURL", this tool is useful for recreating browser requests in python.
When you don't pass any arguments to uncurl, it will use whatever is in your clipboard as the curl command.
$ uncurl "curl 'https://pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: max-age=0' -H 'Cookie: foo=bar;' -H 'Connection: keep-alive' --compressed"
requests.get("https://pypi.python.org/pypi/uncurl", headers={
"Accept-Encoding": "gzip,deflate,sdch",
"Accept-Language": "en-US,en;q=0.8",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"Cache-Control": "max-age=0",
"Connection": "keep-alive",
}, cookies={
"foo": "bar",
})The underlying API:
importuncurlprint(uncurl.parse("curl 'https://pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch'"))prints the string
'requests.get("https://pypi.python.org/pypi/uncurl", headers={ "Accept-Encoding": "gzip,deflate,sdch",})'You can also retrieve the components as python objects:
>>>importuncurl>>>context=uncurl.parse_context("curl 'https://pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch'")
>>>context.urlhttps://pypi.python.org/pypi/uncurl>>>context.headersOrderedDict([('Accept-Encoding', 'gzip,deflate,sdch')])On Mac OS, you can also pipe input to uncurl:
pbpaste | uncurl$ pip install uncurl