Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pagodo — pagodo (被动式Google Dork) - 自动化Google黑客数据库抓取与搜索 | Kitploit
工具/GitHubGitHub/opsdisk/pagodo
OSINT (开源情报)侦察漏洞分析信息收集Web安全
GitHubopsdisk/pagodo

pagodo

pagodo (被动式Google Dork) - 自动化Google黑客数据库抓取与搜索

查看仓库
3.4k550191年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

pagodo - 被动式 Google 搜索语法

简介

pagodo 自动化 Google 搜索,寻找互联网上可能存在漏洞的网页和应用。它取代了通过 Web GUI 浏览器手动执行 Google 搜索语法的方式。

该工具包含两个部分。第一部分是 ghdb_scraper.py,用于获取最新的 Google 搜索语法;第二部分是 pagodo.py,利用 ghdb_scraper.py 收集到的信息。

核心 Google 搜索库现在使用了更灵活的 yagooglesearch,取代了原来的 googlesearch。请查看 yagooglesearch README 以了解该库的差异和功能的更深入说明。

本版本的 pagodo 还原生支持 HTTP(S) 和 SOCKS5 应用支持,因此如果你需要代理支持,不再需要将其包装在像 proxychains4 这样的工具中。你可以通过 -p 开关提供逗号分隔的代理字符串,指定多个代理以轮询方式使用。

什么是 Google 搜索语法?

Offensive Security 维护着 Google Hacking Database (GHDB),地址为:https://www.exploit-db.com/google-hacking-database。这是一个 Google 搜索的集合,称为搜索语法,可用于寻找潜在易受攻击的机器或被 Google 搜索引擎抓取到的其他敏感信息。

条款与条件

pagodo 的条款与条件与 yagooglesearch 中的相同。

本代码按原样提供,你完全负责如何使用它。抓取 Google 搜索结果可能违反其服务条款。另一个 Python Google 搜索库上有一些有趣的信息/讨论:

  • 原始问题
  • 一个回应
  • 作者创建了一个单独的条款与条件
  • ...其中包含指向此博客的链接

Google 推荐的方式是使用其 API。

安装

脚本适用于 Python 3.6+。克隆 Git 仓库并安装依赖。

git clone https://github.com/opsdisk/pagodo.git
cd pagodo
python3 -m venv .venv  # If using a virtual environment.
source .venv/bin/activate  # If using a virtual environment.
pip install --upgrade pip setuptools
pip install -r requirements.txt

ghdb_scraper.py

首先,pagodo.py 需要一个当前所有 Google 搜索语法的列表。仓库中包含一个 dorks/ 目录,其中包含上次运行 ghdb_scraper.py 时的当前搜索语法。建议在运行 pagodo.py 之前先运行 ghdb_scraper.py 以获取最新数据。dorks/ 目录包含:

  • all_google_dorks.txt 文件,包含所有 Google 搜索语法,每行一个
  • all_google_dorks.json 文件,是来自 GHDB 的 JSON 响应
  • 各个类别的搜索语法

搜索语法类别:

categories = {
    1: "Footholds",
    2: "File Containing Usernames",
    3: "Sensitives Directories",
    4: "Web Server Detection",
    5: "Vulnerable Files",
    6: "Vulnerable Servers",
    7: "Error Messages",
    8: "File Containing Juicy Info",
    9: "File Containing Passwords",
    10: "Sensitive Online Shopping Info",
    11: "Network or Vulnerability Data",
    12: "Pages Containing Login Portals",
    13: "Various Online devices",
    14: "Advisories and Vulnerabilities",
}

将 ghdb_scraper.py 作为脚本使用

将所有搜索语法写入 all_google_dorks.txt、all_google_dorks.json 以及单独的分类文件(如果你希望获得每个搜索语法的更多上下文数据)。

python ghdb_scraper.py -s -j -i

将 ghdb_scraper 作为模块使用

ghdb_scraper.retrieve_google_dorks() 函数返回一个字典,数据结构如下:

ghdb_dict = {
    "total_dorks": total_dorks,
    "extracted_dorks": extracted_dorks,
    "category_dict": category_dict,
}

使用 Python shell(如 python 或 ipython)探索数据:

import ghdb_scraper

dorks = ghdb_scraper.retrieve_google_dorks(save_all_dorks_to_file=True)
dorks.keys()
dorks["total_dorks"]

dorks["extracted_dorks"]

dorks["category_dict"].keys()

dorks["category_dict"][1]["category_name"]

pagodo.py

将 pagodo.py 作为脚本使用

python pagodo.py -d example.com -g dorks.txt

将 pagodo 作为模块使用

pagodo.Pagodo.go() 函数返回一个字典,数据结构如下(使用的搜索语法为虚构示例):

