質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1133閲覧

Pythonのseleniumを使用したchrome起動時に一部の拡張機能が削除される

wak

総合スコア2

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/12/17 15:44

前提

Pythonのseleniumを使用して、chrome操作を行う処理を作成しています。
既存のプロフィールを読み込んで、chromeを起動していますが起動したchromeで
一部のchrome拡張機能が削除されています。

実現したいこと

  • Pythonのseleniumを使用し、全てのchrome拡張機能を保持したままchromeを起動/操作したい

該当のソースコード

from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service chrome_options = Options() chrome_options.add_experimental_option("detach", True) chrome_options.add_argument('--start-maximized') chrome_options.add_argument(r'--user-data-dir=C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data') # 「bluetooth_adapter_winrt.cc:1074 Getting Default Adapter failed.」のメッセージ抑止 chrome_options.add_experimental_option('excludeSwitches', ['enable-logging']) service = Service(executable_path='D:\7.Python\5.driver\chromedriver.exe') driver = webdriver.Chrome(service=service,options=chrome_options)

試したこと

chrome拡張機能が保存されている下記フォルダを確認しながら、該当のソースコードを実行すると
chromeが起動するタイミングで該当のchrome拡張機能のフォルダが削除されました。

C:\Users<ユーザ名>\AppData\Local\Google\Chrome\User Data\Default\Extensions

なお、Pythonから起動したchromeを閉じた後、再度手動で開きなおしたら削除されていたchrome拡張機能が
無効化状態で復活します。

※何度やっても同じ動作になります。

補足情報

削除されているchrome拡張機能

  • Adobe Acrobat
  • Trend ツールバー
  • UiPath Web Automation

※上記3つの共通点といえば、他の拡張機能に比べて導入時期が早かったことくらいです。
※他のchrome拡張機能は削除されていません。(15個程度)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Chrome のバージョンいくつですか?相当古いバージョン使ってませんか?

提示されている拡張機能を Web ストアで検索しても見当たりません。Adobe だけ出てきますが、同一のものでしょうか?

現在の Chrome は危険な拡張機能を自動で無効化するようになっています。

https://support.google.com/chrome_webstore/answer/2811969?hl=ja

投稿2022/12/20 15:09

Demerara

総合スコア392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wak

2022/12/21 14:31

ご確認ありがとうございます。 Chromeは最新の状態になっています。 ※バージョン: 108.0.5359.125 拡張機能は以下の2つはchromeウェブストアから導入しました。  ▼Adobe Acrobat  https://chrome.google.com/webstore/detail/adobe-acrobat-pdf-edit-co/efaidnbmnnnibpcajpcglclefindmkaj?hl=ja  ▼Trend ツールバー  https://chrome.google.com/webstore/detail/trend-micro-toolbar/ohhcpmplhhiiaoiddkfboafbhiknefdf UiPathは以下の手順を参考にし、UiPath Studio からインストールしています。  ▼UiPath Web Automation  https://docs.uipath.com/studio/lang-ja/docs/extension-for-chrome なお、「拡張機能が無効にされました」というメッセージは表示されず、拡張機能の管理画面から削除されます。
Demerara

2022/12/22 11:48

詳細ありがとうございます。 確認してみましたが、どちらの拡張機能も問題なさそうですね。 chrome の不具合報告版を覗いてもそのような不具合は見当たりませんでした。 一つ気になるのですが、 > なお、Pythonから起動したchromeを閉じた後、再度手動で開きなおしたら削除されていたchrome拡張機能が 無効化状態で復活します。 と、あるのですが、削除されたはずの拡張機能が復活するということは実際には削除されているわけではなく、存在しているが読み込まれていないということですか? なにしろもう少し詳細な情報が欲しいところです。`webdriver.Chrome` の引数に次の引数を追加してもう一度走らせてみてください。そして出力されたログを確認しましょう。 ```python service_args=["--verbose", "--log-path=D:\\chrome.log"] ``` ログの出力パスは任意の場所にしてください。
wak

