返回博客

Google Dorking用于商业研究:操作符、示例和API自动化

Olivia Patel
Olivia Patel

Senior Cybersecurity Analyst

16-Sep-2026

TL;DR:

  • Google dorking 意味着使用运算符构建搜索词以缩小公共结果。 这个短语听起来具有对抗性,但相同的技术对市场调研、采购、内容审计和公共文档发现都是有用的。
  • 从商业问题开始,而不是一堆运算符。 site:filetype:、引用的短语和排除项在表达明确的包含或排除规则时最有用。
  • 将结果视为潜在客户,而不是完整的数据库。 搜索运算符受到索引和检索行为的限制;即使是 site: 查询也并不是详尽的索引报告。
  • 保持白帽界限。 搜索公共商业信息。不要针对凭证、私人个人数据、暴露的管理员界面或您没有权限访问的材料。
  • 无抓取的 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 接受两个术语中的任意一个 "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"

这对于发现谷歌可能为某个主题提供的部分URL非常有用。这并不是一个详尽的统计。谷歌的site: 操作符文档明确警告,结果可能会省略索引的URL,并且裸site:查询的排名方式与普通查询不同。

监控公共政策或合规更新

在权威域名上搜索确切的政策语言:

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

保留来源URL和发布日期或修订日期。搜索结果摘要并不是法律文本。

系统化地构建查询

从研究表格开始。

组件 问题 示例
主题 什么实体或市场在范围内? 仓库机器人
证据 哪个公共文献可以回答该问题? 年度报告
来源边界 哪些域名或部分是权威的? 监管机构或供应商域名
格式 文档类型是否有用? PDF
排除项 什么会产生可预测的噪声? 职位,职业
市场 哪个国家/语言上下文重要? 美国,英语

然后构建最窄的查询,同时仍然留有发现的空间。一次性添加每个操作符可能会隐藏有用的结果并使调试变得不可能。

保持查询注册表,包括易于阅读的目的、所有者、审核日期和允许的目标类别。当通过API调度查询时,该注册表特别重要。

使用谷歌搜索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文档 是当前请求字段的真实信息来源。在最终确定解析器之前,测试一个请求并检查其实际响应。

分页、去重和审核

分页扩展了样本;它并不创建详尽的网络数据库。限制每个查询的偏移量,并在作业配置中记录该深度。

在多个层面去重:

  • 精确的标准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 创建一个免费账户,运行一个经批准的公共查询,并在扩大范围之前审查导出的网址。


常见问题解答

问:Google dorking 非法的吗?

搜索操作符是普通的搜索功能。合法性和政策合规性取决于你目标是什么、如何访问它、你收集了什么以及你如何使用它。本指南仅限于对公共商业信息的授权研究。

问:哪些 Google 操作符对商业研究有用?

引用短语、site:filetype:、带负号的排除以及经过仔细测试的 OR 查询涵盖了许多定价、采购、报告、合作伙伴和内容审核工作流程。

问:site:example.com 是否显示每个已索引的页面?

不。Google 表示 site: 结果不一定是详尽无遗的。当你需要对自己控制的网站进行权威的索引诊断时,请使用 Search Console 或第一方网站清单。

问:我可以自动化 Google dork 查询吗?

可以。Google Search API 可以以一致的市场设置运行批准的查询并返回结构化记录。边界分页、去重网址、保留时间戳,并在采取行动之前审查结果。

问:自动化的 dork 列表中绝对不应包括什么?

不要针对凭据、秘密、私人个人数据、暴露的管理系统、机密文件或任何你没有授权访问的来源。如果敏感材料意外出现,请停止并使用负责任的披露。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录