LoginSignup
1
3

More than 3 years have passed since last update.

Jupyter上でseleniumもrequestsも同時に認証付きプロキシの設定を変更できるようにしてみた

Last updated at Posted at 2020-06-04

利点

  • OSの環境変数にProxyの設定を行う事で、Selenium,Requestsなど複数のパッケージに対して、個々にProxy設定せずに済むようになります。
  • 下記実装にすることで、環境変数への設定はこのコードを実行しているブックのみで有効になるので、他への影響が少ない
  • ID/パスワードをコードに固定で設定せず毎回入力するため、ソースが漏れてもセキュリティ上の影響が少ない

ソースコード

import os
import getpass


class PROXY:
    # プロキシー一覧
    proxies = {
        "office":{社内で利用するプロキシーサーバーのアドレス:ポート},
        "mobile":{社外で利用するプロキシーサーバーのアドレス:ポート},
    }

    def __init__(self,prxy=None):
        self.conf(prxy=prxy)

    def conf(self,prxy=""):
        if prxy not in [None,"office","mobile"]:
            prxy = input("Proxy(office|mobile|none)")
        if prxy in ["office","mobile"]:
            name = input("ID:")
            password = getpass.getpass("Password")
            self.set_proxy(name,password,prxy=prxy)
        else:
            prxy = None
            self.set_proxy(prxy=prxy)

    #プロキシのID,パスワードと接続元から環境変数にProxyを設定
    def set_proxy(self,uid=None,pwd=None,prxy=None):
        #プロキシを削除
        if prxy == None:
            os.environ.pop('HTTP_PROXY', None)
            os.environ.pop('HTTPS_PROXY', None)
            print("clear Proxy")
        #プロキシを設定
        elif prxy in self.proxies.keys():
            prx = self.proxies[prxy]
            os.environ['HTTP_PROXY']="http://{}:{}@{}".format(uid,pwd,prx)
            os.environ['HTTPS_PROXY']="http://{}:{}@{}".format(uid,pwd,prx)
            print("Set {} as Proxy".format(prx))
        #プロキシを削除
        else:
            os.environ.pop('HTTP_PROXY', None)
            os.environ.pop('HTTPS_PROXY', None)
            print("clear Proxy")

    #プロキシのID,パスワードと接続元から環境変数にProxyを設定
    def check_proxy(self):
        print('HTTP_PROXY:{}'.format(os.environ.get('HTTP_PROXY', None)))
        print('HTTPS_PROXY:{}'.format(os.environ.get('HTTPS_PROXY', None)))

利用方法

下記を記載する事で、prxy=None以外はID,パスワードの入力を求められる。
正しいID,パスワードを入力する事で、当該ブックにのみ有効なプロキシ設定が環境変数に設定される。

#OfficeのProxy利用時
_ = PROXY(prxy="office")

#mobileのProxy利用時
_ = PROXY(prxy="mobile")

#Proxyを使わないとき
_ = PROXY(prxy=None)

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3