2022/12/22 14:35

自分で確認した範囲では、実際に拡張機能が削除されているかと思います。 理由は以下の通りです。 1.Chromeの拡張機能の管理画面を見ると、項目自体が存在しない 2.以下フォルダがChrome拡張機能の保存フォルダのようですが、該当の拡張機能のフォルダが存在しない   C:\Users<ユーザ名>\AppData\Local\Google\Chrome\User Data\Default\Extensions 手動で開きなおしたら削除されていたchrome拡張機能が無効化状態で復活しますが、それに併せて上記フォルダ配下に、 削除されていた拡張機能のフォルダが復活(生成)されます。 ※フォルダ名は、拡張機能の管理画面でデベロッパーモードにして確認したそれぞれの拡張機能のIDと同一 >なにしろもう少し詳細な情報が欲しいところです。`webdriver.Chrome` の引数に次の引数を追加してもう一度走らせてみてください。そして出力されたログを確認しましょう。 >service_args=["--verbose", "--log-path=D:\\chrome.log"] 以下の通り修正して実行したのですが、ログが出力されませんでした。 ※ファイル「chrome.log」自体作成されない driver = webdriver.Chrome(service=service,options=chrome_options, service_args=["--verbose", "--log-path=D:\\chrome.log"]) ログの出力パスを変更したりしましたがログが出力されず、調べてもわからなかったため、記述方法についてご教授願います。
Demerara

2022/12/22 14:44

一つ上の、service = Service() を消して、以下のように指定してみてください。 driver = webdriver.Chrome(executable_path='D:\7.Python\5.driver\chromedriver.exe',options=chrome_options, service_args=["--verbose", "--log-path=D:\\chrome.log"])
Demerara

2022/12/22 15:22 編集

すみません、上記の記述は Deprecated でした。 ```python service = Service( executable_path="D:\\7.Python\\5.driver\\chromedriver.exe", service_args=["--verbose"], log_path="D:\\chrome.log", ) driver = webdriver.Chrome(service=service, options=chrome_options) ``` のように指定してみてください。 というか、ログが出力されないのって、もしかして、`chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])` のせいだったりしません?
wak

2022/12/24 13:13

遅くなりましたが、ログの出力ができました。 ありがとうございます。 ログを確認してみましたが、出力量が多く問題点が見つけられませんでした。 無茶かもしれませんが、確認するべきポイントがありましたらご教授いただきたいです。
Demerara

2022/12/25 02:40 編集

まずは、検索して拡張機能名がヒットするかですね。ログをエディターで開いて、該当する拡張機能名で検索してみてください。ログの後半に拡張機能の詳細がオブジェクト形式になって並んでいるはずです。上下に並んでる正常に読み込まれた拡張機能のデータと比較して何か違いがないか確認してみてください。 --verbose を指定せずに、一度ログを出してみるのも手です。 ちなみに、こちらで全く同じ状況を再現して試してみましたが、何度やっても拡張機能は一つも削除されませんでした。もしかすると、アンチウィルスソフトとか他の拡張機能などの外的要因といった可能性もありそうです。 追記: 手元の環境で出力されたログでは、1113行目で Chrome が起動してます。 > [1671733029.722][INFO]: Launching chrome: その下に、拡張機能が並んでますね。 次に、1744 行目でサイトへのリクエスト内容が確認できます。 > [1671733031.555][DEBUG]: DevTools WebSocket Event: Page.frameNavigated その次から起動に成功した拡張機能が並んでます。 [1671733031.567][DEBUG]: DevTools WebSocket Event: Runtime.executionContextCreated (session_id=38469BB32CDEAE │ B016611A0610F1D7AA) 03E0693905B3EA52085D4C020C1D4E7D { 1790 │ "context": { 1791 │ "auxData": { 1792 │ "frameId": "03E0693905B3EA52085D4C020C1D4E7D", 1793 │ "isDefault": false, 1794 │ "type": "isolated" 1795 │ }, 1796 │ "id": 3, 1797 │ "name": "Adobe Acrobat: PDF edit, convert, sign tools", 1798 │ "origin": "chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj", 1799 │ "uniqueId": "-7141368244156203326.-5831992409724104580" 1800 │ } 1801 │ } どのタイミングで、拡張機能が削除されているかわかりませんが、恐らく Chrome の起動直後と思われるので、1113 行目以降のログに、"remove", "delete", "ignore" みたいな単語が並んでないか探してみてください。 [DEBUG] と [INFO] 以外の、たとえば [WARNING] や [ERROR] といったログもないか探してみてください。
wak

