O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Webクローリング&スクレイピングの最前線 公開用

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Próximos SlideShares
実践スクレイピング
実践スクレイピング
Carregando em…3
×

Confira estes a seguir

1 de 37 Anúncio
Anúncio

Mais Conteúdo rRelacionado

Diapositivos para si (20)

Quem viu também gostou (13)

Anúncio

Semelhante a Webクローリング&スクレイピングの最前線 公開用 (20)

Mais de Lumin Hacker (10)

Anúncio

Mais recentes (20)

Webクローリング&スクレイピングの最前線 公開用

  1. 1. WEBクローリング& スクレイピングの最前線 ほこ×たてで語られなかった5万枚画像の真 実 ネットエージェント株式会社 杉浦 隆幸 1
  2. 2. about me • 杉浦 隆幸 • ネットエージェント株式会社 代表取締役 • PacketBlackHole, OnePointWall, 防人, secroidの原開発者 • CTFチャレンジジャパン 経済産業省主催のCTF(ハッキングの技術 大会)優勝メンバー (Agent IV) • Winnyの暗号解読に初めに成功 • TVニュース番組での事件解説多数 • 第4回 IPA賞受賞 • 2010年に政府の情報保全検討委員 • など 2
  3. 3. Agenda • クローリング • 概要・リスク・レベル・対策・対策の対策 • スクレイピング • 環境・実例 • 応用例 • secroid • easy webscrap • zip de kure • P2P 公開用は一部情報を削減しています。 3
  4. 4. クローラ crawler 4
  5. 5. クローラ • ブラウザはURLをページに変える。 • クローラはURLをHTMLデータに変える。 • 自動的にリンクを辿るや連番などにより1つ以上の情報 を取得する。 • 周期的に訪問するものもある。 • 最初以外は人を介さずに自動的に動作する。 • 検索エンジンや、特定の情報解析用、データ収集、メー ルアドレス収集などに用いられる。 5
  6. 6. 昨今のクローリング事情 • goo(NTT系)がGoogleへの検索エンジン乗り換え 2003年 • 情報大航海プロジェクト 2005~2010年 • 検索エンジンを国策で支援 • 著作権法改正 2009年 • 検索エンジン・情報解析の合法化 • Librahack事件 2010年 • 図書館のWebをクローリングしていたら逮捕される • Yahoo Japan が Google検索エンジン乗り換え 2010年 • Google検索の国内シェアが98%に • NSAのPRISMが話題になる 2013年 6
  7. 7. クローラのリスク • 秘孔をつくクローリング • 多大な負荷を伴うクエリーを発行 • 2010年 Librahack事件 (偽計業務妨害で起訴猶予) http://librahack.jp/ • 深すぎるクローリング • 全く拘束力がない robots.txtを守ろう (著作権法の改正で拘束力を持った?) • ブラウジングならrobots.txtを守らなくて良い? • 無限再帰的URLの存在 • 利用禁止措置を食らう • 同時接続数制限 • IP BAN, AS BAN • 高速すぎ並列すぎるクローリング • 1 page/秒を超えない早さで • HTTP/1.1 で keep alive • 某中国企業によるクローリング • 著作権侵害リスク • 検索機能の提供か情報解析が必要(平成 21 年著作権法改正) • 詳しくは著作権法の専門家にどうぞ 7
  8. 8. http://dic.nicovideo.jp/a/ban 8
  9. 9. クローラレベル • 1 wget • 2 UAをブラウザに • 3 Cookie対応、referer対応 • 4 リクエスト全てをブラウザと同じに • 5 リクエスト全てをブラウザと同じに+Cookie対応 • 6 IPアドレスを短周期で変える • 7 ブラウザでクローリングする • 8 アクセスタイミングをランダマイズする • 9 人間がアクセスした内容をパケットから再現 • 10 人間のアクセスパターンでブラウザ自動制御 レベルを上げるたび により人間らしく。 注) 当社基準 9
  10. 10. まず、wgetから始めよ • 多くのLinux環境、MacOSと、Cygwin,Windows版で利用 できるCUIのダウンロードソフト • wget –r –l 5 –h http://www.yahoo.co.jp/ などコマンドライ ンで再帰的にもダウンロード可能なクローラ。robots.txt 対応。 10
  11. 11. UA (UserAgent) • HTTP リクエストヘッダに含まれる。何を使ってアクセ スしているのかを示すヘッダ。利用OSやブラウザの名前、 バージョン名を含むことも多いので、ユーザの識別にも 使われている。 • 例: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 • 参考: http://www.openspc2.org/userAgent/ • ガラケーはここに、個体番号があったりと個体識別で多くの問題を 生んだ。 11
  12. 12. referer • HTTPリクエストヘッダのひとつ。リンク元のWebページ を示すURL。 • URLリストからダイレクトにダウンロードしていると、 refererがないと通常の手順でダウンロードしていないと してエラーを返すようにできる。 • サンプル • Referer: http://www.example.co.jp/ 12
  13. 13. 何種類かクローリングをしてみま しょう • wget • wget + UA • LWP • phantomjs • firefox+mozrepl+tcpproxy 13
  14. 14. クローリングの難しい条件 • TLS/SSL (以下SSL) • HTTP Proxy+SSL • Socks • Socks Proxy + SSL • Tor • Tor + SSL • SPDY • SPDY Proxy + SPDY • Tor + SPDY ・言語の実装に対して、Proxyの対応状況 が悪い場合がおおい。 ・SPDYなどの新しいプロトコルは実装さ れてないことも多い。 ・SSLを使う上で便利なSOCKSも限定対 応の場合も。 14
  15. 15. Tor https://www.torproject.org/ http://ja.wikipedia.org/wiki/Tor 15
  16. 16. SPDY • Googleの開発した次世代のHTTPプロトコルの候補。SSL 通信上で作成されているので、SSL対応が必須。表示が 早くなりそうな名前であるが、大抵の場合は、サイトア クセスの構成を見直すなど先にやることがある。マシン 台数が多く転送量が多く常時SSLで限界まで最適化した 場合のみ恩恵にあやかれるらしい。 • Googleやtwitterが対応している。 16
  17. 17. クローラ対策 • capcha • cookie • 多重アクセス検出 • 同一IPアドレス多量アクセス検出 • UA指定 • robots.txt • ログイン要求 • JavaScriptでセッションキー生成 17
  18. 18. 18 諸 般 ノ 事 情 ニ ヨ リ 非 公 開
  19. 19. 19 諸 般 ノ 事 情 ニ ヨ リ 非 公 開
  20. 20. スクレイピング scraping 20
  21. 21. 環境の整った言語 • Perl • Web::Scraper • HTML::TreeBuilder • Python • Ruby • WSH (Windows Script Host) • jQuery • and more middle wares • http://www.scrapy.org/ • http://nokogiri.org/ 21
  22. 22. スクレイピング方法 (1/2) • 意外とスクレイピングコストは高い • grepタイプ(簡単・軽い) • grepで正規表現で抽出 • 行単位処理で正規表現で抽出 • コマンド grep or egrepを使う • wget -O - 'http://hamusoku.com/archives/7927364.html' |grep blogimg|sed 's/.* src="//g'|sed 's/" .*//g' • コンピュータ言語内で正規表現を使う • cat te.html|perl -e '$/="<";while(<STDIN>){$_=~/href="(.*)?"/;print $1,"n";}' 22
  23. 23. スクレイピング方法 (2/2) • HTML構文解析(重い・正確) • CSS のシンタックス (Chromeでデモを交えて解説) • XPath • ツリー構造のアドレスで判定 23
  24. 24. XPath (HTML文書における) • HTMLをXML文書として、 階層構造で特定部分を示す ための構文。 • 例: • html/body/p/a • //*[@id="poptoc"]/ol/li[7]/a http://ja.wikipedia.org/wiki/XML_Path_Language 24
  25. 25. 実際にやってみる • scraper http://hoge.example.com/ 25
  26. 26. 応用例 クローラ×スクレイピン グ application 26
  27. 27. • Androidアプリのリスクレベル判定+検索エンジン • Androidアプリ情報とアプリのクローラー • Google Play のアプリの情報分析、検索機能を提供 • 勝手マーケットやウイルスも検索対象 27
  28. 28. 日本 GW 米国 Proxy Google Play (SSL or SPDY) 日本公開 サーバ 米国公開 サーバ 他マーケット (HTTP) 評価用サーバ・インデクサ・スト レージ・DB・クローラ群 28
  29. 29. ほこ×たて(対戦用) • 画像検索ダウンローダー • 対象:google,yahoo,naver の画像検索 • Googleの類似画像検索は役に立たなかった。 • Googleのクローラ対策を抜けるためにレベル5のクロー ラで検索。 • 画像ダウンロードはリスト化後12並列処理でwgetを利用。 29
  30. 30. 各サイト専用クロー ラ ・ Google 画像検索 ・ Yahoo画像検索 ・ NAVER画像検索 検索文字列リスト× 5万超のURLリスト 各サイト用、実体URL抽出スクリプ ト sort | uniq リストを12分割 12プロセスのwgetでダウンロード 0:15 プログラム作成と 検索文字列の作成 0:45 ダウンロード完了 地域人名フォルダ作成&リネーム&タイムスタンプ変更&EXIF加工 30
  31. 31. easy webscrap (商用サービス) • 定点観測用Webscraper • Webインターフェイスで、GUIで選ぶことにより取り出 し範囲が容易に決定できる。 • 定期的にランキング取得・定点監視に • モバイルからPCまでの画面サイズに応じて表示可能。 • CSVで出力可能 • 技術者ではない派遣のオネイサンがメインで使っていま す。 • 開発元 ネットエージェント株式会社 大阪支社 31
  32. 32. 32 ・素人でも利 用でき、GUIで 範囲を決めら れるのがポイ ント。
  33. 33. 日付 会員数 2013/6/1 21310 2013/6/2 21547 2013/6/3 21784 2013/6/4 22021 2013/6/5 22258 2013/6/6 22495 2013/6/7 22732 2013/6/8 22969 2013/6/9 23206 2013/6/10 23443 2013/6/11 23680 2013/6/12 23917 2013/6/13 24154 2013/6/14 24391 2013/6/15 24628 2013/6/16 24865 2013/6/17 25102 2013/6/18 25339 2013/6/19 25576 2013/6/20 25813 33 ・管理画面より、取りたい場所を 指定。 ・定期的に値を取得し統計データ として活用。
  34. 34. zip de kure • ブログの画像をzipにまとめてダウンロードできる。zipを 要求する麻呂のためのクローラ。 34
  35. 35. http://livedoor.blogimg.jp/hamusoku/imgs/a/8/a8a3cd59.jpg http://livedoor.blogimg.jp/hamusoku/imgs/9/d/9dc246dd.jpg http://livedoor.blogimg.jp/hamusoku/imgs/4/5/45987d80.jpg http://livedoor.blogimg.jp/hamusoku/imgs/f/b/fb59814c.jpg http://livedoor.blogimg.jp/hamusoku/imgs/0/1/0125d552.jpg http://livedoor.blogimg.jp/hamusoku/imgs/5/a/5a7f0ed6-s.jpg http://livedoor.blogimg.jp/hamusoku/imgs/b/1/b1d554dc-s.jpg http://livedoor.blogimg.jp/hamusoku/imgs/9/d/9da77340-s.jpg http://livedoor.blogimg.jp/hamusoku/imgs/6/a/6afc7bec.jpg http://livedoor.blogimg.jp/hamusoku/imgs/5/0/50d2e80e.jpg http://livedoor.blogimg.jp/hamusoku/imgs/1/b/1b27b468.jpg http://livedoor.blogimg.jp/hamusoku/imgs/9/4/9493aff2.jpg http://livedoor.blogimg.jp/hamusoku/imgs/5/d/5d29c13f.jpg http://livedoor.blogimg.jp/hamusoku/imgs/7/3/731430d7.jpg http://livedoor.blogimg.jp/hamusoku/imgs/2/4/24d46578.jpg http://livedoor.blogimg.jp/hamusoku/imgs/2/2/222c8d66.jpg http://livedoor.blogimg.jp/hamusoku/imgs/2/f/2ff65a68.jpg http://livedoor.blogimg.jp/hamusoku/imgs/3/6/3678b0d2.jpg http://livedoor.blogimg.jp/hamusoku/imgs/d/f/dfc4bcb9.jpg http://livedoor.blogimg.jp/hamusoku/imgs/6/8/683a79b0.jpg http://livedoor.blogimg.jp/hamusoku/imgs/7/b/7bd7a11b.jpg http://livedoor.blogimg.jp/hamusoku/imgs/d/1/d11b162c.jpg http://livedoor.blogimg.jp/hamusoku/imgs/c/d/cd67355e.jpg http://livedoor.blogimg.jp/hamusoku/imgs/1/b/1b8c6fcc.jpg http://livedoor.blogimg.jp/hamusoku/imgs/b/7/b744d6cb.jpg http://livedoor.blogimg.jp/hamusoku/imgs/4/1/41d7ae79.jpg http://livedoor.blogimg.jp/hamusoku/imgs/a/8/a8263966.jpg http://livedoor.blogimg.jp/hamusoku/imgs/2/d/2d932d75.jpg http://livedoor.blogimg.jp/hamusoku/imgs/b/4/b4d324bd.jpg http://livedoor.blogimg.jp/hamusoku/imgs/4/5/459322c9.jpg http://livedoor.blogimg.jp/hamusoku/imgs/0/a/0a449457.jpg http://livedoor.blogimg.jp/hamusoku/imgs/0/d/0d8453b4.jpg http://livedoor.blogimg.jp/hamusoku/imgs/3/2/32790199.jpg http://livedoor.blogimg.jp/hamusoku/imgs/9/b/9b69ba8b.jpg http://livedoor.blogimg.jp/hamusoku/imgs/4/e/4e36cbb8.jpg http://livedoor.blogimg.jp/hamusoku/imgs/5/c/5c5afa12.jpg http://livedoor.blogimg.jp/hamusoku/imgs/7/d/7ddb24cc.jpg http://livedoor.blogimg.jp/hamusoku/imgs/e/c/ec53246c.jpg http://livedoor.blogimg.jp/hamusoku/imgs/e/4/e492e53e.gif http://livedoor.blogimg.jp/hamusoku/imgs/7/f/7ff66a59.gif http://livedoor.blogimg.jp/hamusoku/imgs/f/1/f1b4d0c2.gif http://livedoor.3.blogimg.jp/hamusoku/imgs/9/5/95cc4809.jpg http://livedoor.blogimg.jp/hamusoku/imgs/d/b/db83dea8.gif GET and Zip 35
  36. 36. P2Pクローラ • Winny • Share • PerfectDark • Limewire/Cabos • BitTorrent • P2Pは主としてClosed プロトコルのクローリング • 自律分散型 36
  37. 37. 37 http://www.netagent.co.jp/

×