decoding utf-8 from response content breaks on binary files
You added .decode('utf-8') to the content property method in 998e21b94bd2c3f80c4926d4df8f385d42310848 -- unfortunately, this breaks when the response body is binary data. I think I have a solution; I'll send a pull request if/when I do.

diff --git a/authomatic/core.py b/authomatic/core.py
index 0b9e1b7..cf2b9b9 100644
--- a/authomatic/core.py
+++ b/authomatic/core.py
@@ -1085,6 +1085,15 @@ class Response(ReprMixin):
         return self.httplib_response.getheaders()
 
 
+    def is_binary_string(self, content):
+        """
+        Return true if string is binary data
+        """
+
+        textchars = bytearray([7,8,9,10,12,13,27]) + bytearray(range(0x20, 0x100))
+        return bool(content.translate(None, textchars))
+
+
     @property
     def content(self):
         """
@@ -1092,7 +1101,11 @@ class Response(ReprMixin):
         """
 
         if not self._content:
-            self._content = self.httplib_response.read().decode('utf-8')
+            content = self.httplib_response.read()
+            if self.is_binary_string(content):
+                self._content = content
+            else:
+                self._content = content.decode('utf-8')
         return self._content
 
 
diff --git a/authomatic/providers/__init__.py b/authomatic/providers/__init__.py
index 919b64f..e8664a6 100644
--- a/authomatic/providers/__init__.py
+++ b/authomatic/providers/__init__.py
@@ -373,7 +373,6 @@ class BaseProvider(object):
                 body = query
                 query = ''
                 headers.update({'Content-Type': 'application/x-www-form-urlencoded'})
-        print(path, query)
         request_path = parse.urlunsplit(('', '', path or '', query or '', ''))
         
         self._log(logging.DEBUG, ' \\u251C\\u2500 host: {0}'.format(host))
['authomatic/providers/__init__.py', 'authomatic/core.py']