2022/12/29 07:18

遅くなりましたが、確認点についてご教授ありがとうございます。 ポイントを参考に、以下について確認いたしました。 お手数ですが、ご確認いただけますと幸いです。 ■1. [WARNING]: This version of ChromeDriver has not been tested with Chrome version 108. 上記メッセージが出力されていたので、新しいchromedriverをダウンロードして使用したところ、 上記メッセージは出力されなくなりましたが、事象は改善されませんでした。 ■2. [WARNING]: Chrome quit unexpectedly, leaving behind temporary directoriesfor debugging: 上記メッセージが毎回、ログの最下行に出力されます。 ※その他の[WARNING]のメッセージは無し エラーメッセージで検索すると、下記ページがありました。 https://stackoverflow.com/questions/50081093/selenium-chrome-driver-exception-when-trying-headless-option 「広告ブロッカー拡張機能をロードしていることが関係している~~」と記載があり、自環境でAdblockを入れているので、 削除後、Pythonを実行したが、再度同じメッセージが出力され、事象も改善されず。 ※そもそも、本事象に関係しているかは不明 ■3. [ERROR]のメッセージは無し ■4. 事象発生時に、以下フォルダから他の拡張機能と一緒にフォルダ「nmmhkkegccagdldgiimedpiccmgmieda」も削除される。  C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data\Default\Extensions 調べると、最初から入っているGoogle ウォレット?らしいですが、詳細は不明です。 ■5. 該当の3つの拡張機能を削除後、再度adobeとTrendツールバーの拡張機能を追加して、Pythonでブラウザを開いたところ 拡張機能は削除されませんでした。 その後、手動でブラウザを閉じる ⇒ Pythonでブラウザを開く ⇒手動でブラウザを閉じる を何度繰り返しても、 該当の拡張機能は削除されませんでした。 ですが、上記の繰り返し作業の途中で、 手動でブラウザを閉じる ⇒ 手動でタスクバーからchromeを起動 ⇒ 手動でブラウザを閉じる ⇒ Pythonでブラウザを開く のように、手動でchromeを起動する作業をはさむと、次回Pythonでchrome起動した際に、該当の拡張機能が削除されました。 ■6. 「5.」で、拡張機能が削除されない場合と、削除される場合の、それぞれのログを比較しました。 693行目で、Adobeの拡張機能のID「efaidnbmnnnibpcajpcglclefindmkaj」に以下差分がありました。 ※TrendツールバーのID「ohhcpmplhhiiaoiddkfboafbhiknefdf」も同様の差分あり ▼拡張機能が削除されなかった場合のログ "efaidnbmnnnibpcajpcglclefindmkaj": { "active_permissions": { "api": [ "alarms", "contextMenus", "downloads", "downloadsInternal", "nativeMessaging", "storage", "tabs", "webNavigation", "webRequest", "declarativeNetRequest", "scripting" ], "explicit_host": [ "\u003Call_urls>" ], "manifest_permissions": [ ], "scriptable_host": [ "file:///*", "http://*/*", "https://*/*" ] }, "commands": { }, ▼拡張機能が削除された場合のログ "efaidnbmnnnibpcajpcglclefindmkaj": { "active_bit": false, "active_permissions": { "api": [ "alarms", "contextMenus", "downloads", "downloadsInternal", "nativeMessaging", "storage", "tabs", "webNavigation", "webRequest", "declarativeNetRequest", "scripting" ], "explicit_host": [ "\u003Call_urls>" ], "manifest_permissions": [ ], "scriptable_host": [ "file:///*", "http://*/*", "https://*/*" ] }, "allowlist": 1, "commands": { }, 拡張機能が削除された場合のログに、「"active_bit": false,」と「"allowlist": 1,」が出力されています。 ただし、該当の拡張機能以外の、削除されない拡張機能のログにも同様のログが出力されているので、 問題ないようにも思えます。 ▼「拡張機能が削除された場合のログ」に出力されている、別の拡張機能のログ "igiofjhpmpihnifddepnpngfjhkfenbp": { "active_bit": false, "active_permissions": { "api": [ "tabs" ], "explicit_host": [ "http://wedata.net/*" ], "manifest_permissions": [ ], "scriptable_host": [ "http://*/*", "https://*/*" ] }, "allowlist": 1, "commands": { }, ■7. これは懸念点ですが、今回の事象が発生する前、既存のChrome設定を読み込んでテストしている際に、 一部誤って記述していました。  ▼正  chrome_options.add_argument(r'--user-data-dir=C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data')  ▼誤  chrome_options.add_argument(r'--user-data-dir=C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data\Default') 現在は修正済みですが、誤っている状態で何度か実行していたので、「Default」フォルダの中に、更に「Default」フォルダが 出来上がった状態になっていました。 ※誤っている状態で実行していた際は、もちろん導入済みの拡張機能等は読み込まれていませんでした。 「User Data\Default」フォルダ内にも不要なファイルやフォルダが作成されてしまったため、ファイルやフォルダの作成日などを 確認しながら、不要なものを削除しました。 これが、本事象の原因になりうることはあるでしょうか。 なお、今回初めてchromeの設定を読み込む処理を作成したため、以前まで拡張機能は削除されなかった等はわかりかねます。
Demerara

