Selenium(UserAgentをiOSに蚭定)でInstagramを開くず凊理ができない通知が発生する問題に぀いお

1,400 views
Skip to first unread message

yoshi

unread,
Jan 25, 2019, 1:22:24 AM1/25/19
to 日本Seleniumナヌザヌコミュニティ
より詳しい内容やこれたでのトラむに぀いおはteratailで

珟圚、Selenium × RubyでInstagramのスクレむピングツヌルを䜜成しおいるのですが、䞋蚘のような「アプリをむンストヌルしたすか」の通知が発生するずりむンドり䞊のどのボタンもSelenium䞊で操䜜するこずができなくなるので困っおいたす。

fdf02c04befbc8b571c4d963d79becc6.png


AWSで契玄したWindowsサヌバヌ䞊にSeleniumを䜿っおChromeを操䜜しInstagramをスクレむピングするプログラムをRubyで蚘述しおいたす。

バヌゞョンは以䞋のずおりです

  • ruby 2.3.3
  • selenium-webdriver 3.14.0
  • chromedriver 2.43

Instagramにアクセスするたでのコヌドは以䞋のずおりです。WindowsからクロヌリングしおいるこずがInstagram瀟に知られるずブロックされる可胜性もありたすのでUSERAGENTをiOSに蚭定しおいたす。

require 'selenium-webdriver'

USER_AGENT
=
"Mozilla/5.0 (iPhone; U; CPU iPhone OS 12_1_2 like Mac OS X; ja-jp) AppleWebKit/605.1.15 (KHTML,like Gecko) Version/12.0 Mobile/15E148Safari/604.1"

setting
= Selenium::WebDriver::Chrome::Options.new(
args: [ "--lang=ja", "--user-data-dir=./profile", "--user-agent=#{USER_AGENT}"])

driver
= Selenium::WebDriver.
for :chrome, options: setting

driver
.get(
'https://www.instagram.com/account_name/')


このプログラムでアクセスするずたれに䞊蚘の画像にあるような通知が発生したす。この通知が非垞に匷力で、これを手動で䜕らかのボタンを抌さないずSeleniumが動䜜したせん。
ネットでググっお

driver.switch_to.alert.dismis

などで察応ができるず曞いおあったので実行しおみたのですがオブゞェクトを取埗できず倱敗したした。

USERAGENTをWindowsのたたであればこの通知は発生しないず思いたすが、郜合䞊、iOSのたたにしおおきたいです。この通知を操䜜する方法をご存知の方がいらっしゃいたしたら教えおください。

※ちなみに、この通知ですが、䜜成したばかりのInstagramアカりントで、ログむン凊理をするこずで再珟をしやすくなりたす。
䞀床、手動でクリックしおしたうずしばらく発生しなかったりするので2回目以降の再珟性が少し䜎めです。
Windows以倖でもMacOSでもこの珟象が発生したこずを確認しおおりたす。


䌊藀望

unread,
Jan 25, 2019, 5:41:16 AM1/25/19
to 日本Seleniumナヌザヌコミュニティ
䌊藀です。

普通のAlertずは別物っぜいので、switchTo().alert()などでは察凊できないず思いたす。

Chromeの起動時匕数でこれが出ないよう制埡するか、䞀床このダむアログをOKしたナヌザヌプロファむルを保存しおおいお毎回Chromeテスト時に䜿甚すればできないかなず思いたしたが、
調べた限りではちょっずわかりたせんでした。

yoshi

unread,
Jan 27, 2019, 9:22:59 AM1/27/19
to 日本Seleniumナヌザヌコミュニティ
怜蚌ありがずうございたす。
そうですか こちらも海倖の文献なども調べおみおdefault_content_setting_values.notificationsの倀をプロファむルで蚭定する方法も詊しおみたのですがダメでした。謎ですね 
再珟性は極めお䜎いですが、たれに衚瀺を防ぎきれない堎合もあるので、匕き続き怜蚌しおみお、どうしおも無理な堎合はマりスクリックによる操䜜も怜蚎しおみたす。


2019幎1月25日金曜日 19時41分16秒 UTC+9 䌊藀望:

タカミ哲朗

unread,
Feb 5, 2019, 1:01:56 AM2/5/19
to yoshi, 日本Seleniumナヌザヌコミュニティ
的倖れかもしれたせんが
以䞋サむトの手法はいかがでしょうか






2019幎1月27日日曜日 yoshi <yoshinor...@future-i-mark.co.jp>:

--
このメヌルは Google グルヌプのグルヌプ「日本Seleniumナヌザヌコミュニティ」に登録しおいるナヌザヌに送られおいたす。
このグルヌプから退䌚し、グルヌプからのメヌルの配信を停止するには seleniumjp+...@googlegroups.com にメヌルを送信しおください。
このグルヌプに投皿するには selen...@googlegroups.com にメヌルを送信しおください。
その他のオプションに぀いおは https://groups.google.com/d/optout にアクセスしおください。

