跳至正文
网络安全

如何检测网页抓取:日志、IP 查询与盲区

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

作者GeoIPHub 团队发布于阅读时长阅读约 28 分钟
一排排数据方块被抽离,象征网页抓取

抓取工具的一次请求不过是一个 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,所以用它来代表“一台云服务器”。

GeoIPHub API
# 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 日志;请先在一个繁忙的小时上运行:

GeoIPHub API
# 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 对每一类各做了一次匿名查询,间隔四秒:

GeoIPHub API
curl -s https://api.geoiphub.com/v1/lookup/18.97.14.81
IP机器人类别网络(ASN)关键标记fraud_scorerecommended_actiondetection_methods
18.97.14.81爬虫(类别:archiver)Amazon AMAZON-AES (AS14618)is_hosting: true, crawler.name: CCBot, verified: true0allowdatacenter_ip, rdns_hosting, verified_crawler
216.73.216.10爬虫(类别:ai)Amazon AMAZON-02 (AS16509)is_hosting: true, crawler.name: ClaudeBot, verified: true0allowdatacenter_ip, no_ptr_datacenter, verified_crawler
5.39.1.230爬虫(类别:seo)OVH (AS16276)crawler.name: AhrefsBot, verified: true, is_abusive: true23allowabusive_listed, datacenter_blocklisted, no_ptr_datacenter, verified_crawler
192.178.4.40爬虫(类别:search_engine)Google (AS15169)crawler.name: Googlebot, verified: true0allowdatacenter_ip, no_ptr_datacenter, verified_crawler
45.33.32.156普通云服务器Akamai Connected Cloud, Linode (AS63949)is_hosting: true, crawler.name: none10allowdatacenter_ip
185.220.101.47Tor 出口Stiftung Erneuerbare Freiheit (AS60729)is_tor: true, is_spammer: true100blocktor_exit, datacenter_blocklisted, rdns_tor, known_spammer
185.213.155.73商业 VPN31173 Services AB (AS39351)is_vpn: true, vpn_provider: Mullvad, vpn_confidence: 95100blockknown_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 的响应,做了精简,但保留了真实数值和原有嵌套结构:

GeoIPHub API
{ "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。

  1. 查询 IP。 真实查询返回 ASN 63949,Akamai Connected Cloud (Linode),detection.is_hosting: true,threat.crawler.name: "none",verified: false,fraud_score 为 10,allow,方法为 ["datacenter_ip"]。
  2. 比对声明。 您的代码将 User-Agent 标识与 threat.crawler.verified 和 threat.crawler.name 进行比对。
  3. 决定。 UA 称是 Googlebot;而该 IP 不在任何 Google 范围内。这就是“未验证为 Googlebot”。对其限速或发起挑战。挑战(CAPTCHA 或 JavaScript 检查)是您对 API 的 step_up 处置所采取的行动。不要直接称它为假:在我们的数据中,新的 Google 范围最多可能需要约两天才能通过验证,因为范围文件每天抓取一次,查询数据库每天重建一次。
  4. 对照检查。 真正的 Googlebot 192.178.4.40 返回 verified: true、name: "Googlebot"、verification_method: "ip_range_list",评分为 0。

Google 记录了两种自行完成同样检查的方法:对 IP 做反向 DNS,再对主机名做正向查询;或者与其公布的范围文件(如 common-crawlers.json)进行匹配(Google Search Central)。代码中的比对如下:

GeoIPHub API
// 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,因为这四个都来自托管网络。

  1. 放行经验证的爬虫,条件是 threat.crawler.verified 为 true 且 crawler.name 与 User-Agent 标识相符。然后对每个爬虫应用您自己的策略。对于 AI 爬虫,我们对 GPTBot、OAI-SearchBot 和 ChatGPT-User 的比较说明了如何在拦截训练的同时不退出 AI 搜索。
  2. 复用 IP 规则。 评分区间、Tor 处理和按前缀的速率限制,对抓取工具和对任何机器人的做法一样;总览文章中有说明。把数据中心 IP 当作加权输入,而不是封禁理由,因为托管也涵盖 AI 代理、企业代理和您自己的工具(参见什么是数据中心 IP 地址)。
  3. 对抓取者想要的页面按 ASN 限速。 在同一个托管服务商内轮换的代理池,会低于任何按 IP 的限制,但在列表、搜索和价格页面上按 ASN 的计数器能把它们加总起来。给大型云厂商更高的上限,因为许多互不相关的客户共用一个 ASN。
  4. 限制分页,并把完整列表放在登录之后。 只向匿名访客提供固定数量的列表页。账户墙会把每个抓取工具变成您可以统计并关闭的账户。
  5. 为页面所调用的 JSON 端点设置每个密钥的配额。 抓取工具常常跳过 HTML,直接调用背后的 API,因此请发放密钥或会话令牌,并限制每个密钥的调用次数。
  6. 增加机器人管理或 WAF 层,以获取日志中没有的客户端信号,例如边缘层的 TLS 指纹和 JavaScript 检查。
  7. 对住宅流量使用行为规则,因为 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 团队

GeoIPHub API 背后的团队

由 GeoIPHub 团队撰写,即构建 GeoIPHub IP 情报 API 及其扫描器的团队。草稿在 AI 辅助下完成,并由团队编辑;除非标注为示例,API 示例均为针对线上 API 的真实查询。

分享本文
更多文章

相关 文章