2022/12/29 12:02

2 について: Chrome ドライバーは、プロセスを作成する際に既存の Default フォルダーの内容を反映させた一時フォルダを作成し、そこからプロファイルを読み込みます。このエラーは、Chrome が予期せず終了(クラッシュ)したのでデバッグ用に一時フォルダを削除せずに残しておきますという内容です。次回起動時にはこの Default フォルダーを参照してしまう可能性があるため、次回の起動時前にChrome のキャッシュやクッキーを削除しておく必要がありそうです。デフォルトのプロファイルに影響が及んでしまわないように、別途プロファイルを作成し、そちらのプロファイルを `options.add_argument(r"--profile-directory='Profile 1'")` のように指定します。新しいプロファイルで Chrome を開き、クッキーとキャッシュの削除に加え設定内容のリセットを行います。このプロファイルを利用することで、普段使いの Chrome への影響を回避します。 7について: 上記で説明した通りデフォルトのプロファイルに影響を及ぼしている可能性があります。環境が散らかっているので本来なら一度 Chrome をアンインストールして古いフォルダーを削除し、再インストールすべきですが、その前にプロファイルの作成でうまくいくか試したほうがいいでしょう。 5について: Python で起動した際に正常に Chrome を終了することができず、バックグラウンドでクラッシュハンドラーが動いたままの状態で Chrome を起動している可能性があります。以前のセッションを復元しようとするも上記で説明した通り一時的に作成されたプロファイルを参照するため、本来のプロファイルとは違うことで起動時に問題が発生しているのかもしれません。タスクマネージャー等で、毎回余計なプロセスが動いていないか確認し、動いていれば停止しておく必要があります。これは Chrome の設定画面で「システム」>「バックグラウンドでの動作を許可する」のチェックを外しておけば裏で動くプロセスを減らすことができます。(それ以外にもシステムサービスとして動くプロセスも存在するため全ては止められません) 1, 3, 4, 6 について: 1 は非常に重要ですが、それ以外についてはあまり気にする必要はなさそうです。 ここまでの調査内容を見るに、python や selenium 及び提示されているコードには問題はなさそうです。 問題がありそうなのは Chrome 、拡張機能、Windows、アンチウィルスソフト、あたりでしょうか。拡張機能は1つずつ読み込んで問題が発生しないか確認する作業も必要かもしれません。アンチウィルスソフトの常駐を一時的に停止した場合に挙動に変化があるかも試すべきでしょう。Windows 10 では、ブラウザのサンドボックス機能で問題が起きる事象が過去に複数確認されています。その場合は、`--no-sandbox` オプションが有効ですが、セキュリティリスクが高まるためおすすめはしません。Windows 11 へアップグレードする方をおすすめします。 いずれにしろまずはプロファイルの作成と指定を試してみてください。
wak

