[python]プロキシ設定 – proxy setting –

パスワードに特殊文字が入っていたためハマったのでメモしておきます。
環境はWindows10のpython3.7.3です。
ネット見ている感じ、LinuxやMacなど環境によって微妙に異なる箇所がある可能性があります。

設定方法

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