なんかてきとうに

わりと個人的な忘備録的ですよ。

アドベントカレンダーの最後を糞な記事で締めくくりたい!

この記事はWebスクレイピング Advent Calendar 12/25 の記事です。

初めに

大体タイトルの通りなので割と読むだけ時間の無駄です。

書くのも時間を無駄にした感が半端ないです。

私とクローリング

私がWebページをクローリングしようとした最初のきっかけは、とあるテキスト系サイトのテキストを読み逃しなく読みたいという欲求からでした。

当時、個人でWebサイトを持つのが普通になって、みんなhtmlタグをポチポチ自分で打ってた頃、過去ログなんて存在しない!みたいなテキストを不定期に更新するだけのページが存在しました。

RSSとかそんな良いものもなく、とりあえず毎日見てれば逃すことはないだろうという雰囲気があったころ。

ただ、毎日巡回するってまぁ大変で忘れますよねって、そこで毎日クローリングして変化があれば保存するというそれだけのスクリプトを書きました、perlで。

何のひねりもなく、常時起動してるWindowsマシンのタスクスケジューラに登録して毎日巡回させてました。

以来、RSSが登場してもRSSなんか見ないので、結局そのテのものはデイリーくらいで巡回させて拾うようにする癖がつきました。

私とスクレイピング

私がWebページのスクレイピングをしようとしたきっかけは、画像掲示板でした。

また当時、画像掲示板なるものが流行り、いわゆる二次加工な二次元壁紙をひたすらいろんな人が貼るだけの掲示板というのが大量にできました。

双葉とかしおからとかsweetnoteとかいちごとかいろいろ。

そういう画像を見るわけでもなく、ひたすらHDDの肥やしにするということに無駄に熱を注いでいる時期がありました。

当然ながら、効率よくデータを集めたくなるのが心情というものです。

で、巡回ツールが出回ったりするわけですが、当時はまだWebサイト側の回線も貧弱だったり、ホスティングサービスの無料プランでは大量にダウンロードされたりするとすぐ従量限界に達して503しか返さなくなるみたいなこともあり、メジャーどころの巡回ツールはだんだん対策されるわけです。

一例として、refererを見たりUser-Agentを見たりするようになりました。 cookieを使い始めるものもありました。

頑張ってるところでは、メインページにサムネイルと個別ページへのリンク、個別ページでimgタグを利用して画像を張り付けているもの(サムネイル、個別ページ、画像本体のアドレスが結構バラバラでちゃんと追わないと拾えない)や、通常の画像と同じようにhtml上では記載されているけれど、Webブラウザで見ると見えないようになっており、そこにアクセスすると一定時間IPAddressによる制限が入って閲覧できるなるもの、等、だんだん趣向を凝らしたものになっていったりしていました。

そこで、ツールに頼っていると対応待ちが発生するなど、不便極まりないため、やっぱり自分で作ることになります。

そんなに頑張って探したりもしてないので、クローリングに適したフレームワークが当時存在したのかどうかは定かではないのですが、そういうのは利用していませんでした。

htmlを適当に解析して、画像のURLをひろいだして、ファイル名一致でダウンロード済でないか確認して、持ってなければダウンロードみたいな単純なところから始まり、可能な限り人間がたどるのと同じようにたどって画像をダウンロードする、そんなところにばかり力を入れていました。 やっぱりperlで、perlにはLWPという素晴らしいモジュールが存在しまして、referercookieも当然のように扱え、この手の巡回にはとても便利だったのを覚えています。

画像掲示板自体は、いくつかの種類の掲示板スクリプトがとてもよくつかわれていたので、やっぱりそういうのに対応できるように作っていくわけです。

掲示板が数種類の累計に分類されるので、スクリプトのつくりも、クローリングする部分、htmlを解析して画像URLを回収する部分、次のページを指定する部分、画像をダウンロードする部分など、適度に交換可能な形で作るようになりました。今だといろんなフレームワークが便利にやってくれる部分ですね。

どうでもいいですが今でも当時の画像ファイル群がHDDに埋まっていたりします。1024x768とかでもまともなサイズだったんですよ。

ちなみに、このころもrobots.txtなどはありましたが、そんなのは見もしていませんでした。でも特にそれが原因で揉めたような話も聞きませんので、牧歌的な時代ですね。 いくつか試した巡回ツールにもそんな機能はなかったんじゃないかと思います。

私と現在のクローリング

現在は、もうそんなにクローリングしてなくて、 某漫画家さんのサイトがちょうど過去ログ残さず、テキストと画像が不定期に差し変わるというサイトと、時間や数量制限のある、メディアプレイヤー向けskinをアップロードする掲示板の2か所くらいしか巡回していません。

