ブログに戻ります

ビジネスリサーチのためのGoogleドーキング:オペレーター、例、及びAPI自動化

Olivia Patel
Olivia Patel

Senior Cybersecurity Analyst

16-Sep-2026

TL;DR:

  • Google dorkingとは、検索演算子を使って公開された結果を絞り込むための検索語を作成することです。 このフレーズは敵対的に聞こえるかもしれませんが、同じ技術は市場調査、調達、コンテンツ監査、公共文書の発見に役立ちます。
  • 演算子の袋ではなく、ビジネスの質問から始めます。 site:filetype:、引用されたフレーズ、および除外は、明確な包含または除外のルールを表すときに最も有用です。
  • 結果をリードとして扱い、完全なデータベースとは見なさないでください。 検索演算子はインデクシングと取得の動作に制約されており、site:クエリでさえも網羅的なインデックスレポートではありません。
  • ホワイトハットの境界を守る。 公開ビジネス情報を検索します。認証情報、プライベートの個人データ、公開された管理面、またはアクセスを許可されていない資料をターゲットにしないでください。
  • Scrapeless Google Search APIを使用すると、繰り返し可能なクエリセットを自動化できます。 クエリ、マーケット、タイムスタンプ、ソースURL、タイトル、スニペット、および位置を保存し、正規化されたURLによって重複を排除します。

Google Dorkingとは?

Google dorkingは、通常のGoogleクエリを検索演算子と組み合わせて結果セットを制約するプラクティスです。高度なGoogle検索とも呼ばれます。

この技術は本質的にセキュリティ活動ではありません。研究者はこれを用いて公開価格ページ、調達文書、年次報告書、パートナー名簿、ポリシー更新、または特定のサイトセクションの下に公開されたコンテンツを見つけることができます。

演算子は単なるフィルターです。認可と意図は依然として重要です。検索エンジンに表示される結果は、プライベートシステムへのアクセス、コントロールの回避、制限されたデータの収集、著作権で保護された資料の再公開の許可を与えるものではありません。

ビジネスリサーチのための演算子チートシート

演算子の動作は変わる可能性があるため、自動化する前に正確なクエリをテストしてください。Googleの公式検索精緻化ガイドは、引用符、除外、およびsite:の使用を文書化しています。Google Search Centralは別途、サイト所有者に有用なさまざまな演算子を文書化しています。

演算子またはパターン 目的 ビジネス例
"exact phrase" フレーズを必要とする "request for proposal" logistics
site:example.com 結果をドメインまたはプレフィックスに制限する site:vendor.example pricing
filetype:pdf ファイルタイプを優先する filetype:pdf "annual report" robotics
-term 単語を除外する "partner program" -jobs
OR 2つの用語のいずれかを受け入れる "case study" (retail OR ecommerce)
site:example.com/path/ URLプレフィックスに制限する site:example.com/resources/ "market report"

括弧は控えめに使用し、ライブ結果を確認してください。検索エンジンは人間のクエリを解釈し、厳密なデータベースクエリ言語としては解釈しません。

Google Search Central演算子リファレンスは、デバッグに使用される演算子の中でsite:filetype:を文書化しています。そのガイダンスは重要です:演算子はインデクシングと取得の制限を受け、Search Consoleやファーストパーティーサイトのインベントリの代わりとはなりえません。

ホワイトハット境界

このガイドは公開ビジネスリサーチのためのものです。

良好なターゲットには以下が含まれます:

  • 公開された製品、価格、パートナー、文書ページ;
  • 公開されたRFP、ポリシー文書、報告書、申請;
  • 公開されたイベント、場所、ディレクトリページ;
  • コンテンツやインデクシング監査のための会社自身の公開ページ;
  • 競争分析や市場分析に必要な公開された言及。

パスワード、APIキー、個人記録、機密エクスポート、露出したバックアップ、プライベートカメラ、侵入用のログインパネル、またはその他の機密資料を見つけるためのクエリを設計しないでください。公開結果が秘密またはプライベートな記録を暴露していると思われる場合は、収集を停止し、影響を受ける組織の責任ある開示プロセスに従ってください。

また、適用可能なロボットの指示、サイトの利用規約、著作権、プライバシー法、およびレート制限も尊重してください。検索の発見は、下流の義務を消し去るものではありません。

ビジネスリサーチの例

公開価格およびパッケージングページを見つける

ベンダーを既に知っている場合は、ドメイン制限を使用します:

site:vendor.example (pricing OR plans OR enterprise)

このクエリは、現在の価格、比較、および企業ページを明らかにすることができます。すべてのプランがインデックスされているわけではなく、キャッシュされたスニペットがライブページを反映しているわけではないことを証明するものではありません。結果を開いて観察時間を記録してください。

公開RFPおよび調達文書を発見する

文書タイプを厳密なフレーズと業界用語と組み合わせます:

filetype:pdf "request for proposal" "data platform"

範囲を絞るために地域、組織の種類、または日付フレーズを追加します。リードをパイプラインに追加する前に、発行組織、締め切り、および文書バージョンをソースドメインで確認してください。

