LoginSignup
0
1

More than 1 year has passed since last update.

Google検索結果のWebクローリング - ちゃちゃっと半自動化

Last updated at Posted at 2022-12-27

伝えたいこと

Googleの検索結果からリンク先のURL文字列だけをちゃちゃっと抽出する方法です。
ブラウザの開発者ツールとsessionStorageを使います。

背景

いまだHTTPで動いている日本のWebサイトのURL(FQDNレベル)を収集したかった。
Google Dorksにて intitle:"index of" inurl:http after:2010 inurl:jp
このように検索した。1ページにおよそ検索結果が10サイトぐらい出てくる。
ここからURLを一つ一つ手動でコピペするのはかなりめんどくさい。
真っ先に考えることはAPIを使うことであるが、すぐには用意がなかった。
Seleniumなどブラウザ動作をエミュレートするプログラミングをしようと考えるが10分以内に終えたかった。
短期間にアクセスしすぎると、Google検索結果にてbot検知のGoogle reCAPTCHAが発動する懸念もある。
image.png

方法

ブラウザの開発者ツールにて少量のJavaScriptと'sessionStorage'で10分でURL 120個ぐらいを収集した。

%1. ブラウザの開発者ツールを開く(Safariの例)
%2. JavaScriptコンソールのタブに移動
%3. sessionStorageの初期化

sessionStorage.clear()

%4. sessionStorageに検索結果のURLリストを登録するために以下のJavaScriptをコンソールに入力して実行(Enter)
   (DOMのプロパティは今後Googleにて変更になる可能性があることに留意)

document.querySelectorAll("cite").forEach(
  function(currentValue,currentIndex) {
    sessionStorage.setItem(Number(location.href.match(/&start=(\d+)&/)[1])+currentIndex,currentValue.textContent);
  },
);

%5. 次のページボタンを手動で押す

%6. %4を再度実行

%7. %5と%6を繰り返す

%8. sessionStorageに登録したURLリストをJavaScriptコンソールにダンプ。200は適当に必要十分以上のバッファ値で、検索結果の総数より多い値を入力する。最下部"参考"のリンク先ではブラウザ開発者ツールの中でsessionStorageをテーブル表示する方法を紹介している。

var urls = []
for (let i = 0; i < 200; i++) {
  urls.push(sessionStorage.getItem(i));
}
console.log(urls);

image.png

この方法ならGoogle reCAPTCHAが表示されても手動で突破すればよい。
reCAPTCHAの入力と次のページめくり、JavaScriptコンソールへの4の実行は手動である半自動オペレーション。

%9. JavaScriptコンソールから結果をConsole.txtにExport(Safariの場合、Array出力部分を右クリックし上から4番目の"Save Selected"を選択)
image.png

%10. 結果の加工

cat Console.txt | grep http | sed -e 's/ › /\//g' | cut -d" " -f2- | sort | uniq |  sed -e 's/"//g'

まとめ

使い回すのであればPowerAutomateやSeleniumなどでクローリングの型化をするのが好ましいが
プログラミングの実行環境がすぐにインストールできない端末で即興でWeb Hackingをするには、
やはりブラウザ開発者ツールは便利!

参考

以上です。ご一読ありがとうございました。
ご参考になれば幸いです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1