今はperlではなくpythonを使っていて、普通にhttp.clientとかurllibで書いています。巡回してデータを拾ったらtwitterにDM送るようにして、貯めるだけ貯めて見ないという状況をなくす工夫もしています。

進化しました。

そうは言っても、言語が変わってもやっぱりやりたいこと、その方法はそう大きく変わらず、今でもフレームワークを利用して……みたいなことはやっていません。

たとえばこんな(随分前に書いたやつなので今見るとアレな感じですが)

from http.client import HTTPConnection, HTTPSConnection
import re
import os.path
from  localtwitter.twitter import *

img = re.compile(r'src="([^\s/]+\.[\w]{1,3})"')
SAVE_DIR = "/path/to/save/dir/"


def get_image_list(c):
    c.request('GET', '/')
    r = c.getresponse()
    if r.status == 200:
        return img.findall(str(r.read()))
    return []

if __name__ == '__main__':
    c = HTTPConnection('<URL>')
    images = get_image_list(c)
    print(images)
    save_list = list()
    for img in images:
        if os.path.isfile(SAVE_DIR + img):
            print(SAVE_DIR + img, "is exist")
            continue
        c.request('GET', "/" + img)
        r = c.getresponse()
        print(img)
        print(r.status)
        if r.status == 200:
            with open(SAVE_DIR + img, "xb") as file:
                file.write(r.read())
                save_list.append(img)
    if len(save_list) > 0:
        token,secret = get_cred()
        send_message(user = "<twitter_user_name>", message = ",".join(save_list) ,oauth_token = token, oauth_secret = secret)

このあたり、もうちょっと進歩すべきなんだろうなぁと思っています。

来年は、クローリングのためのフレームワークをちゃんと使えるようになりたいですね。

終わりに

そんなわけで、ほんとに糞みたいなというかまさに糞そのものな記事を書きました。

ここまで読んだ暇人さん、きょうは12/25ですよ、ほかにやることないんですか!

ということで、Advent Calendar お疲れさまでした。

決めるということ

お仕事で決めるというのが苦手です。

いくつか触ってみて、これがいい!とはっきり言える場合は良いのですが、 ぶっちゃけどれでもよくね?みたいな時、 それぞれのメリット、デメリットを提示しつつ、 総合的にみるとどれも大差ないです。 というとき、いつもどれも大差ないですっていう結論を持っていわゆる偉い人に持っていこうとするのですが、 とりあえず(経験豊富な)同僚にいったん見せて会話をすると、どれでもよくても、これがいいという推しを作って持っていけと言われます。

いや、マジどれでもいいんすよね、みたいな話なんですが、その分野に詳しい我々がとりあえず推しを決めていかないと、偉い人はもっとわからないので判断ができないという話です。

なので、どれでもよくても、とりあえずこれでという推しを用意するのが大切なんですが、説明するうえでは当然、推す理由というのが必要になります。 その辺の理由をでっちあげるみたいなのがいまいち苦手です。

そういうの、どうやったらうまくなるんですかね。

CODE BLUE に行ってきた

セキュリティのしごとをしているわけでは全く無いのですが、個人的な興味から行ってきました。

サイバーセキュリティについて、人的資源から、アプリケーションの実装など、様々な分野のセキュリティに関する話が聞けた2日間でした。

中でも話が面白かったのは * SSRF の新時代 有名プログラミング言語のURLパーサを攻撃 * 商用ホワイトボックス暗号方式に対する鍵回復攻撃 * インサイドShell .NETハッキング技術を応用したPowerShell可視性の向上 * 基調講演 OSSによる自動車の自動運転化 あたりです。

人的資源の観点とか、実際の攻撃がどんなだったか、みたいな話は、ためになるんですが、面白いかどうかはまた別問題という感じです。

内容はきっと詳しい人が詳しく書くので行ってきましたにとどめておきます。間違ったこと書いてもなんですし。

DNS 温泉 4 に行ってきた

そのうち行ってみたいなぁと思いつつ、踏み出せずにいたのですが、 今回、補欠に並んで、繰り上がったら行くんだ!と思いつつ補欠に並んでいたら繰り上がりました。

資料はアップロードされているので、興味があれば。

今回のテーマは否定応答です。

DNSの基礎ということで、問い合わせの方法、間違えやすい用語のちょっとした解説があり、なるほどと思って聞いていたり。

そのあと、否定応答とは、みたいな話があるわけでもなく、当然のように進むRFCの解説。

(あ、これ事前にある程度調べておいて正解だったな、調べておかないと全くわからんやつだ。)

そうはいっても、DNSに詳しいわけではないので、フラグビットが……という話を聞きつつ、そうか、これはフラグ管理されてるのか、とパケットの構造を想像しつつ、詳細をググりながら聞く内容が続き。