パートナーおよび統合エコシステムをマッピングする

ベンダーの公開パートナーまたは統合エリアを検索します:

site:vendor.example (partners OR integrations) -jobs

除外は、無関係な募集ページの一般的なソースを取り除きます。収集後にパートナー名を正規化してください;ロゴグリッドおよびマーケットプレイスのリストは、同じ会社を指す場合があります。

公共コンテンツセクションの監査

クエリをパスに制約します:

site:example.com/resources/ "web scraping"

これは、Googleがトピックに対して提供する可能性のあるセクションURLを発見するのに役立ちます。これは網羅的なカウントではありません。Googleの site: operator documentation は、結果がインデックス化されたURLを省略する可能性があること、そして単純な site: クエリは通常のクエリのように評価されないことを明示的に警告しています。

公共政策またはコンプライアンスの更新を監視する

権威あるドメインで正確な政策文言を検索します:

site:regulator.example filetype:pdf "effective date" "data processing"

ソースURLと公開または改訂日を保持してください。検索結果のスニペットは法的なテキストではありません。

クエリを体系的に作成する

研究テーブルから始めます。

コンポーネント 質問
主題 どの事業体または市場が範囲内ですか? 倉庫用ロボティクス
証拠 どの公共のアーティファクトが質問に答えるのですか? 年次報告書
ソースの境界 どのドメインやセクションが権威ありますか? 規制者またはベンダードメイン
形式 ドキュメントタイプは有用ですか? PDF
除外 何が予測可能なノイズを生み出しますか? 求人、キャリア
市場 どの国/言語コンテキストが重要ですか? アメリカ、英語

次に、発見の余地を残しつつ、最も狭いクエリを構築します。一度にすべてのオペレーターを追加すると、有用な結果が隠され、デバッグが不可能になることがあります。

人が読める目的、所有者、レビュー日、許可されたターゲットクラスを持つクエリレジストリを保持してください。そのレジストリは、クエリがAPIを通じてスケジュールされるときに特に重要になります。

Google DorkingをGoogle検索APIで自動化する

Scrapeless Google Search API は、クエリを構造化された検索レコードに変換します。APIは、研究チームが再利用可能な設定、ページネーション、重複排除、および手動のコピー&ペーストではなくエクスポートを必要とする場合に有用です。

以下のスクリプトは、許可リストにある公共ビジネスクエリのセットを実行し、制限された結果のオフセットに従い、URLを正規化し、CSVファイルを書き込みます。

前提条件:ライブリクエストには SCRAPELESS_API_KEY にScrapeless APIキーが必要です。許可リストに追加する前に、すべてのクエリの範囲と承認を確認してください。

python Copy
import csv
import os
from datetime import datetime, timezone
from urllib.parse import urlsplit, urlunsplit

import requests

API_URL = "https://api.scrapeless.com/api/v1/scraper/request"
QUERIES = [
    'filetype:pdf "request for proposal" "data platform"',
    'site:example.com/resources/ "market report"',
]


def canonical_url(raw: str) -> str:
    parts = urlsplit(raw)
    host = (parts.hostname or "").lower()
    if host.startswith("www."):
        host = host[4:]
    netloc = host
    if parts.port:
        netloc = f"{host}:{parts.port}"
    path = parts.path.rstrip("/") or "/"
    return urlunsplit((parts.scheme.lower(), netloc, path, parts.query, ""))


def organic_results(payload: dict) -> list[dict]:
    if isinstance(payload.get("organic_results"), list):
        return payload["organic_results"]
    data = payload.get("data", {})
    if isinstance(data, dict) and isinstance(data.get("organic_results"), list):
        return data["organic_results"]
    return []


def search(query: str, start: int) -> dict:
    response = requests.post(
        API_URL,
        headers={
            "x-api-token": os.environ["SCRAPELESS_API_KEY"],
            "Content-Type": "application/json",
        },
        json={
            "actor": "scraper.google.search",
            "input": {
                "q": query,
                "gl": "us",
                "hl": "en",
                "google_domain": "google.com",
                "start": start,
            },
        },
        timeout=60,
    )
    response.raise_for_status()
    return response.json()


def collect(queries: list[str], offsets=(0, 10)) -> list[dict]:
    observed_at = datetime.now(timezone.utc).isoformat()
    rows_by_url = {}
    for query in queries:
        for start in offsets:
            payload = search(query, start)
            for fallback, item in enumerate(organic_results(payload), start=start + 1):
                raw_url = item.get("link") or item.get("url") or ""
                if not raw_url.startswith(("http://", "https://")):
                    continue
                url = canonical_url(raw_url)
                candidate = {
                    "observed_at": observed_at,
                    "query": query,
                    "position": item.get("position", fallback),
                    "title": item.get("title", ""),
                    "snippet": item.get("snippet", ""),
                    "url": url,
                }
                previous = rows_by_url.get(url)
                if previous is None or candidate["position"] < previous["position"]:
                    rows_by_url[url] = candidate
    return sorted(rows_by_url.values(), key=lambda row: (row["query"], row["position"]))


