<p>错误(<code>'URL has an invalid label.'</code>)可能是<code>requests</code>库中的一个错误:它对附加了userinfo的主机名应用<code>idna</code>编码,<a href="https://github.com/kennethreitz/requests/blob/e7786ec14fdf20e8c373eddc9ac0f67d211cb1b9/requests/models.py#L295" rel="nofollow">source</a>:</p>
<pre><code>netloc = netloc.encode('idna').decode('utf-8')
</code></pre>
<p>这可能会导致长时间的“标签为空或太长”错误用户名:密码。你可以试试<a href="https://github.com/kennethreitz/requests/issues/new" rel="nofollow">report it on the requests' issue tracker</a>。在</p>
<p><a href="http://tools.ietf.org/html/rfc3986#section-3.2.1" rel="nofollow">^{<cd4>} form is deprecated</a>否则
^如果所有字符用户名:密码是来自<code>[-A-Za-z0-9._~!$&'()*+,;=]</code>集。在</p>
<p><code>curl</code>和<code>requests</code>也不同,因此用户信息中存在百分比编码字符,例如,<code>https://a:%C3%80@example.com</code>导致{<cd8>}生成以下http报头:</p>
^{pr2}$
<p>但是<code>requests</code>产生:</p>
<pre><code>Authorization: Basic YTolQzMlODA=
</code></pre>
<p>即:</p>
<pre><code>>>> import base64
>>> base64.b64decode('YTrDgA==')
'a:\xc3\x80'
>>> print _
a:À
>>> base64.b64decode('YTolQzMlODA=')
'a:%C3%80'
</code></pre>