pythonのseleniumモジュールを利用して、GoogleChrome上のWebサイトへ自動ログインするプログラミングをしていきます。
proxy対応無し版、proxy対応有り版の両方を記載していきます。
このプログラムで出来る事
手動で行っているGoogleChromeの展開、及び、ユーザーID・パスワードの入力をせずにwordpressの管理者画面にログインすることが出来る様になります。
自動化するログイン画面のURLやユーザーID、パスワードの入力フィールドに加え、ログインボタンの情報なども外部ファイルにて修正が出来る様にしている為、任意のWebサイトへのログインにも対応可能です。
また、会社などの組織内のネットワークからのアクセスの様に、プロキシサーバーを介してWebサイトにアクセスするような場合にも対応します。
pythonのソースコード
proxy対応無し版、proxy対応有り版それぞれで記載します。
proxy対応無し版
作成したソースコードは以下です。
(ソースコード内に、コメントを記載したため、解説は割愛します。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# coding:utf-8 import time, os, configparser #selenium from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.select import Select from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.alert import Alert from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException # 環境設定ファイル config = configparser.ConfigParser() config.read(os.path.dirname(os.path.abspath(__file__)) + '//' + 'setting.ini', encoding='utf-8') # setting.iniファイルの要素を取得 userId = config['LOGIN_INFO']['userid'] password = config['LOGIN_INFO']['password'] url = config['HOMEPAGE_INFO']['url'] useridfld = config['HOMEPAGE_INFO']['useridfld'] passwordfld = config['HOMEPAGE_INFO']['passwordfld'] loginbtn = config['HOMEPAGE_INFO']['loginbtn'] # Seleniumをあらゆる環境で起動させるChromeオプション options = Options() options.add_argument('--disable-gpu'); options.add_argument('--disable-extensions'); # サーバー情報 options.add_argument('--proxy-server="direct://"'); options.add_argument('--proxy-bypass-list=*'); options.add_argument('--start-maximized'); # options.add_argument('--headless'); # ※ヘッドレスモードを使用する場合、コメントアウトを外す DRIVER_PATH = os.path.dirname(os.path.abspath(__file__)) + '//' + 'chromedriver.exe' try: # ブラウザの起動 driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options) # Webページにアクセスする driver.get(url) # 要素を指定する driUserId = driver.find_element_by_css_selector(useridfld) driPassword = driver.find_element_by_css_selector(passwordfld) # テキストを入力する driUserId.send_keys(userId) driPassword.send_keys(password) # ログインボタン押下 # 要素をクリックする element = driver.find_element_by_css_selector(loginbtn) element.click() finally: time.sleep(3) # quitすると、WEB画面も落ちてしまう。 #driver.quit() |
外部ファイルであるsetting.iniの内容は以下です。
{ログインID}、{パスワード}、{あなたのサイトドメイン}を自身で管理しているwordpressの情報に差し替えて利用します。
1 2 3 4 5 6 7 8 9 10 11 |
# wordpressのログイン情報 [LOGIN_INFO] userid = {ログインID} password = {パスワード} [HOMEPAGE_INFO] url = https://{あなたのサイトドメイン}/wp-admin useridfld = #user_login passwordfld = #user_pass loginbtn = #wp-submit |
proxy対応有り版
ソースコードは以下です。
proxy対応無し版との違いは29~35行目の部分のみです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# coding:utf-8 import time, os, configparser #selenium from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.support.select import Select from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.alert import Alert from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException # 環境設定ファイル config = configparser.ConfigParser() config.read(os.path.dirname(os.path.abspath(__file__)) + '//' + 'setting.ini', encoding='utf-8') # setting.iniファイルの要素を取得 userId = config['LOGIN_INFO']['userid'] password = config['LOGIN_INFO']['password'] url = config['HOMEPAGE_INFO']['url'] useridfld = config['HOMEPAGE_INFO']['useridfld'] passwordfld = config['HOMEPAGE_INFO']['passwordfld'] loginbtn = config['HOMEPAGE_INFO']['loginbtn'] # Seleniumをあらゆる環境で起動させるChromeオプション options = Options() options.add_argument('--disable-gpu'); options.add_argument('--disable-extensions'); # プロキシサーバー情報 proxy = config['PROXY_INFO']['proxy'] proxy_userid = config['PROXY_INFO']['proxy_userid'] proxy_password = config['PROXY_INFO']['proxy_password'] proxy_auth = proxy_userid + ':' + proxy_password options.add_argument('--proxy-server=http://%s' % proxy) options.add_argument('--proxy-auth=%s' % proxy_auth) options.add_argument('--start-maximized'); # options.add_argument('--headless'); # ※ヘッドレスモードを使用する場合、コメントアウトを外す DRIVER_PATH = os.path.dirname(os.path.abspath(__file__)) + '//' + 'chromedriver.exe' try: # ブラウザの起動 driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options) # Webページにアクセスする driver.get(url) # 要素を指定する driUserId = driver.find_element_by_css_selector(useridfld) driPassword = driver.find_element_by_css_selector(passwordfld) # テキストを入力する driUserId.send_keys(userId) driPassword.send_keys(password) # ログインボタン押下 # 要素をクリックする element = driver.find_element_by_css_selector(loginbtn) element.click() finally: time.sleep(3) # quitすると、WEB画面も落ちてしまう。 #driver.quit() |
続いてsetting.iniの内容です。
{ログインID}、{パスワード}、{あなたのサイトドメイン}を自身で管理しているwordpressの情報に、{proxy_server}、{port}、{プロキシサーバーのユーザID}、{同パスワード}を所属している組織のプロキシサーバーの情報に差し替えて利用します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# wordpressのログイン情報 [LOGIN_INFO] userid = {ユーザID} password = {パスワード} [HOMEPAGE_INFO] url = https://{あなたのサイトドメイン}/wp-admin useridfld = #user_login passwordfld = #user_pass loginbtn = #wp-submit [PROXY_INFO] proxy = {proxy_server}:{port} proxy_userid = {プロキシサーバーのユーザID} proxy_password = {同パスワード} |
任意のWebサイトへの対応版
プログラムはproxy対応有り版、無し版共に変わりありません。
setting.iniの次の箇所を差し替えます。
1 2 3 4 5 |
[HOMEPAGE_INFO] url = {任意のサイトのURL} useridfld = {ユーザーIDの入力欄のCSSセレクタ} passwordfld = {パスワードの入力欄のCSSセレクタ} loginbtn = {ログインボタンのCSSセレクタ} |
参考)CSSセレクタの取得方法
以下の手順で取得します。
- Webサイト上の要素にカーソルを合わせ、右クリック→検証
- 表示されたChromeデベロッパーツールでハイライトされている箇所を右クリック
- Copy → Copy selector
参考)setting.iniファイルについて
外部ファイルであるsetting.iniファイルについては、以下の記事を参照してください。

事前準備
モジュールの導入
ソースコードの動作にはpythonのインストールに加え、
seleniumモジュールの導入が必要です。
次のコマンドを実行します。
1 |
pip install selenium |
chromedriverのダウンロード
chromedriver.exeをここから取得し、プログラムファイルと同じフォルダに配置します。
終わりに
今回のプログラムでは対応しませんでしたが、プログラム実行時に展開してしまうコマンドプロンプトを表示しない方法もあるようです。
コメント