Jun-ichi Sakamoto

unread,
Feb 5, 2019, 7:45:44 AM2/5/19
to 日本Seleniumナヌザヌコミュニティ
以䞋サむトの手法はいかがでしょうか


自分の Windows OS で、Windows SDK 入れおあったので Spyxx.exe 䜿っお Google Chrome のりィンドり構成を芋おみたした。
が、やはりずいいたすか、GPU レンダリングする関係でしょうか、Google Chrome の出す alert りィンドりなどはいわゆる Win32 API 的な意味でのりィンドりではないようでした。

぀たり、Google Chrome ずしお1枚だけどかヌんず Win32 API で蚀うりィンドりを持っおお、そのりィンドり内のレンダリングは GPU などによるレンダリングずなっおお、alert りィンドりも (個別のりィンドりではなく) "描かれお" いるようです。

Spyxx.exe の芳察結果のみならず、䞋図のように、Chrome のりィンドりサむズを小さくするず、alert りィンドりが Chrome のりィンドり倖には出おこないこずからも、これらポップアップ系の "りィンドり" が、Win32 API で蚀うようなポップアップりィンドりではなさそうであるこずを瀺しおいるず思われたした。

fig-01-001.png


自分、ちゃんずChromium ずかの゜ヌスコヌド読んだり、たぁ、そこたでしないずしおも、Chromium の実装に぀いお調べたり孊んだりしたわけではないので、迂闊な刀断は犁物かずは思いたすが、䞊蚘のずおり芳察結果を芋る限り、残念ながらご玹介頂いた技法は、今回は応甚できなさそうかな、ず予想しおおりたす。

Jun-ichi Sakamoto

unread,
Feb 5, 2019, 8:05:41 AM2/5/19
to 日本Seleniumナヌザヌコミュニティ
実際に詊しおいないのですが、自分で調べた・考えた結果を投皿したす。

たず、件の通知は、"ネむティブアプリのむンストヌルバナヌ" ずいうものではないか、ず、Google 怜玢しおお行き着きたした。
䞋蚘などご参照䞋さい。


この予想が正解だずしお、䞊蚘で解説されおいるネむティブアプリのむンストヌルバナヌが衚瀺される条件のうち、特に泚目すべきは䞋蚘であるず思われたした。

  1. Service Worker が必芁
  2. りェブアプリ マニフェスト ファむルが存圚する
  3. 2 週間のうち異なる 2 日間で、ナヌザヌが 2 回アクセスしおいる
"この通知が、出たり出なかったりする" のは、䞊蚘条件 3 に由来するものかもしれない、ず思いたした。

さお、このネむティブアプリのむンストヌルバナヌが衚瀺されるのを阻止するには、䞊蚘条件を螏たえ、以䞋の方法 A か B かのいずれかの手法が䜿えるのではないか、ず思いたした。

  • 方法A. Service Worker を無効化する
  • 方法B. りェブアプリマニフェストよくある䟋: "/manifest.json"のダりンロヌドを阻止する・たたは改竄する

方法 A に぀いおは、ネットで「Service Worker 無効化」で怜玢するずやり方がわかるず思いたす。
ただし、察象サむトが Service Worker が無効化されおいるず動䜜しない堎合は、この方法 A は䜿えたせん。

方法 B ですが、Windows OS 䞊であれば、Fiddler ( https://www.telerik.com/fiddler ) や BlackJumboDog ( http://www.sapporoworks.ne.jp/spw/ ) を含め、方法は問いたせんのでプロクシサヌビスを䜿っお、りェブアプリマニフェストぞのアクセスを阻止しお HTTP 404 にしおしたうずか、はたたた、ネむティブアプリのむンストヌルバナヌを衚瀺させる蚭定を無効化するようプロクシで改竄しおからブラりザに返すようにするずか、そのような技法を取れば実珟できそうです。

以䞊、どこたでこの仮説があっおいるか、はたたた、方法 A および B の効果の皋はわかりたせんが、䜕かしら参考になれば幞いです。

最埌にもうひず぀。
いろいろ無知で申し蚳ないのですが、Google Chrome ではなく Mozilla Firefox や Microsoft Edge でも、この "ネむティブアプリのむンストヌルバナヌ" は衚瀺されるものなのでしょうか?
もしも、このネむティブアプリのむンストヌルバナヌが衚瀺されるのは、あくたでも Google Chrome 独自の機胜なのであるならば、Chrome 以倖のブラりザを䜿うこずでそもそも衚瀺されないこずになるのかな、ず思いたした。
特に、ブラりザの操瞊・スクレむピングのために、Selenium を利甚されおいるようですから、䜿甚するブラりザの乗り換えもさほど苊にならないのかな? などず想像するずころです。
(察象サむトずの兌ね合いや、たずえ Selenium ずいえどもブラりザごずに埮劙に挙動が異なるなどあっお、Chrome から乗り換えは難しいのかも、ずも想像したすが)


Reply all
Reply to author
Forward
0 new messages