jsk-ros-pkg / jsk_robot

jsk-ros-pkg/jsk_robot
https://github.com/jsk-ros-pkg/jsk_robot
73 stars 97 forks source link

[aibo_selenium_ros] seleniumを使うとログインできない #1851

Closed a-ichikura closed 10 months ago

a-ichikura commented 11 months ago

https://github.com/jsk-ros-pkg/jsk_robot/pull/1798#issue-1698908494

seleniumを利用してchrome webdriverを自動起動後、手動ログインしようとするとサインインに失敗する。 メールアドレス、パスワードを入力後、bot対策のクイズに答えたあとにログインできず入力したパスワードが消えてしまう。

ブラウザ(firefox, chrome)を手動で立ち上げ、同じようにmyaiboにログインすることは可能。

少なくとも8月20日頃まではサインインできていて、 9月7日現在サインインできなくなった。 →SONYのセキュリティーが変わったのかも(bot対策用クイズが8月の頃と変わっていたので…)

@sktometometo

a-ichikura commented 11 months ago

追加情報

webdriverをfirefoxにしてみましたが、 同じようにサインインしようとすると "サーバーとの接続を確立できませんでした。" と表示されました。

2回試して同じエラーメッセージが出たので、my aiboのサイトでブロックが働いていそうです。

mqcmd196 commented 11 months ago

とりあえず別のPCで試してみるのはありそうです

a-ichikura commented 11 months ago

とりあえず、自分の新しいデスクトップで試して見た結果

・google chromeでやろうとしたら、chromeのversionが116.0.5845.179で、有効なchromedriverのversionが116.0.5845.96であっていないためかうまくいきませんでした 参考

・firefoxのdriverで試してみたらmy aiboのサイトを開くことはできましたがaibo用pcと同じように「サーバーとの接続を確立できませんでした」となりました

ちなみにデスクトップでも、seleniumを経由せず検索から手動でログインする場合は正常にログインすることができます。

aibo_selenium_rosができたときは5月なのでgoogle chromeのversionが114っぽいのですが、 最新版が116で、114を入れたらできるかと思い試そうとしたのですがバージョン下げる方法がわからずfirefoxで試す方を優先しました…

sktometometo commented 11 months ago

navigator.webdriver をはじめとする, botであることを示す項目が隠蔽されていないので検知されているのかと考えています。

オリジナルのWebDriverクラスではなく、 https://github.com/ultrafunkamsterdam/undetected-chromedriver を使うと動作しました。 PR/add-jsk-aibo-robot の最新版をpullして使ってみてください。

@a-ichikura @sawada10

sktometometo commented 11 months ago

あと、現在の実装ではchromeではなく rosdep install で入る chromium と chromium-chromedriver を使用しているので、_webdriver オプションで指定せずに立ち上げて動作するはずなのでそちらも試してみてください。(README.mdを更新しました)

a-ichikura commented 11 months ago

デバックしていただき動くようになりました。

ただし注意点: chrome-driverとchrome-browserのversionを合わせる必要があり、aiboのPCはどちらも115なので undetected-chrome-driver もバージョンを合わせる必要がありました。 それに関するissue:https://github.com/ultrafunkamsterdam/undetected-chromedriver/issues/1564#issuecomment-1720271517 を参考に、__init__.pyの中にversion_main=115を追加しました。