Pythonのプロキシ設定を行った際、パスワードに特殊文字が入っていたためハマったのでメモしておきます。
ネット見ている感じ、LinuxやMacなど環境によって微妙に異なる箇所があるような気がします。
ご注意ください。
環境
- Windows10
- Python3.7.3
設定方法
Pythonのプロキシ設定はコマンドプロンプトで以下のように行います。
set HTTP_PROXY=http://<user>:<password>@<server>:<port>
set HTTPS_PROXY=http://<user>:<password>@<server>:<port>
設定例
- user: test123
- password: 456$abc
- server: foo.sample.com
- port: 8080
set HTTP_PROXY=http://test123:456%24abc@foo.sample.com:8080
set HTTPS_PROXY=http://test123:456%24abc@foo.sample.com:8080
特殊文字である $ は、 %24 に変換(URLエンコード)する必要があります。
ネット上で、 @ も %40 に変える必要があるという情報もありましたが、自分の環境では不要でした。
(userにメールアドレスを利用しているケースなどは、変換する必要があると思います。)
URLエンコードについては、外部サイト(よく使う記号のURLエンコード対応表)を参考にさせていただきました。
ありがとうございます。
実行時にオプションとして設定する方法
そのほか、オプションとして設定する方法もあります。
コマンド例(Seleniumをインストール)
pip install selenium --proxy http://test123:456%24abc@foo.sample.com:8080
プロキシ未設定時のエラー例
最後に、Pythonでのプロキシエラー例です。
(パスワードが違っていたりして、プロキシに正常にアクセスできなかったケース)
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))': /simple/selenuim/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))': /simple/selenuim/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))': /simple/selenuim/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))': /simple/selenuim/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', OSError('Tunnel connection failed: 407 Proxy Authentication Required'))': /simple/selenuim/
Could not find a version that satisfies the requirement selenuim (from versions: )
No matching distribution found for selenuim
コメント