如何检测网页抓取:日志、IP 查询与盲区
如何在访问日志中检测网页抓取:CCBot、AhrefsBot、Tor 出口和云服务器的真实查询结果,追查一条自称 Googlebot 的请求,以及 IP 看不到的部分。

抓取工具的一次请求不过是一个 GET。它和日志中其他每一行一样,有状态码、路径和 User-Agent。抓取只会在数百行日志和整个网络层面显现出来:云服务器上的一个 Python 脚本、由 Puppeteer 或 Playwright 驱动的无头浏览器、AI 训练爬虫、AhrefsBot 之类的 SEO 爬虫,或者按 GB 出售轮换代理的抓取 API。
2026-10-08,我们让七个抓取类 IP 经过 GeoIPHub API。四个经验证的爬虫(Googlebot、CCBot、ClaudeBot、AhrefsBot)全部来自托管网络,评分均为 allow。一台普通的 Linode 云服务器评分为 10,同样是 allow,而一个 Tor 出口和一台 Mullvad VPN 服务器的评分都是 100,处置为 block。IP 给您的是网络信息,抓取的结论来自您的日志。
下面我们将展示如何在访问日志中检测抓取机器人,追查一条自称 Googlebot 的日志,说明 IP 数据在哪里会失明,并把您的发现对应到放行、限速、挑战或拦截。如果您想先逐个了解 IP 信号,我们的总览文章讲解了按 IP 检测机器人,逐个信号详解;本文将这些信号应用到抓取场景。

