SlideShare uma empresa Scribd logo
1 de 20
人のブラウザでクロールする
Masanobu Tsuruta, Dev-3 Center
Background
- LINE Points Ads のサーバサイド開発やってる人です
- 趣味→研究:スクレイピング、ブラウザレンダリング結果の
マイニング
- 常に平和、健全にブラウザの自動操作について思いを馳せ
ています
最近のブラウザ自動操作界隈の話題といえば
- Selenium などの自動テストツールの広がりに恩恵を受け、広
く使われているブラウザに公式に headless mode 的な機能がつ
くようになってきました
- Headless Chrome (Chrome Mac/Linux 59+)
- https://developers.google.com/web/updates/2017/04/headless-chrome
- R.I.P. phantomjs
- Firefox headless mode (beta, Linux 55+, Mac/Win 56+)
- https://developer.mozilla.org/en-US/Firefox/Headless_mode
headless mode のテスト以外の使い方
- xvfb などの仮想デスクトップを必要とせず、一般的なユーザ
の PC で以下のような処理ができるようになります
- スクリーンショットの生成
- レンダリング結果の利用
- 文字組をブラウザ側に一任できる
- リンクの座標なども利用できる
- Web アプリケーションの操作の自動化
一方その頃…
- phantomjs を使ったスクリーンショットにその価値の多くを依
存しているサービス達は多くの問題を抱えています
- スクリーンショットの撮影用サーバのコスト…
- スクリーンショットの撮影に数秒かかる…
- 認証が必要なページのスクリーンショットがとれない…
- phantomjs がなくなる…
解決策
- 多くの問題はあるだろうが、エンドユーザの PC で headless
browser が動くなら、それを貸してもらえばいいんじゃない?
- 多くの問題はあるだろうが、無料!
- 多くの問題はあるだろうが、認証が必要なページにもアク
セスできる
=「人のブラウザでクロールする」ことで
多くの新しい問題を抱えながらも今の問題を解決できる!
- 「人のブラウザでクロールす
る」ためのアーキテクチャ
- 要件を満たす環境探し
- 多くの問題について
Agenda
一般的なクローラの
アーキテクチャ
DB
App
Fetcher
Internet
人のブラウザを使う
アーキテクチャ
Internet
DB
App
Personal Computer
今回の要件
- コンテナを使わない
- インストール障壁を上げたくない
- エンドユーザの権限で動作させる
- インストール障壁を上げたくない
- ユーザが日常的に使っているプロファイルを使用したい
- 認証が必要なページにアクセスしたい
- サーバサイドに認証に関わる情報を知らせたくない
- id/password を別ファイルに書かせるとかは面倒
今回の要件
- コンテナを使わない✓
- インストール障壁を上げたくない
- エンドユーザの権限で動作させる✓
- インストール障壁を上げたくない
- ユーザが日常的に使っているプロファイルを使用したい
- 認証が必要なページにアクセスしたい
- サーバサイドに認証に関わる情報を知らせたくない
- id/password を別ファイルに書かせるとかは面倒
- 🤔
Headless Chrome はどう?
- Headless Chrome、ユーザプロファイルを使いません
- プロファイルのディレクトリを指定する --user-data-dir オ
プションは headless mode では使えない
- それ以外にも、コンテクストの保存はできない仕様
- https://bugs.chromium.org/p/chromium/issues/detail?id=61793
1
- なので、Chrome を利用する場合はログインの自動化も込みで実装
する必要がありますね。
Firefox headless mode はどう?
- まだ beta だけど、 slimerjs を使うと簡単に試せる。
- https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/
- -profile オプションでユーザプロファイルを設定できる。
- その上で、ブラウザのコンテクストで任意の JS を実行できる。
- これが将来的に使えるかどうかはちょっと不透明な気はします。
今回の要件
- コンテナを使わない✓
- エンドユーザの権限で動作させる✓
- ユーザが日常的に使っているプロファイルを使用したい✓
- Firefox headless mode なら(今のところ)可能
多くの問題
- 運用上のリスク
- 普通の人は、PC の電源を落としてから寝る…
- コストの多くがユーザにふりかかる
- クローラでよくある法的リスクもろもろがユーザにふりかか
る
- 著作権
- 威力業務妨害
- クロール対象サービスの規約違反
- 契約において、ユーザに対する十分な説明が必要
まとめ
- リスクとコストの説明を正しく行った上で、同意のもと、エ
ンドユーザのブラウザを利用してクロールを行う方法を模索
しました。
- 技術的には割と苦しいながらも、可能そうです。
- 多くの問題を考えると、クロール対象サイトとなんらかの契
約を行わない限りはビジネスでは使えなさそうだなと個人的
には思いました。
Thank you

Mais conteúdo relacionado

Mais procurados (6)

Power shellmemo
Power shellmemoPower shellmemo
Power shellmemo
 
僕のChrome拡張
僕のChrome拡張僕のChrome拡張
僕のChrome拡張
 
SoftLayer and vShpere
SoftLayer and vShpereSoftLayer and vShpere
SoftLayer and vShpere
 
バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-バージョン管理#01 -Subversion編-
バージョン管理#01 -Subversion編-
 
Azure vmの建て方
Azure vmの建て方Azure vmの建て方
Azure vmの建て方
 