{
    "dorks": {
        "inurl:admin": {
            "urls_size": 3,
            "urls": [
                "https://github.com/marmelab/ng-admin",
                "https://github.com/settings/admin",
                "https://github.com/akveo/ngx-admin",
            ],
        },
        "inurl:gist": {
            "urls_size": 3,
            "urls": [
                "https://gist.github.com/",
                "https://gist.github.com/index",
                "https://github.com/defunkt/gist",
            ],
        },
    },
    "initiation_timestamp": "2021-08-27T11:35:30.638705",
    "completion_timestamp": "2021-08-27T11:36:42.349035",
}

使用 Python shell(如 python 或 ipython)探索数据:

import pagodo

pg = pagodo.Pagodo(
    google_dorks_file="dorks.txt",
    domain="github.com",
    max_search_result_urls_to_return_per_dork=3,
    save_pagodo_results_to_json_file=None,  # None = Auto-generate file name, otherwise pass a string for path and filename.
    save_urls_to_file=None,  # None = Auto-generate file name, otherwise pass a string for path and filename.
    verbosity=5,
)
pagodo_results_dict = pg.go()

pagodo_results_dict.keys()

pagodo_results_dict["initiation_timestamp"]

pagodo_results_dict["completion_timestamp"]

for key,value in pagodo_results_dict["dorks"].items():
    print(f"dork: {key}")
    for url in value["urls"]:
        print(url)

调优结果

限定到特定域名

-d 开关可用于将结果限定到特定域名,并作为 Google 搜索运算符:

site:github.com

搜索语法搜索之间的等待时间

  • -i - 指定搜索语法搜索之间的最小延迟(秒)。不要设置得太小,否则你的 IP 会很快收到 HTTP 429 错误。
  • -x - 指定搜索语法搜索之间的最大延迟(秒)。不要设置得太大,否则搜索会花费很长时间。

-i 和 -x 提供的值用于生成 20 个随机等待时间列表,这些时间会在不同的 Google 搜索语法搜索之间随机选取。

返回的结果数量

-m - 每个 Google 搜索语法返回的最大搜索结果总数。每次 Google 搜索请求最多可以拉回 100 个结果,因此如果你选择 -m 500,则每个搜索语法搜索需要执行 5 次单独的搜索查询,这会增加完成所需的时间。

保存输出

-o [可选的输出路径/results.json] - 将输出保存为 JSON 文件。如果你不指定文件名,将生成一个带有日期时间戳的文件。

-s [可选的输出路径/results.txt] - 将 URL 保存为文本文件。如果你不指定文件名,将生成一个带有日期时间戳的文件。

保存日志

--log [可选的日志文件路径/file.log] - 将日志保存到指定文件。如果你不指定文件名,将默认使用 pagodo.py.log 文件(位于 pagodo 目录根目录)。

Google 在阻止我!

尽可能快地执行超过 7300 次 Google 搜索请求是行不通的。Google 会合理地检测到这是一个机器人,并在一定时间内阻止你的 IP。一种解决方案是使用一组 HTTP(S)/SOCKS 代理,并将它们传递给 pagodo。

原生代理支持

使用 -p 开关,将逗号分隔的代理字符串传递给 pagodo。

python pagodo.py -g dorks.txt -p http://myproxy:8080,socks5h://127.0.0.1:9050,socks5h://127.0.0.1:9051

你甚至可以降低 -i 和 -x 的值,因为你将利用不同的代理 IP。传递给 pagodo 的代理按轮询方式选择。

proxychains4 支持

另一种解决方案是使用 proxychains4 进行轮询查找。

安装 proxychains4

apt install proxychains4 -y

编辑 /etc/proxychains4.conf 配置文件,以通过不同的代理服务器进行轮询查找。在下面的示例中,设置了两个不同的动态 socks 代理,本地监听端口不同(9050 和 9051)。

vim /etc/proxychains4.conf
round_robin
chain_len = 1
proxy_dns
remote_dns_subnet 224
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks4 127.0.0.1 9050
socks4 127.0.0.1 9051

在 pagodo.py 脚本前面加上 proxychains4,每次_请求_查找将通过不同的代理(因此源 IP 不同)。

proxychains4 python pagodo.py -g dorks/all_google_dorks.txt -o [optional/path/to/results.json] -s [optional/path/to/results.txt]

请注意,如果以下情况发生,这对 Google 来说可能不自然:

  1. 从 IP #1 模拟“浏览”到 google.com
  2. 从 IP #2 发出第一次搜索查询
  3. 从 IP #3 模拟点击“下一页”以发出第二次搜索查询
  4. 从 IP #1 模拟点击“下一页”以发出第三次搜索查询

因此,使用内置的 -p 代理支持更可取,因为正如 yagooglesearch 文档所述,“所提供的代理用于搜索的整个生命周期,使其看起来更像人类行为,而不是在搜索的不同部分轮换不同的代理。”

许可证

在 GNU 通用公共许可证 v3.0 下分发。更多信息请参见 LICENSE。

联系方式

@opsdisk

项目链接:https://github.com/opsdisk/pagodo

下载工具