librahack後の スクレイピングを 考える

Post on 20-Jun-2015

2.459 Views

Category:

Technology

9 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Lib H k後のLibraHack後のスクレイピングを

考える考える

ふるかわだいすけ/mogya.com

ふるかわだいすけふるかわだ すけ

ジフリーランスWEBエンジニア

http://mogya com/http://mogya.com/Twitter: @mogya

自己紹介

http://oasis.mogya.com/

モバイラーズオアシス

スクレイピングしまくり

LibraHack岡崎市立中央図書館事件

今日のテーマ

どんな事件だったかどんな事件だったかわかりやすく説明してみるわかりやすく説明してみる

デスノートを例にして

※権利関係が微妙なので※権利関係が微妙なので画像は削除

デスノートを拾ったので

デスノートプリンタを作ったら

※権利関係が微妙なので※権利関係が微妙なので画像は削除

死神に怒られた

岡崎市立中央図書館事件2010年3月頃、市民から同図書館のウェブサイトの蔵書検索システムに対し、接続が出来ないと苦情が

岡崎市立中央図書館事件

あり、その後もウェブサイトの閲覧が困難になる事態が相次いだ。同年4月15日に同図書館が迷惑なアクセスを受けていると愛知県警岡崎署に被害届を提クセスを受けていると愛知県警岡崎署に被害届を提出し、5月25日にアクセスを行っていた男性が蔵書検索システムに 高頻度のリクエストを故意に送り検索システムに、高頻度のリクエストを故意に送りつけたとして偽計業務妨害容疑で逮捕された。

Wikipediaによる説明

スクレイピングが悪い!とはならなかった

まずは一安心

万 サ バを落として逮捕された時に万一サーバを落として逮捕された時に「あの岡崎図書館でも落ちないように作ってあ た と えば 当性を主張 き んじ なあった」といえば正当性を主張できるんじゃないか?

保守的な教訓

• 1アクセス / 10分• 1アクセス / 10分•クッキー対応取得したデ タをキ シ する•取得したデータをキャッシュする

• userAgentで連絡先を明示するg• robot.txtに従う• if-modified-sinceif modified since

望ましい機能

つくってみた

#{WGET} N P "#{CACHE DIR}"#{WGET} -x -N -P "#{CACHE_DIR}" --user-agent="#{userAgent}" "#{uri}"• -x ディレクトリを作る• -N タイムスタンプ(If-Modified-Since)

デ• -P キャッシュのディレクトリを指定• --load-cookies "#{COOKIE_FILE}" • save cookies "#{COOKIE FILE}“• --save-cookies #{COOKIE_FILE}• --keep-session-cookies

wgetにおまかせ

•キャッシュファイルの場所キャッシュファイルの場所/tmp/WgetScraper/oasis.mogya.com/test.txt?a=b&c=d

↓↓

filename = "#{uri_obj.host}#{uri_obj.path}“filename = filename+"?"+ uri obj queryfilename = filename+ ? + uri_obj.query

なにげに苦労したところ

期待:/tmp/WgetScraper/gis.e-map.ne.jp/standard/13125010/ssactl.htm?GO.x=13&GO.y=2&X shopp jp/ / / y _ p_id=40000&X_cancel_url=http%3A%2F%2Fwww.sej.co.jp%2F

結果:/tmp/WgetScraper/gis.e-/ p/ g p /gmap.ne.jp/standard/13125010/ssactl.htm?GO.x=13&GO.y=2&X_shop_id=40000&X_cancel_url=http:%2F%2Fwww.sej.co.jp%2F

filename = filename+"?"+ URI.encode(filename filename ? URI.encode(URI.decode(uri_obj.query),/[^-_.!~*'()a-zA-Z¥d;?:@&=+$,¥[¥]]/n)

微妙な違い

あとでブログにあげておきます

http://mogya com/http://mogya.com/Twitter: @mogya

まとめ

top related