2022/12/29 18:18 編集

プロファイルの作成と指定をやってみましたが、指定したプロファイルで手動でChromeを開くやり方がわからず 再現できませんでした。 なので、Chromeをアンインストールする方法を試しました。 Chromeをアンインストール ⇒ 「C:\Users\<ユーザ名>\AppData\Local\Google」フォルダを削除 ⇒ ゴミ箱からも削除 上記の手順で、Chromeアンインストール後、再度インストールしたところ、なぜか「Extensions」フォルダ配下に拡張機能のフォルダが4つ作成されており、その内二つは本事象に該当する拡張機能のものでした。 ※ログインやGoogleの同期を行う前に、既に作成されていました。  ▼「\Chrome\User Data\Default\Extensions」配下  efaidnbmnnnibpcajpcglclefindmkaj ←Adobe Acrobat  ghbmnnjooekpmoecnnnilnnbdlolhkhi ←Google オフライン ドキュメント  nmmhkkegccagdldgiimedpiccmgmieda  ohhcpmplhhiiaoiddkfboafbhiknefdf ←Trendツールバー 気になるのが、上記4つのフォルダは元々Chromeをアンインストールする前に以下「PbProfile\~~」フォルダに 存在していた4つのフォルダと一致しています。  C:\Users\<ユーザ名>\AppData\Local\Google\Chrome\User Data\PbProfile\Default\Extensions また、ghbmnnjooekpmoecnnnilnnbdlolhkhi(Google オフライン ドキュメント)は、Chromeアンインストール前は拡張機能の管理画面に存在していませんでしたが、再インストール後は拡張機能の管理画面に存在しています。 なお、Googleの同期を行い、ブックマークや拡張機能を同期して元通りにした後、PythonでChromeを起動すると 同様の事象が発生いたします。 以上の通りですが、本事象に関係している可能性はあるでしょうか。
Demerara

2022/12/30 09:29

アンインストールした際に、"~\AppData\Roaming\Google\Chrome" のフォルダを消し忘れてませんか?ここに全ての設定が保存されています。再インストール時に、こちらのフォルダを参照して以前の設定を読み込んでしまいます。加えて、本体が保存されている "C:\Program Files\Google\Chrome" 内にもキャッシュが残っていたりします。Windows 自体のシステムキャッシュの削除も忘れずに。temp と %temp% ですね。 また、古くから Chrome を利用している場合は、レジストリにデータが残っている可能性もあります。ただ、こちらを削除するのは少々危険なので、もし実行するのであれば Windows のレジストリについてよく理解してから試してください。 検索ワード: 「Windows キャッシュ 削除」 「Windows レジストリ Chrome 削除」 「Chrome プロファイル 使い方」 よくわからないのであればこの辺を調べてください
wak

2023/01/07 04:21

遅くなりました。 色々と試行錯誤しましたが、解決には至りませんでした。 なお、Chrome導入後に「Adobe Acrobat」や「Trendツールバー」の拡張機能が勝手にインストールされるのは 自分の環境だけではなく、他の方の環境でもあるようです。(そのような記事を確認しました。) ですので、ご教授いただいたのに申し訳ございませんが、最終的には該当のChrome拡張機能を 削除する(使用しない)ことで対応することにしました。 長い間お付き合いいただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問