Azureシェルで管理
Azureシェルで管理Azureシェルで管理
Azureシェルで管理
 

Semelhante a 人のブラウザでクロールする

Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Yuya Yamaki
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
fumios
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
 
Movable type seminar 20120703
Movable type seminar 20120703Movable type seminar 20120703
Movable type seminar 20120703
Six Apart
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Kazumi Hirose
 

Semelhante a 人のブラウザでクロールする (20)

Secret of Firefox
Secret of FirefoxSecret of Firefox
Secret of Firefox
 
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
Wpf 4とSilverlight 4、これから業務アプリを開発するならどっち?
 
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
Internet Explorer 9 の新機能「固定サイト」 (Pinned sites)
 
Microsoft によるオープンなweb デバッグ環境 comm tech festival-
Microsoft によるオープンなweb デバッグ環境 comm tech festival-Microsoft によるオープンなweb デバッグ環境 comm tech festival-
Microsoft によるオープンなweb デバッグ環境 comm tech festival-
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
 
Trat_sprint3
Trat_sprint3Trat_sprint3
Trat_sprint3
 
Webシステム脆弱性LT資料
Webシステム脆弱性LT資料Webシステム脆弱性LT資料
Webシステム脆弱性LT資料
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol1
 
Windows Azure PHP Tips
Windows Azure PHP Tips Windows Azure PHP Tips
Windows Azure PHP Tips
 
Movable type seminar 20120703
Movable type seminar 20120703Movable type seminar 20120703
Movable type seminar 20120703
 
Azure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果wwwAzure CLI あずにゃんの CLI を使ってみた結果www
Azure CLI あずにゃんの CLI を使ってみた結果www
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
How to create your own Azure Pipeline's image
How to create your own Azure Pipeline's imageHow to create your own Azure Pipeline's image
How to create your own Azure Pipeline's image
 
フロントエンド開発環境
フロントエンド開発環境フロントエンド開発環境
フロントエンド開発環境
 
Apps for Web Platform
Apps for Web PlatformApps for Web Platform
Apps for Web Platform
 
PWAについて
PWAについてPWAについて
PWAについて
 
Microsoft Edge F12 開発者ツール
Microsoft Edge F12 開発者ツールMicrosoft Edge F12 開発者ツール
Microsoft Edge F12 開発者ツール
 
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスドMicrosoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
Microsoft azure上にwebサイトやアプリケーションを構築する方法 アドバンスド
 
20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar20140924 mt cloud_handson_seminar
20140924 mt cloud_handson_seminar
 

Mais de LINE Corporation

Mais de LINE Corporation (20)

JJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LTJJUG CCC 2018 Fall 懇親会LT
JJUG CCC 2018 Fall 懇親会LT
 
Reduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin CoroutinesReduce dependency on Rx with Kotlin Coroutines
Reduce dependency on Rx with Kotlin Coroutines
 
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみたKotlin/NativeでAndroidのNativeメソッドを実装してみた
Kotlin/NativeでAndroidのNativeメソッドを実装してみた
 
Use Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extensionUse Kotlin scripts and Clova SDK to build your Clova extension
Use Kotlin scripts and Clova SDK to build your Clova extension
 
The Magic of LINE 購物 Testing
The Magic of LINE 購物 TestingThe Magic of LINE 購物 Testing
The Magic of LINE 購物 Testing
 
GA Test Automation
GA Test AutomationGA Test Automation
GA Test Automation
 
UI Automation Test with JUnit5
UI Automation Test with JUnit5UI Automation Test with JUnit5
UI Automation Test with JUnit5
 
Feature Detection for UI Testing
Feature Detection for UI TestingFeature Detection for UI Testing
Feature Detection for UI Testing
 
LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享LINE 新星計劃介紹與新創團隊分享
LINE 新星計劃介紹與新創團隊分享
 
​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享​LINE 技術合作夥伴與應用分享
​LINE 技術合作夥伴與應用分享
 
LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣LINE 開發者社群經營與技術推廣
LINE 開發者社群經營與技術推廣
 
日本開發者大會短講分享
日本開發者大會短講分享日本開發者大會短講分享
日本開發者大會短講分享
 
LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享LINE Chatbot - 活動報名報到設計分享
LINE Chatbot - 活動報名報到設計分享
 
在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes在 LINE 私有雲中使用 Managed Kubernetes
在 LINE 私有雲中使用 Managed Kubernetes
 
LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧LINE TODAY高效率的敏捷測試開發技巧
LINE TODAY高效率的敏捷測試開發技巧
 
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
LINE 區塊鏈平台及代幣經濟 - LINK Chain及LINK介紹
 
LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享LINE Things - LINE IoT平台新技術分享
LINE Things - LINE IoT平台新技術分享
 
LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗LINE Pay - 一卡通支付新體驗
LINE Pay - 一卡通支付新體驗
 
LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務LINE Platform API Update - 打造一個更好的Chatbot服務
LINE Platform API Update - 打造一個更好的Chatbot服務
 
Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發Keynote - ​LINE 的技術策略佈局與跨國產品開發
Keynote - ​LINE 的技術策略佈局與跨國產品開發
 

Último

Último (11)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

人のブラウザでクロールする