アフィリエイトが流行っているせいか何なのかは分かりませんが、全く何の配慮もない、自己中なスクレイピング行為が増えていますね。
サーバーを管理していて、その手のログを見つけると、かなりイラっとします。特に、仕事が思うように進んでいない時は尚更です(笑)
最近は、サーバーリソースも潤沢ですし、多少の事であれば、生暖かい目で見守ることもよくあります。
しかし、あまりにもお行儀が悪いと、さすがにちょっと物申したくもなります。
Qiita 記事の紹介
Qiita を少しだけ探してみると、このような記事が見つかりました。
スクレイピングのプログラミングは、色んな事の勉強になりますし、良い教材だとは思います。
ただ、プログラムだけではなく、「マナー」「モラル」「ルール」といったことも、合わせて勉強して欲しいなと思います。
そういったものが欠けている人のスクレイピングは、銃や刃物を持って暴れているのと同じです。
1.ログを残そう
自分が作ったプログラムが、いつ・どのデータを収集したのかを把握できるよう、ログを残しましょう。
ログを残さないから、他人に迷惑をかけている事にも気付かないのだと思います。また、データ取得に失敗した時にもログを残すようにしておけば、素早く対応することもできます。
2.レスポンスヘッダを理解しよう
スクレイピングプログラムからのリクエストに対し、ウェブサーバーは様々な情報を、レスポンスとして返します。
HTTP の仕組みへの理解を深め、なるべく正しく解釈するようにしてください。
3.キャッシュを活用しよう
WordPress が重いのも、スクレイピングの負荷を減らすのも、「キャッシュ」の概念を理解し活用すれば、劇的に改善してみんなが幸せになれます。
変化のない同じデータを何度も何度も取得しても、誰も得はしません。
スクレイピング「だけ」できる人は迷惑
- ログの残し方が分からない
- セッションやクッキーの引き継ぎ方すら分からない(≒ HTTP の基本的な部分が理解できていない)
- 「キャッシュ」という言葉を聞いてもピンと来ない
どれか 1 つでも当てはまるなら、ハッキリ言いますが、勉強不足です。
スクレイピングには、比較的幅広い知識が要求されます。スクレイピング以外の部分も勉強しなければ、間違いなく他人に迷惑をかける事になると自覚してください。
連絡先を名乗ってくれると感じがいい
コンテンツによっては、目くじらを立てて怒るようなものではなく、「常識の範囲内なら、使ってもらっても良いですよ。」というものもあります。
UserAgent で、Mozilla/5.0 (compatible; ○○/1.0; +http://example.com/abuse.html)
とでも名乗ってくれていたら、「お!?礼儀正しいやる気のある人だ!」と、応援したくなる事もあるかもしれません。
逆に、自分の敷地へ、見知らぬ人が名乗らず(あるいは偽名を使って)入って来て、片っ端からものを漁られたらどうでしょうか。誰だって良い気分はしないはずです。
Chrome や Firefox を名乗っていても、それ以外の情報や挙動を少し眺めるだけで、すぐにスクレイピングだと分かる事も多いです。
robots.txt
を完璧に解釈してなんて事までは言いませんので1、その辺り、もう少し「逆の立場から」考えてみて欲しいですね。プログラミングより、ずっと簡単な事ではないでしょうか。
【ネタ】作者に物申すPHP
この記事で問題としているような、レベルの低いスクレイピングのプログラムは、そのほとんどが、固定 IP を持つレンタルサーバー上で動いていますので…
if (getenv('REMOTE_ADDR') === 'xxx.xxx.xxx.xxx') {
header('Content-Type: text/plain; charset=UTF-8', true, 403);
header('Connection: close');
echo <<<'__MESSAGE__'
ここに思いの丈を全力でぶつけよう!
__MESSAGE__;
exit;
}
これはもちろん冗談ですが、本気の相手には、相手に気づかれないよう、ゴミを食べてもらうのが一番ですね。
ムキになって対応して、イタチごっこになるのが、一番不毛だと思います。
余談
簡単に使える、高機能なスクレイピングツールも登場している中
- 令和の時代に HTTP/1.0
- IP アドレスがロ○ポップ
- UserAgent に「PHP」の文字
- UserAgent で Chrome や Firefox を名乗るものの、バージョンがやたら低い
- UserAgent を変えただけなので逆に目立っている
- もっともらしく HTTP referer を吐いてるものの、微妙に間違っている
- クッキーが処理できない(セッションを引き継げてない)
- サーバーを経由させただけ(分かりやすい port が開いている)
- API や RSS があるのに HTML 全取得
といったログを見ると、ちょっと和みます。
しかしながら、パクられ先で、思わず唸ってしまうような高度なサービスが構築されている事は皆無で、アフィリエイトの最低支払い額にも到達しなさそうなレベルのものが大半です。
「誰得?」と苦笑せざるを得ません。
- 転売が儲かるらしい ⇒ 転売ヤーだらけ
- アフィブログは WordPress が良いらしい ⇒ 猫も杓子も WordPress(しかも普通のレンタルサーバー)
- スクレイピングで楽に稼げるらしい ⇒ 基礎をすっ飛ばして、Q&Aサイトで答えだけを求める人が溢れる
ため息しか出ません。
-
もちろん解釈してもらうのがベストですが、
robots.txt
を見ないクローラーはたくさんありますし、それにいちいち腹を立てても仕方ないですので…。 ↩