如何检测网页抓取:速率、路径、客户端和网络
要检测网页抓取,请检查四组信号:客户端请求的快慢(速率),请求什么以及按什么顺序(路径),它如何自我介绍(客户端),以及它从哪里连接(网络)。OWASP 把抓取列为独立的自动化威胁 OAT-011,定义为收集“应用程序内容和/或其他数据以便在别处使用”(OWASP 自动化威胁)。这个定义讲的是意图,而意图是看不到的。能看到的就是这四组信号。
- 速率。 每个 IP 以及每个网络的每分钟请求数。这里的网络指 ASN,或者为了更细的分组,IPv4 的 /24 和 IPv6 的 /64。抓取工具常常全天候以平稳的速率运行;人则是一阵一阵地访问,还要睡觉。
- 路径。 按顺序走过的列表和分页 URL、从头到尾读完的站点地图、只访问商品或价格页面,而且完全没有 CSS、JavaScript 或图片请求。
- 客户端。 User-Agent 声明、缺失的
Accept-Language头、请求之间不保留 Cookie,以及自动化标记。在浏览器中,当 Chrome 以--headless或--enable-automation运行时,navigator.webdriver为 true(MDN),不过有决心的抓取者会把它抹掉。在边缘层,TLS 指纹(JA3 或 JA4)往往能看出,一个自称 Chrome 的 User-Agent 背后其实是 HTTP 库。 - 网络。 IP 查询返回的内容:数据中心(托管)IP(API 将其标记为
detection.is_hosting)、经验证的爬虫、Tor、VPN 或扫描器。
网页抓取检测的难点在于,每个信号都有一个无辜的孪生兄弟。拉取您源站的 CDN、可用性监控、同一个 NAT 地址后面的办公室和 RSS 阅读器,在某一个维度上看都很奇怪。抓取的证据来自彼此吻合的信号。
| 信号 | 抓取工具的样子 | 无辜的相似情形 |
|---|---|---|
| 每个 IP 或网络的速率 | 连续数小时每 1 到 2 秒一个稳定请求 | 办公室 NAT、CGNAT、CDN 或监控服务 |
| 页面顺序 | page=1, 2, 3 … 依次抓取,或按文件顺序读取站点地图 | 真人翻看搜索结果,但页数少得多 |
| 静态资源 | 只有 HTML,没有 CSS、JS 或图片 | 订阅阅读器、链接预览、文本浏览器 |
| 会话深度 | 单个会话中有数千个页面 | 内部 QA 爬取或您自己的 SEO 审计工具 |
| User-Agent | 爬虫名称却来自该爬虫不使用的网络 | 位于最近几天新增范围内的真实爬虫 |
| 网络 | 数据中心、Tor 或 VPN 出口 | 企业 VPN、AI 购物代理、云端托管的工具 |
如何判断您的网站是否被抓取:先读访问日志
要判断您的网站是否正在被抓取,请按网络对访问日志分组,找出抓取大量页面、按顺序抓取、而且从不加载浏览器会加载的静态资源的客户端。外部迹象往往先出现:您的商品文案或价格出现在其他网站上,或者列表页的带宽和服务器成本上升而转化率持平。要从外部核查,可以用引号搜索您页面上的一句有特色的话,并留意价格变动后几小时内是否在聚合网站上重新出现。是谁干的,要看日志。
下面是它在 combined 格式访问日志中的样子。这些是示意值,并非真实流量。 45.33.32.156 是 Nmap 在 Linode 上的公开测试主机,它并没有发出这些请求;因为我们不能公开真实访客的 IP,所以用它来代表“一台云服务器”。
# illustrative values, not real traffic
45.33.32.156 - - [08/Oct/2026:03:14:07 +0000] "GET /products?page=34 HTTP/1.1" 200 48211 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
45.33.32.156 - - [08/Oct/2026:03:14:08 +0000] "GET /products?page=35 HTTP/1.1" 200 47960 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
45.33.32.156 - - [08/Oct/2026:03:14:10 +0000] "GET /products?page=36 HTTP/1.1" 200 48377 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
45.33.32.156 - - [08/Oct/2026:03:14:11 +0000] "GET /products?page=37 HTTP/1.1" 200 48102 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
45.33.32.156 - - [08/Oct/2026:03:14:13 +0000] "GET /products?page=38 HTTP/1.1" 200 47815 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
45.33.32.156 - - [08/Oct/2026:03:14:14 +0000] "GET /products?page=39 HTTP/1.1" 200 48290 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
有三点很突出。页面一页接一页地递增,间隔 1 到 2 秒,时间是凌晨 3 点。没有来源页,它们之间也没有一个 .css 或 .js 请求。而且这个客户端自称 Googlebot,接下来的章节会对此进行验证。
找出这类客户端不需要日志平台。以下单行命令适用于标准的 combined 日志;请先在一个繁忙的小时上运行:
# Busiest client IPs
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
# Busiest IPv4 /24 networks (rotating scrapers often stay inside one block)
awk '{split($1,o,"."); print o[1]"."o[2]"."o[3]".0/24"}' access.log | sort | uniq -c | sort -rn | head -20
# Busiest User-Agents
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20
# Clients with more than 100 page requests and zero asset requests
awk '{ if ($7 ~ /\.(css|js|png|jpe?g|webp|svg|woff2?)(\?|$)/) a[$1]++; else p[$1]++ }
END { for (ip in p) if (!(ip in a) && p[ip] > 100) print p[ip], ip }' access.log | sort -rn
按以下清单逐项分析输出:
- 被访问的页面。 繁忙的客户端是否集中在列表、价格、搜索结果或站点地图上?
- 先看每个 IP 的速率,再看每个网络的速率。 在补充 IP 信息之后,按 ASN 汇总请求数;同一个 ASN 中有 50 个托管地址在抓取相同的页面,很可能是同一个行为者。
- 会话深度。 每个会话数百个页面,却没有使用购物车、登录或搜索框。
- 顺序。 分页或站点地图 URL 被按顺序抓取。
- 静态资源。 只有 HTML,没有 CSS、JavaScript、字体或图片。
- 爬虫声明。 每一个 Googlebot、Bingbot、GPTBot 或 ClaudeBot 的 User-Agent 都要列入清单,按 IP 验证。
- 自动化标记。 库类 User-Agent(
python-requests、curl、Go-http-client)和无头浏览器的提示。
抓取工具 IP 地址:GeoIPHub 真实查询的结果
抓取工具的 IP 地址可分为几类网络,查询告诉您的是您面对的是哪一类,而不是这个请求是不是抓取。在我们的 GeoIPHub 查询中,经验证的爬虫评分为 0 到 23(allow);Tor 和 VPN 出口评分为 100(block)。我们在 2026-10-08 对每一类各做了一次匿名查询,间隔四秒:
curl -s https://api.geoiphub.com/v1/lookup/18.97.14.81
| IP | 机器人类别 | 网络(ASN) | 关键标记 | fraud_score | recommended_action | detection_methods |
|---|---|---|---|---|---|---|
| 18.97.14.81 | 爬虫(类别:archiver) | Amazon AMAZON-AES (AS14618) | is_hosting: true, crawler.name: CCBot, verified: true | 0 | allow | datacenter_ip, rdns_hosting, verified_crawler |
| 216.73.216.10 | 爬虫(类别:ai) | Amazon AMAZON-02 (AS16509) | is_hosting: true, crawler.name: ClaudeBot, verified: true | 0 | allow | datacenter_ip, no_ptr_datacenter, verified_crawler |
| 5.39.1.230 | 爬虫(类别:seo) | OVH (AS16276) | crawler.name: AhrefsBot, verified: true, is_abusive: true | 23 | allow | abusive_listed, datacenter_blocklisted, no_ptr_datacenter, verified_crawler |
| 192.178.4.40 | 爬虫(类别:search_engine) | Google (AS15169) | crawler.name: Googlebot, verified: true | 0 | allow | datacenter_ip, no_ptr_datacenter, verified_crawler |
| 45.33.32.156 | 普通云服务器 | Akamai Connected Cloud, Linode (AS63949) | is_hosting: true, crawler.name: none | 10 | allow | datacenter_ip |
| 185.220.101.47 | Tor 出口 | Stiftung Erneuerbare Freiheit (AS60729) | is_tor: true, is_spammer: true | 100 | block | tor_exit, datacenter_blocklisted, rdns_tor, known_spammer |
| 185.213.155.73 | 商业 VPN | 31173 Services AB (AS39351) | is_vpn: true, vpn_provider: Mullvad, vpn_confidence: 95 | 100 | block | known_vpn_server, wireguard_open, datacenter_with_vpn_proxy, no_ptr_datacenter |
这些只是某一天的单次查询,而不是基准测试,数值会随网段变化而变动。有一个已知缺口:Googlebot 和 AhrefsBot 两行中的 no_ptr_datacenter 是我们数据的问题,而不是它们的问题。对于某些爬虫网段,API 没有存储 PTR 记录,尽管反向 DNS 是可以解析的(192.178.4.40 解析为 crawl-192-178-4-40.googlebot.com)。对于 ClaudeBot 的 IP,这个信号是准确的:它确实没有反向 DNS。
下面是 CCBot 的响应,做了精简,但保留了真实数值和原有嵌套结构:
{
"ip": "18.97.14.81",
"asn": {
"asn": 14618,
"org": "AMAZON-AES - Amazon.com, Inc.",
"asn_type": "hosting"
},
"detection": { "is_hosting": true, "is_vpn": false, "is_tor": false },
"threat": {
"is_crawler": true,
"crawler": {
"verified": true,
"name": "CCBot",
"operator": "CommonCrawl",
"category": "archiver",
"verification_method": "ip_range_list"
}
},
"scoring": {
"fraud_score": 0,
"recommended_action": "allow",
"detection_methods": ["datacenter_ip", "rdns_hosting", "verified_crawler"]
}
}
Common Crawl 自己的爬虫运行在 AWS 上,评分依然是 0。该 IP 位于 18.97.14.80/29,这是 Common Crawl 在其 ccbot.json 文件中公布的范围,而我们评分中的已验证爬虫调整项(−28.5)抵消了数据中心信号。GeoIPHub 以这种方式核对 19 个官方爬虫范围源,包括 Google、Bing、OpenAI、Anthropic、Common Crawl 和 Ahrefs 的。至于您是否愿意让一个其数据用于训练 AI 模型的爬虫(如 CCBot 或 GPTBot)读取您的页面,是一个策略问题。查询只能确定它是谁。
AhrefsBot 是个意外。它被验证通过了(5.39.1.230 位于 Ahrefs 公布的爬虫范围中的 5.39.1.224/27),但同时也是 is_abusive: true,方法中有 abusive_listed,评分为 23,仍然是 allow。我们还没有追查是哪个列表标记了它。无论如何,结论都成立:“已验证”告诉您爬虫是谁,而不是您是否想要它。一个为竞争对手的反向链接报告绘制您网站地图的 SEO 爬虫,依然是在抓取,只不过是公开声明的。
抓取日志中的爬虫冒充:追查一行日志
User-Agent 中写着 Googlebot 却来自云服务器的请求,是一个未经验证的声明。GeoIPHub 能告诉您该 IP 不在 Google 的范围内,但与 User-Agent 的比对要在您自己的代码里进行,因为查询永远看不到您的请求头。以示意日志的第四行为例:45.33.32.156,GET /products?page=37,User-Agent 为 Googlebot/2.1。
- 查询 IP。 真实查询返回 ASN 63949,Akamai Connected Cloud (Linode),
detection.is_hosting: true,threat.crawler.name: "none",verified: false,fraud_score为 10,allow,方法为["datacenter_ip"]。 - 比对声明。 您的代码将 User-Agent 标识与
threat.crawler.verified和threat.crawler.name进行比对。 - 决定。 UA 称是 Googlebot;而该 IP 不在任何 Google 范围内。这就是“未验证为 Googlebot”。对其限速或发起挑战。挑战(CAPTCHA 或 JavaScript 检查)是您对 API 的
step_up处置所采取的行动。不要直接称它为假:在我们的数据中,新的 Google 范围最多可能需要约两天才能通过验证,因为范围文件每天抓取一次,查询数据库每天重建一次。 - 对照检查。 真正的 Googlebot
192.178.4.40返回verified: true、name: "Googlebot"、verification_method: "ip_range_list",评分为 0。
Google 记录了两种自行完成同样检查的方法:对 IP 做反向 DNS,再对主机名做正向查询;或者与其公布的范围文件(如 common-crawlers.json)进行匹配(Google Search Central)。代码中的比对如下:
// Map User-Agent tokens to the crawler names the API returns.
// They don't always match: OpenAI's "ChatGPT-User" comes back as "ChatGPTUser".
const CRAWLER_NAMES = {
"Googlebot": "Googlebot",
"GPTBot": "GPTBot",
"CCBot": "CCBot",
"ClaudeBot": "ClaudeBot",
"AhrefsBot": "AhrefsBot",
"ChatGPT-User": "ChatGPTUser",
};
async function classifyRequest(ip, userAgent) {
const res = await fetch(`https://api.geoiphub.com/v1/lookup/${ip}`, {
headers: { "x-api-key": process.env.GEOIPHUB_API_KEY },
});
const { threat, scoring } = await res.json();
const token = Object.keys(CRAWLER_NAMES).find((t) => userAgent.includes(t));
if (token) {
const ok = threat.crawler.verified && threat.crawler.name === CRAWLER_NAMES[token];
return ok ? "allow_crawler" : "unverified_crawler_claim"; // rate-limit or challenge
}
return scoring.recommended_action; // allow, review, step_up or block
}
这就是评分说放行而模式说是抓取工具的情形。仅看 IP,这个请求是 10 分、allow,因为云服务器本身只是一个弱信号。抓取的结论来自评分看不到的三件事:UA 不匹配、稳定的速率,以及逐页抓取。关于 Google 的完整流程,请参阅如何通过反向 DNS 和 Google 的范围文件验证 Googlebot;关于 GPTBot、ClaudeBot 和签名代理,请参阅如何通过 IP、反向 DNS 和 Web Bot Auth 验证 AI 爬虫。
IP 数据看不到的部分:住宅代理和真实浏览器
IP 数据看不到那些通过住宅或移动代理转发的抓取工具,而且 GeoIPHub 不检测住宅代理;is_residential_proxy 字段只是基于 ASN 的粗略推断,请当作没有这个信号。住宅代理网络会让每个请求经过某人的家庭网络。在 IP 层面,请求看起来就像那个家庭:消费者 ISP、真实的城市、没有托管标记、评分干净。
轮换让情况更糟。一个代理池可以让每个请求使用一个新的家庭 IP,所以按 IP 计数的计数器永远升不上去。移动代理与真实手机共用运营商 IP,而 IPv6 抓取工具可以在整个 /64 内循环,而无需接触新的网络。
真实浏览器是第二个盲区。用 Playwright 脚本在办公室或家庭网络上驱动 Chrome,发出的 IP、TLS 握手和静态资源请求,与隔壁工位上的人没有区别。有些无头配置会暴露自己;调优过的则不会。
仍然能暴露这些抓取者的,是跨请求的模式:
| 抓取方式 | IP 显示的内容 | 仍能暴露它的线索 |
|---|---|---|
| 轮换住宅代理 | 消费者 ISP,评分干净 | 许多 IP 共享同一种页面顺序、同一种时间节奏和同一种指纹 |
| 移动代理 | 与真实手机共用的运营商 IP | 没有任何手机用户会产生的会话深度和路径顺序 |
| 在 /64 内轮换 IPv6 | 每个请求一个新地址 | 按 /64 而不是按地址统计请求 |
| 家庭或办公室线路上的无头浏览器 | 普通的接入网络 | 自动化标记、TLS 指纹、没有连续的 Cookie |
| 任何跟随每一条链接的抓取工具 | 无论它使用什么网络 | 对隐藏链接的请求:用 CSS 隐藏、没有访客能看到的链接;任何请求它的客户端都是在盲目跟随链接 |
如果您设置了隐藏链接,请在 robots.txt 中禁止其路径,这样遵守该文件的爬虫就永远不会触碰它。有两篇文章更深入地讨论了与 IP 并列的其他层面。请阅读为什么设备指纹和 IP 情报搭配使用效果最好,以及住宅代理欺诈检测中关于查询能显示什么、不能显示什么的内容。
抓取、爬取与 API 滥用
爬取是公开声明且可验证的,抓取是获取您的内容或数据,而且往往不声明身份,API 滥用则是对您的端点发起超出条款或限额的脚本化调用。三者之间的界线在于行为和身份,而不是技术:Googlebot 和价格抓取工具可以在同一个云上运行同一个 HTTP 库。
| 流量类型 | 目标 | 如何表明身份 | 检查什么 |
|---|---|---|---|
| 爬取 | 用于搜索索引、存档或 AI 模型的页面 | 具名的 User-Agent 和公布的 IP 范围 | IP 是否在运营方的范围内;是否遵守 robots.txt |
| 抓取 | 特定的内容或数据:价格、列表、文章 | 通常是浏览器 UA 或借用的爬虫名称 | 速率、页面顺序、缺失的静态资源、UA 与已验证爬虫是否一致 |
| API 滥用 | 您的 JSON 端点,通常在网站背后 | API 密钥、会话令牌或什么都没有 | 每个密钥和每个网络的调用量、超出正常应用流程的端点 |
经验证的爬虫仍然可能在抓取,AhrefsBot 就是例子,而抓取工具也可能看起来像爬虫。这就是为什么下一节一开始只放行经验证的那些。
如何在不拦截搜索爬虫的前提下防止网页抓取
要在不拦截搜索爬虫的前提下防止网页抓取,请先放行经验证的爬虫,再按网络限速,对行为不像浏览器的客户端发起挑战,只拦截您已确认的对象。GeoIPHub 的评分区间给出了 IP 一侧的依据:25 以内 allow,50 以内 review,75 以内 step_up,75 以上 block。顺序很重要。如果先执行一刀切的数据中心封禁,就会误伤我们表中的 Googlebot、CCBot、ClaudeBot 和 AhrefsBot,因为这四个都来自托管网络。
- 放行经验证的爬虫,条件是
threat.crawler.verified为 true 且crawler.name与 User-Agent 标识相符。然后对每个爬虫应用您自己的策略。对于 AI 爬虫,我们对 GPTBot、OAI-SearchBot 和 ChatGPT-User 的比较说明了如何在拦截训练的同时不退出 AI 搜索。 - 复用 IP 规则。 评分区间、Tor 处理和按前缀的速率限制,对抓取工具和对任何机器人的做法一样;总览文章中有说明。把数据中心 IP 当作加权输入,而不是封禁理由,因为托管也涵盖 AI 代理、企业代理和您自己的工具(参见什么是数据中心 IP 地址)。
- 对抓取者想要的页面按 ASN 限速。 在同一个托管服务商内轮换的代理池,会低于任何按 IP 的限制,但在列表、搜索和价格页面上按 ASN 的计数器能把它们加总起来。给大型云厂商更高的上限,因为许多互不相关的客户共用一个 ASN。
- 限制分页,并把完整列表放在登录之后。 只向匿名访客提供固定数量的列表页。账户墙会把每个抓取工具变成您可以统计并关闭的账户。
- 为页面所调用的 JSON 端点设置每个密钥的配额。 抓取工具常常跳过 HTML,直接调用背后的 API,因此请发放密钥或会话令牌,并限制每个密钥的调用次数。
- 增加机器人管理或 WAF 层,以获取日志中没有的客户端信号,例如边缘层的 TLS 指纹和 JavaScript 检查。
- 对住宅流量使用行为规则,因为 IP 在这里帮不上忙。
这些响应构成一个阶梯:放行、限速、挑战、拦截。有些网站还会增加焦油坑(tarpit),即放慢对疑似抓取工具的响应,或者向已被归类的流量提供诱饵内容,例如被篡改的价格。如果分类有误,这两种做法都会让您付出代价,所以只对您本来就会拦截的流量使用。
| 信号 | 默认处置 |
|---|---|
| threat.crawler.verified 且 User-Agent 相符 | 放行,然后应用您对每个爬虫的策略 |
| 爬虫 User-Agent,crawler.name 为 "none" | 限速或发起挑战 |
| 同一 ASN 中 20 个以上 IP 呈现相同页面顺序 | 对该 ASN 限速,然后发起挑战 |
| 仅 HTML,100 个以上页面,没有 CSS 或 JS | 发起挑战,无论 IP 显示什么 |
| 命中了任何真人都看不到的链接 | 拦截该客户端 |
| 消费者 ISP,评分干净,模式像抓取工具 | 行为规则和指纹 |
对于仅涉及 IP 的情形(Tor、中继、扫描器、IPv6 前缀),请使用我们的按 IP 检测机器人指南中的处置对照表。
那 robots.txt 呢?它只是请求,而不会强制执行。机器人排除标准 RFC 9309 指出,其规则“不是一种访问授权形式”(RFC 9309)。把它留给遵守它的爬虫,其他一切都在您的服务器上强制执行。我们的拦截 AI 爬虫指南用 nginx 和 Express 代码展示了这一强制层。
从昨天的日志开始。导出没有加载任何静态资源的 50 个最繁忙的客户端,把每一个粘贴到免费 IP 查询中(无密钥每分钟 30 次,免费密钥每天 1,500 次),并按上面查询表中的类别分类。剩下那些繁忙、位于消费者网络的客户端,就是您的行为规则下一步要处理的对象。
常见问题
如何拦截 GPTBot 或 CCBot 这类 AI 抓取工具?
先从 robots.txt 入手:GPTBot 和 CCBot 都遵守它,所以针对它们标识的 Disallow 规则可以拦住这些声明身份的爬虫。robots.txt 只是请求,而不是访问控制(RFC 9309 指出其规则不是一种访问授权形式),因此还要在服务器上强制执行:根据每个爬虫公布的 IP 范围进行验证,把在这些范围之外使用该名称的客户端视为未经验证。OpenAI 运行着多个分工不同的机器人;我们的文章《GPTBot vs OAI-SearchBot vs ChatGPT-User》说明了如果想留在 ChatGPT 搜索中,应该拦截哪一个。
每分钟多少请求才算抓取?
没有通用的数字。先在正常的一天测出您自己的人类访问基线,IPv4 按 /24、IPv6 按 /64 统计,然后再看远高于基线的网络。仅凭速率也会误标办公室 NAT、CGNAT 和监控服务,所以只有当它同时伴随按顺序抓取页面且没有静态资源请求时,才把高速率视为抓取。
能彻底阻止网页抓取吗?
不能。浏览器能渲染的任何内容,有决心的抓取者都能复制,包括通过住宅代理和真实浏览器。目标是让抓取变得缓慢、昂贵且可见:验证爬虫,按网络限速,对行为不像浏览器的客户端发起挑战,并把高价值数据放在登录或 API 密钥之后。
封禁数据中心 IP 能阻止抓取吗?
只能部分阻止。它能拦住运行在廉价云服务器上的抓取工具,但也会拦截经验证的爬虫,除非您先放行它们:在我们 2026-10-08 的查询中,AWS 上的 CCBot 评分为 0(allow),真正的 Googlebot 评分也是 0(allow),它们都位于托管网络。一台普通的 Linode 服务器评分为 10,同样是 allow,所以仅凭评分不会拦下它。租用住宅代理的抓取工具则会完全绕过数据中心封禁。
IP 查询能告诉我某个 IP 是抓取工具吗?
不能。查询告诉您的是网络类别和风险:经验证的爬虫、数据中心服务器、Tor 出口或 VPN。该 IP 是否正在抓取您,要从您的日志里看:它的请求速率、抓取页面的顺序、是否加载静态资源,以及它的 User-Agent 是否与查询所验证的爬虫相符。
如何得知抓取工具是否在使用住宅代理?
从 IP 本身看不出来,GeoIPHub 也不检测住宅代理。要找的是许多共享同一种会话模式的消费者 IP:相同的页面顺序、相同的请求间隔、相同缺失的静态资源,以及相似的 TLS 或设备指纹。暴露抓取者的是跨地址的模式,而不是任何单一地址。
GeoIPHub API 背后的团队
由 GeoIPHub 团队撰写,即构建 GeoIPHub IP 情报 API 及其扫描器的团队。草稿在 AI 辅助下完成,并由团队编辑;除非标注为示例,API 示例均为针对线上 API 的真实查询。


