組織内でSeleniumを使用する場合Proxy認証が壁となる。調べた結果、Selenium自体の機能により突破することはできないことがわかり、代替案についての数多くのアイデアが紹介されている。各案をトライ&エラーし解決まで非常に時間を要した。
結論として、Selenium-wireがやりたいことに近く最もシンプルだったのでこの方法を採用。気になる点として、webdriverの導入をSelenium-wireから行っており、これが通常のSeleniumと比べ、今後どういう影響があるのか不透明である。
Selenium-wireを使ったProxy認証の突破方法
https://www.youtube.com/watch?v=d8voxp-4Uf8
※Selenium wireをcondaでインストールできず、仕方なくPIPでインストール。混ぜるな危険と聞いており恐る恐る。仮想環境でやってるから大丈夫か?以下URLでCondaでのinstallを記載しているが、できなかった。https://anaconda.org/ralexx/selenium-wire
他の案としては(1)Pyautoguiの使用、(2)Chrome の拡張機能でProxy情報を入れる方法、がある。前者は表示されたプロキシ認証ポップアップに対して、pyautoguiで入力する強引な方法である。この場合プログラムを立ち上げてプロキシを突破するまでの間はPCを操作することができない。またポップアップを表示させないといけないのでヘッドレスモードも不可。
後者はjsファイルをZIP ファイルに格納しChrome拡張機能で取り入れる方法が各所で紹介されているが、当方の実力不足もあり実装できなかった。
https://stackoverflow.com/questions/55582136/how-to-set-proxy-with-authentication-in-selenium-chromedriver-python
https://www.guru99.com/selenium-proxy-authentication.html
他にProxy helperという拡張機能を導入し、Webdriverの立ち上げOptionとしてとりこんでみたが、動作が安定しなかった。中途半端にうまくできたため、この方向にこだわってしまい時間を消費する結果となった。導入に際して拡張機能のPackage化が必要だったりと、調べることが多かった。