狠狠撸

狠狠撸Share a Scribd company logo
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 /g
map.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
まとめ

More Related Content

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