def write_csv(rows: list[dict], path="business_research.csv") -> None:
    fields = ["observed_at", "query", "position", "title", "snippet", "url"]
    with open(path, "w", newline="", encoding="utf-8") as handle:
        writer = csv.DictWriter(handle, fieldnames=fields)
        writer.writeheader()
        writer.writerows(rows)


if __name__ == "__main__":
    write_csv(collect(QUERIES))

スクリプトはフラグメントを重複排除キーから除外しますが、クエリ文字列は保持します。なぜなら、クエリパラメータは実際に異なる公共リソースを特定できるからです。研究対象に応じて、UTMタグなどの既知の追跡パラメータを削除する場合もあります。

Google Search API documentation は、現在のリクエストフィールドの真実の源です。1件のリクエストをテストし、その実際の応答を確認してから、パーサーを最終決定してください。

ページネーション、重複排除、レビュー

ページネーションはサンプルを拡大しますが、網羅的なウェブデータベースを作成するわけではありません。クエリごとにオフセットを制限し、その深さをジョブ設定に記録します。

重複をさまざまなレベルで排除します:

  • 正確なカノニカルURL;
  • 既知の追跡パラメータのバリアント;
  • ダウンロード後のドキュメントチェックサム、収集が承認されている場合;
  • 分析中の正規化された組織とタイトル。

タイトルのみでマージしないでください。異なる組織はしばしば「年次報告書」や「提案依頼書」と名付けられたドキュメントを公開します。

結果が販売リード、コンプライアンス項目、または競争主張になる前に手動レビューキューを追加してください。検索スニペットはコンテキストを切り詰める可能性があり、日付は例を参照する場合があり、PDFは上書きされる可能性があります。

Scrapelessでスクレイピングを始める

Scrapelessを使ってウェブスクレイピングと自動化ワークフローを強化しましょう!
今日中にサインアップして、$5の無料クレジットをゲット — クレジットカード不要

Scrapeless Dashboardで今すぐ無料クレジットを獲得しましょう。

操作の制限

検索オペレーターは発見の手助けであり、保証ではありません。

  • インデックスのカバレッジは外部クエリの観点から不完全です。
  • オペレーターは結果タイプによって異なるふるまいをすることがあります。
  • スニペットは現在のページと一致しない場合があります。
  • 場所、言語、デバイス、時間が結果に影響します。
  • 同等のクエリを繰り返すと、重複するURLを生成する可能性があります。
  • 公開結果は、収集または再配布すべきでない資料を含む可能性があります。

クエリ設定をログに記録し、空の結果セットから失敗を別々にレビューします。リクエストエラーは不明を意味し、空の成功応答はそのサンプルクエリに対して結果が返されなかったことを意味します。

結論

Google dorkingは退屈なときに最も有用です:文書化された研究質問、少数のテストされた演算子、公共データの境界、およびレビュー可能なエクスポート。Scrapeless Google Search APIは、研究者の責任を変更することなく、繰り返し可能性と構造化された出力を追加します。

Google Search APIを開始し、価格ページで現在のアカウントレートを確認し、スケジュールを設定する前にすべての演算子をライブでテストしてください。

検索データサービスの補完的な比較については、Google Search APIガイドを読んでください。


公開検索をレビュー可能なデータセットに変える

倫理的な研究とデータパイプラインパターンのためにScrapelessコミュニティに参加してください:Discord · Telegram

app.scrapeless.comで無料のアカウントを作成し、承認された公共クエリを1つ実行し、スコープを拡大する前にエクスポートされたURLをレビューしてください。


FAQ

Q: Google dorkingは違法ですか?

検索演算子は通常の検索機能です。合法性とポリシーの遵守は、ターゲットとするもの、アクセス方法、収集するもの、および使用方法によります。このガイドは、公共のビジネス情報に関する承認された研究に限られています。

Q: ビジネス研究に役立つGoogle演算子はどれですか?

引用されたフレーズ、site:filetype:、マイナス記号を使った除外、および慎重にテストされたORクエリは、多くの価格設定、調達、報告、パートナー、およびコンテンツ監査のワークフローをカバーします。

Q: site:example.comはすべてのインデックスページを表示しますか?

いいえ。Googleは、site:の結果が必ずしも網羅的ではないと述べています。制御するサイトの権威あるインデックス診断が必要な場合は、Search Consoleまたはファーストパーティのサイトインベントリを使用してください。

Q: Google dorkクエリを自動化できますか?

はい。Google Search APIは、承認されたクエリを一貫した市場設定で実行し、構造化された記録を返すことができます。ページ付けを制約し、URLの重複を排除し、タイムスタンプを保持し、アクションを取る前に結果をレビューしてください。

Q: 自動化されたdorkリストに含めてはいけないものは何ですか?

資格情報、秘密、プライベートな個人データ、露出した管理システム、機密文書、またはアクセスを許可されていないソースをターゲットにしてはいけません。敏感な資料が予期せず現れた場合は、停止して責任ある開示を使用してください。

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