LibraHack後の Lib H k後の スクレイピングを 考える ふるかわだいすけ/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分 • クッキー対応 • 取得したデータをキャッシュする 取得したデ タをキ シ する • userAgentで連絡先を明示する g • robot.txtに従う if modified since • if-modified-since 望ましい機能 つくってみた #{WGET} -x -N N -P P "#{CACHE "#{CACHE_DIR}" DIR}" --useragent="#{userAgent}" "#{uri}" • -x ディレクトリを作る • -N タイムスタンプ(If-Modified-Since) • -P キャッシュのディレクトリを指定 デ • --load-cookies "#{COOKIE_FILE}" • --save-cookies save cookies "#{COOKIE #{COOKIE_FILE} 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+"?"+ filename+ ? + uri uri_obj.query obj query なにげに苦労したところ 期待:/tmp/WgetScraper/gis.emap.ne.jp/standard/13125010/ssactl.htm?GO.x=13&GO.y=2&X p jp/ / / y _shop p _id=40000&X_cancel_url=http%3A%2F%2Fwww.sej.co.jp%2F / p/ g p /g 結果:/tmp/WgetScraper/gis.emap.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 filename+"?"+ ? URI.encode( URI.decode(uri_obj.query), /[^-_.! *'()a-zA-Z¥d;?:@&=+$,¥[¥]]/n) 微妙な違い あとでブログにあげておきます http://mogya.com/ http://mogya com/ Twitter: @mogya まとめ
© Copyright 2024 Paperzz