想继续提问 How to get pip to work behind a proxy server
我有Windows Server和Python 3.5(64)。
在密码中,我的用户包括#。
我尝试使用一些解决方法:
"C:\Program Files\Python35\scripts\pip.exe" install --proxy http://proxy_user:pwd#123@proxy.su:1111 TwitterApi "C:\Program Files\Python35\scripts\pip.exe" install --proxy "http://proxy_user:pwd#123"@proxy.su:1111 TwitterApi "C:\Program Files\Python35\scripts\pip.exe" install --proxy http://"proxy_user:pwd#123"@proxy.su:1111 TwitterApi "C:\Program Files\Python35\scripts\pip.exe" install --proxy http://proxy_user:"pwd#123"@proxy.su:1111 TwitterApi
但是得到错误
File "c:\program files\python35\lib\site-packages\pip\_vendor\requests\package s\urllib3\util\url.py", line 189, in parse_url raise LocationParseError(url) pip._vendor.requests.packages.urllib3.exceptions.LocationParseError: Failed to p arse: proxy_user:pwd
在这种情况下如何转义字符#?
答案 0 :(得分:4)
快速退出:以编码形式输入,即# -> %23
OR
pip处理此问题的更好方法可能是添加
--proxy-auth
采取的标志:和编码 用户在将其添加到代理URL之前。
问题 - 这是不允许的:
严格地说,字面#字符在。中无效 根据RFC 3986,URI的userinfo部分应该是 百分比编码。然而,许多工具并不奇怪 处理这个问题:显然没有任何实际的歧义 字符。但请注意,如果中有@符号 密码你肯定要对它进行urlencode:因此,它是 这是一个很好的习惯,可以在密码输入之前对其进行urlencode 进入URI。
对提交的问题的回复parse_url fails when given credentials in the URL with '/', '#', or '?':
权限组件前面有双斜杠("
//
")并且是 由下一个斜杠("/
"),问号("?")或数字终止 签名("#
")字符,或URI的末尾。换句话说, 当前的行为在期待权威时是正确的 在前一个之后找到的第一个/
(或?或#
)终止//
。我是否同情那些尝试使用pip代理URI的人? 绝对。我认为一起攻击违反RFC的东西 有可能在以后发生令人讨厌的惊喜。
答案 1 :(得分:0)
else examples
$user = str_replace('@', '%40', $user); $pass = str_replace('%', '%25', $pass); // don't down! (%) $pass = str_replace('#', '%23', $pass); $pass = str_replace('@', '%40', $pass); $pass = str_replace(':', '%3a', $pass); $pass = str_replace(';', '%3b', $pass); $pass = str_replace('?', '%3f', $pass); $pass = str_replace('$', '%24', $pass); $pass = str_replace('!', '%21', $pass); $pass = str_replace('/', '%2f', $pass); $pass = str_replace('\'', '%27', $pass); $pass = str_replace('"', '%22', $pass);