「RFC2308の例示はわりと糞」みたいなことを知り。

否定応答のTTLSOA minimumと SOAレコードのTTLの小さいほうで決まる。みたいな話の中で、 SOATTLSOAの minimumは一致していることが多い(?)みたいなことを知り。

DNSSEC話ネタ的には KS ロールオーバー恐かったら DNSSEC ValidationをOFFにして10/11を迎えましょうみたいな話を聞くなど。

短時間で充実したDNS話が聞けました。

引っ越しました。

はじめに

思うところあって、引っ越しをしました。

物件

今まで、6畳にロフトベッドを置いて暮らしていました。 風呂、トイレも一緒でした。

ので、

ロフト付き、風呂、トイレ別という物件を探しました。

引っ越し

さすがに3月の引っ越しは高くて、 某有名全国規模の引っ越し屋さんに見積もりをお願いしたら24万円と言われ。 繁忙期じゃなければ8万くらいでいけるともいわれ。

地元の小さな(?)引っ越し屋さんに13万くらいでおねがいしました。

荷物整理

引っ越し屋さんの安いプランということで、時間指定ができないやつでした。

荷物が来るのが朝8時。。

起きるのが辛かったです。

終わりに

引っ越し祝い お待ちしてます。

Kensingtonはいいぞ

Kensingtonユーザです

Kensington ユーザをしばらく続けています。

ボールが大きいので操作しやすい。

さすがにFPSをプレイするような精度は出ませんが、通常使用には差し支えない程度の精度で動かせてはいます。

マインスイーパーくらいならクリックミスなしでプレイできますよ。

後はトラックボール全般に言えることですが、手首を動かさなくて良いのがとても楽です。

ばんくしさんにSlimBladeは……という記事を書いてたので、 ユーザ的にいいぞという話をしたかった。

最初に買ったのは

ExpertMouse でした。 標準で手首を支えるためのパッドがついてくるのですが、 これがとても微妙です。

取り付けたらとりはずせない。(むりに取り外そうとするとパッドと本体を接続するための部材のツメが折れます)

しかし、これがないと、本体の高さが結構高いので、手首の角度に若干無理を感じます。

なので、よさげな何かを探したほうが幸せかもしれません。 私は付属のものを利用していますが。(1回、表面がはがれてきたので、サポートに連絡したら新品を送ってもらえました、古いやつがうまく本体から取り外せない)

ExpertMouseの良いところはボールの周りにリングがついており、そのリングでスクロールができるところです。

次に買ったのは

新型っぽいSlimBlade というものです。

これは、ExpertMouseからセンサを1つ増やして、高さを下げたようなものです。 背が低いので、手首への負担は少なくなっています。

スクロールリングがなくなったのですが、ボールをスピンさせると、クリック感のある音がして、スクロールしてくれます。

最初はつかいやすいのかなぁと思っていましたが、慣れると快適です。

私の持ち方

親指を左クリックボタン、小指を右クリックボタンにおいて、人差し指+中指でボールを動かすように持っています。

みなさんどんな風に持ってるんですかね。

MOD PC な話を聞いてきた。

MOD PC、 簡潔にいうと、デコレーションPCでしょうか。

MOD PCにもいくつかバリエーションがあるようなのですが、今日は一般的なPCケースを加工するやつです。

ケースをデコレーションしたり、中身を見せるよう、デコレーションしたりそんな感じ。 個人的にはすごく、興味のない分野なのですが。

やってる人たちは大真面目もいいところで、世界大会とかやっていたり、CoolerMasterさんがわりと熱心にやっているようでした。

デコレーションですが、塩ビ板、アクリル板、アルミ板なんかを切り出してデコレーションしたり、カッティングシートを貼ったり そんなのと、本格水冷をいい感じに活かしたり、ケース本体を塗装したり。

そんな具合みたいです。

基本的に、いろいろふさいだりするので、空冷ではむずかしいのか、水冷をいい感じに使わないと映えるようにしづらいのか、みんな水冷でしたね。

加工方法などもいろいろおっしゃっていましたが、なんというか、DIY的なことをやっていれば当然な感じのことですが、普段そんなことやってない自作PC楽しんでるだけの人だと知らないことも多いのでためになったのではないかと。

ひたすらアクリルカッターを推していたのが印象深いです。アルミもアクリルカッターで切れます!という。

あと、アクリル板や塩ビ版は電熱線の入ったステンレスパイプを利用して熱で曲げるというのを見せていただきましたが、あれはアリかなぁと。 わりと簡単にできて楽しそうでした。

さぁ、みんなもPCケースをデコレーションしよう!みたいな。

いわゆる萌えPCみたいに絵を貼っておしまいよりは楽しいと思いますよ。