Python Seleniumとgeckodriverを使用して接続が拒否されました(OSエラー111)。

Python Seleniumとgeckodriverを使用して接続が拒否されました(OSエラー111)。

私はウェブスクレイピングが初めてです。以下に示すように、Debian BusterとFirefox GeckodriverでPythonを使用してプライベートアプリケーションを構築しています。サーバーはオンラインです。

firefox_binary = FirefoxBinary('/usr/bin/firefox')
opts = FirefoxOptions()
opts.add_argument("--headless")
driver = webdriver.Firefox(options=opts, firefox_binary=firefox_binary)
driver.get(url)

私の目標は、Webページでajax呼び出しを介してこのアプリケーションを起動することです。これはnginxサーバーなので、pyスクリプトはphp execコマンドから呼び出されます。

exec ('/usr/bin/python3 webdriver.py');

rootまたは他のユーザーとしてログインすると、Debianのコマンドラインで正しく機能します。 Webインターフェースを使用してスクリプトを呼び出すと、ユーザーはwww-dataで、次のエラーが発生します。接続が拒否されました(OSエラー111)。

3日間、すべてのインターネットリソースを検索し、可能なすべてを試しましたが、まだ解決策はありません。

この問題の解決策を知っていますか?

編集する:

  • セレンバージョン3.141.0

  • Mozilla Firefox 78.8.0esr

  • ゲッコドライバー0.29

  • www-dataユーザーのgeckodriver.log(エラーを含む):

    • 1614703595351 geckodriverについて127.0.0.1:53899で聞く
    • 1614703595556 mozrunner::runner INFO コマンドの実行: "/usr/bin/firefox" "--marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile22XajP"
    • ***ヘッドレスモードで動作しています。
  • 管理者のgeckodriver.log(エラーなし):

    • 1614702846828 geckodriverについて 127.0.0.1:46897で聞く
    • 1614702847019 mozrunner::runner INFO コマンドの実行: "/usr/bin/firefox" "--marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile7jTA4y"
    • ***ヘッドレスモードで動作しています。
    • 1614702859057マリオネットINFOリスニングポート45145
    • 1614702859109 Marionette WARN TLS証明書エラーは、このセッションでは無視されます。
    • JavaScript警告:https://.............js?v=1.2.7199.0、行119:returnステートメント以降のコードにアクセスできません。
    • JavaScript警告:https://.............js?v=1.2.7199.0、行119:returnステートメント以降のコードにアクセスできません。
    • 1614702872140マリオネット警告TimedPromiseが500ミリ秒後にタイムアウトしました:スタックトレース:
    • TimedPromise/<@chrome://marionette/content/sync.js:245:13
    • TimedPromise@chrome://marionette/content/sync.js:230:10
    • Interaction.flushEventLoop@chrome://marionette/content/interaction.js:416:10 webdriverClickElement@chrome://marionette/content/interaction.js:182:31
    • 1614702900530 Marionette INFO がポート 45145 でリッスンを停止しました。
  • geckodriver.log geckodriver 0.21のwww-データ:

    • 1614706982655 geckodriver 情報 geckodriver 0.21.0

    • 1614706982680 geckodriverについて127.0.0.1:33947で聞く

    • 1614706983553 mozrunner::runner INFO コマンドの実行: "/usr/bin/firefox" "-marionette" "--headless" "-foreground" "-no-remote" "-profile" "/tmp/rust_mozprofile.p37a7r0syAmR

    • ***ヘッドレスモードで動作しています。

    • (firefox-esr:22409): dconf-CRITICAL **:17:44:03.845: '/var/www/.cache/dconf' ディレクトリを作成できません: 権限が拒否されました。 dconf が正しく動作しません。

ベストアンサー1

これは権限の問題です。 www-dataのホームディレクトリは/var/wwwで、通常はrootが所有しています。

/var/www を www-data に付与したり、権限の変更を制限したりするには、/var/www/.mozilla を作成し、所有権を www-data に変更できます。その後、スクリプトを再実行してみてください。

現在起こっているように見えるのは、Firefoxがユーザー設定を保存しようとしましたが失敗したことです。エラーは報告されておらず、基本プロセスは完全に中断されていませんが、まだgeckodriverと通信できないほど制限されています。

源泉:https://answers.launchpad.net/ubuntu/+question/695824

おすすめ記事