Akamai導入サイトがわかりやすいのですがSeleniumでブラウザ操作しようとしてもできなかったサイトの対応方法がわかったので嬉しくて書いています
まずAkamaiとは
本質的にはCDNなんですが、こいつが導入されてるとSeleniumの利用が制限されます(理由までは把握してませんのでなんで?とか聞かないで)
具体的な症状としてはログインページを開こうとした時ロードが終わらないか、ログインページでID/PWを入力してログインボタンを押下するとロードが終わらないのどちらかが大半
で、Akamaiが導入されているかの確認はデベロッパーツールでソースを見れば簡単、Seleniumでサイトを開くと
「<script type=”text/javascript” src=”<サイトドメイン>/akam/**/********” defer=””>」
ってソースが追加されてるので「akam」で検索すれば一発
※普通にChromeで開いてもこのソースは存在しません
Seleniumが使えないサイト
全てAkamaiが導入されてるサイトってわけではなくて結果としてSeleniumが使えない&これから書く方法で先に進めるサイトです
※気づいたら追加します
サイト | URL |
---|---|
ZOZOTOWN | https://zozo.jp/ |
Peach(企業用?) | https://travelagent.flypeach.com/ |
タオバオ | https://login.taobao.com/ |
利用できるようにするための方法
まずは具体的なソースを通常との比較で
Dim driver As Selenium.ChromeDriver
Set driver = New Selenium.ChromeDriver
driver.Start
driver.Get "https://javeo.jp/"
Dim driver As Selenium.ChromeDriver
Set driver = New Selenium.ChromeDriver
CreateObject("WScript.Shell").Run ("chrome.exe --remote-debugging-port=9222)
driver.SetCapability "debuggerAddress", "127.0.0.1:9222"
driver.Get "https://javeo.jp/"
一般的だと「start」にあたる部分を変更しています
この起動方法に成功した時わかりやすい見た目の変化がありまして
- アドレスバーの下に「Chrome は自動テスト ソフトウェアによって制御されています。」が表示されない
- アドレスバー横のアイコンが表示され日頃使っているプロファイルなのがわかる
※実際の比較は↓↓を参考に
この起動方法だと何が違うの?
普通にstartで起動した時だとnavigatorなどで検知できるので、Akamaiに限らず”こいつchromedriverでサイト開いてるぞ”ってのがバレてブロックされるケースがあります
ですが、この起動だとChromeとして起動したことになるのでこの検知が効かずブラウザ操作ができるようになることがあるっぽいです(多分)
起動後の操作はいつものSeleniumと同じで大丈夫なのでもしSeleniumが利用できないサイトにぶち当たった時は置き換えてみてください
あとがき
スクレイピング自体を推奨するわけではなくてRPAツール代わりとしてSeleniumは無償なのに十分な効果を発揮できるので今回の発見は個人的にかなり嬉しくて
お仕事あればお待ちしています
コメント