IP 地理定位、邮箱检查与登录风险信号,一个 API 全搞定。
在浏览器中定位网站访问者,从后端查询 IP 地址,识别注册邮箱中的一次性域名和拼写错误,并在登录时标记不可能的出行——全部使用同一个套餐和同一个每月请求额度。卡片预览的是本次页面请求的边缘数据和本地补充信息,并非 API 响应。
request.cf216.73.216.231
- 坐标
- 39.9612, -82.9988
- 时区
- America/New_York
- 邮政编码
- 43215
- 大洲
- NA
- 网络
- Anthropic, PBC
- ASN
- AS16509
- 货币
- $ USD
- 国家电话区号
- +1
- 日出/日落
- 7:49 / 18:42
- 设备
- —
- 安全
- 不可用——未检查
为您的任务选择合适的 API
定位您网站上的访问者
使用限制在您允许来源范围内的公开可用密钥,直接从浏览器调用访问者地理位置 API。利用近似的国家和城市数据、时区及可用的区域上下文信息,为用户提供更贴合的体验建议。
探索访问者地理位置 →从后端查询一个 IP
您的应用中已经有一个 IP 地址了吗?将其发送到 IP 查询端点,从您的服务器发起调用。密钥用于验证请求身份,响应中包含来自第三方 IP 地理定位数据库的位置字段。
探索 IP 查询 API →批量处理 IP 地址列表
在一次批量请求中最多发送 100 个 IP 地址,获得一份有序的查询结果列表,用于报表、数据补充及其他后端工作流。查询用量按 IP 计算,而非按批量请求计算。
探索批量 IP 查询 →在注册时检查邮箱地址
检查语法、已知的一次性域名、域名是否有邮件服务器、可能的拼写错误和角色地址,并获得附带理由的接受、复核或拒绝判定。可使用可公开密钥从表单中调用,也可从后端或控制台每次请求检查最多 100 个地址——或最多 100,000 个地址的列表。
了解邮箱检查 →一次调用为新注册评分
POST /v1/signup/check 将邮箱检查与注册 IP 的国家和网络、取决于套餐的 VPN、Tor 和数据中心指标,以及邮箱域名的注册时长相结合,给出 0–100 的评分和附带理由的判定。评分是您决策的参考,而非滥用的证据。
查看注册防滥用流程 →在登录时标记不可能的出行
POST /v1/risk/check 将登录 IP 的大致位置与该用户上一次存储的位置进行比较,返回距离、间隔时间、推算速度和风险等级。它可能产生误报,也不能证明账户被盗用。
了解不可能出行检测 →浏览器集成示例与边缘预览
该示例展示了如何从浏览器调用 GET /v1/geo。它并未被实际执行以生成此预览。位置信息来自本次页面请求;补充信息在本地推导得出。缺失的值表示不可用,且未运行安全检查。
示例请求——未执行
import { WatchIP } from "@digitload/watch-ip-sdk";
const client = new WatchIP("wip_pub_xxxxxxxx");
const { country, city, timezone, currency, callingCode } = await client.getGeo();页面请求预览——并非 API 响应
{
"ip": "216.73.216.231",
"country": "US",
"region": "Ohio",
"regionCode": "OH",
"city": "Columbus",
"postalCode": "43215",
"latitude": 39.96118,
"longitude": -82.99879,
"continent": "NA",
"timezone": "America/New_York",
"isEUCountry": false,
"asn": 16509,
"asOrganization": "Anthropic, PBC",
"currency": {
"code": "USD",
"name": "US Dollar",
"symbol": "$"
},
"callingCode": "+1",
"compliance": {
"isGDPR": false,
"usPrivacyLaw": null,
"isLGPD": false,
"requiresCookieConsent": false,
"dataResidencyZone": "US",
"isEmbargoedCountry": false
},
"locale": {
"suggestedLocale": "en-US",
"measurementSystem": "imperial",
"firstDayOfWeek": 0,
"dateFormat": "MM/DD/YYYY"
},
"sun": {
"sunrise": "2026-10-23T11:49:40.834Z",
"sunset": "2026-10-23T22:42:44.749Z"
},
"holiday": {
"isPublicHolidayToday": false,
"todayHolidayName": null,
"nextHoliday": {
"date": "2026-11-11",
"name": "Veterans Day"
}
},
"age": {
"ageOfMajority": 18,
"drinkingAge": 21,
"adultContentVerificationRequired": true,
"jurisdictionNote": "HB 96 (2025)"
},
"tax": {
"jurisdictionCode": "US-OH",
"taxSystem": "US_SALES_TAX",
"rate": null
},
"userAgent": {
"browser": null,
"browserVersion": null,
"os": null,
"osVersion": null,
"deviceType": "bot"
}
}访问者与后端地理位置
在访问者的浏览器中使用公开可用密钥调用 GET /v1/geo。在您的后端使用密钥调用 GET /v1/lookup/{ip} 或 POST /v1/lookup 查询提供的 IP。
一个套餐涵盖所有检查
地理定位、IP 查询以及邮箱、注册和不可能出行检查都消耗同一个每月请求额度——每次调用、每个被检查的 IP 或地址计为一次请求。无需另购产品,包括 Free 在内的每个套餐都可以签发两种类型的密钥。
域名级邮箱检查
邮箱检查会查看语法、域名是否为一次性域名及其邮件服务器记录、可能的拼写错误和角色地址。它从不连接邮箱,因此任何结果都不能确认某个地址存在或能够接收邮件。
来源锁定密钥
您的 API 密钥是公开可用的,就像 Stripe 或 Google Maps 的密钥一样。请求仅会响应您注册的来源——CORS 也仅授予这些来源。
边缘地理位置
GET /v1/geo 读取当前连接 IP 的网络级位置数据。IP 位置为近似值;响应时间取决于请求内容及已启用的功能。
区域信息补充
访问者响应会根据位置和请求头推导出货币、国家电话区号、日出日落时间及设备提示信息。当来源数据不可用时,相关字段可能为 null。
区域合规提示
静态的国家与地区映射提供合规提示信息。它们不构成法律义务,也不保证合规性。
为您完成的语言环境协商
每个响应都包含一个 locale 对象:最匹配的 BCP47 语言环境(结合访问者的国家与其浏览器自带的 Accept-Language 请求头得出,因此一位身处加拿大、使用法语的访问者会得到 fr-CA,而非 fr-FR),以及计量单位制、一周的起始日和日期格式——无需在您自己的 i18n 层中重复实现这些逻辑。
公共假日日历
每个响应都包含一个 holiday 对象:今天是否为访问者所在国家的公共假日、假日名称,以及下一个即将到来的假日——适用于“我们今天休息”的客服提示文案、结账提示信息或排期逻辑,覆盖精心整理的约 40 个国家名单。
年龄管辖提示
静态映射根据近似的 IP 位置提供年龄与管辖区域提示信息。它们不验证身份或年龄;请自行确认适用的具体要求。
税务管辖提示
静态映射提供区域税务背景信息。它们并非税务计算,也不能替代持续维护的税务引擎。
SDK 源码包
代码仓库包含 JavaScript/TypeScript、Python、PHP、Go 及 Flutter/Dart 客户端。端点支持范围各有不同;安装前请查阅文档并确认软件包的可用性。
VPN、Tor 与网络信号
符合条件的访问者方案包含基于名单的 VPN、Tor、数据中心、威胁及受制裁网络指标。误判标记为 false 仅表示在可用数据中未找到匹配项,并不代表访问者是安全的。IPv6 覆盖范围有限;IPv6 上的 Tor 未被覆盖。
品牌自定义子域名
Growth 与 Scale 方案在控制台中提供自定义域名设置路径。是否可用取决于账户资格,以及 DNS 与 SSL 配置是否成功;集成时必须使用配置好的基础 URL。
异常位移信号
POST /v1/risk/check 会将提供的 IP 的近似位置与已存储的用户基线进行比较。该功能可能产生误报,也不能证明账户已被盗用。请联系我们以确认可用性及开通情况。
集成之前,先了解响应内容
访问者与查询这两个 API 服务于不同的请求,并返回不同的数据。访问者地理位置使用当前连接请求的边缘地理位置信息,并补充区域上下文;IP 查询则使用第三方 IP 地理定位数据库解析您提供的地址。查询响应并不包含访问者地理位置中所有的补充信息——例如,当前的数据源不提供邮政编码和时区信息。邮箱、注册和风险检查分别处理您发送的输入——一个邮箱地址,或一个用户 ID 和 IP——下表每一行都消耗同一个每月请求额度。
| 您的任务 | 端点 | 密钥 | 数据重点 |
|---|---|---|---|
| 定位当前连接的网站访问者 | GET /v1/geo | 公开可用,限制来源 | 访问者位置及区域上下文信息 |
| 查询单个提供的 IP | GET /v1/lookup/{ip} | Bearer 密钥 | 第三方 IP 地理定位数据库位置查询结果 |
| 查询多个提供的 IP | POST /v1/lookup | Bearer 密钥 | 最多 100 条有序位置查询结果 |
| 在注册表单中检查邮箱地址 | POST /v1/email/validate | 公开可用,限制来源 | 语法、一次性域名、邮件服务器和拼写错误信号,附带判定 |
| 批量检查邮箱地址 | POST /v1/email/batch, /v1/email/jobs | Bearer 密钥 | 每次请求最多 100 个,或每个异步列表任务最多 100,000 个 |
| 为新注册评分 | POST /v1/signup/check | Bearer 密钥 | 基于邮箱、IP 网络和域名注册时长信号的 0–100 评分 |
| 将登录与上一次位置比较 | POST /v1/risk/check | Bearer 密钥 | 距离、推算速度和不可能出行标记 |
常见问题
Watch-IP 能定位我提供的 IP 地址吗?
可以。请使用带有密钥的服务器端 IP 查询 API。浏览器访问者端点定位的是当前连接的客户端,不接受任意指定的 IP 进行查询。
我可以在浏览器的 JavaScript 中使用 Watch-IP 吗?
请使用为您网站来源配置好的公开可用密钥调用访问者地理位置。查询密钥仅应保存在您的后端,绝不应出现在浏览器代码中。
IP 地理位置与浏览器的 Geolocation API 是一回事吗?
不是。Watch-IP 根据 IP 连接估算位置。浏览器的 Geolocation API 是一种独立机制,可请求权限以获取设备提供的位置信息。
我可以查询 IPv4 和 IPv6 地址吗?
查询端点接受有效的 IPv4 和 IPv6 地址,具体取决于数据库中是否存在对应记录。安全信号的覆盖范围是另一个问题,会因指标和 IP 版本而异。
Watch-IP 有免费方案吗?
有。Free 套餐包含每月请求额度以及较小的 IP 查询额度;当前限制请参阅定价页面。邮箱、注册和不可能出行检查消耗同一额度,无需单独套餐。
邮箱检查会确认邮箱是否存在吗?
不会。Watch-IP 检查语法、域名(一次性域名列表、邮件服务器记录、注册时长)以及拼写错误和角色账户等地址模式。它不会连接邮件服务器,因此任何结果都不能确认邮箱存在或能够接收邮件。
邮箱检查和风险检查需要单独的套餐吗?
不需要。每个被检查的地址、每次注册检查或不可能出行检查,都与您的地理定位和查询调用一样,计为同一每月额度中的一次请求。后端端点使用您在控制台中签发的密钥。
安全标记为 false 是否意味着该访问者是安全的?
不是。它只表示所使用的数据中未找到匹配项。覆盖不足、未列入名单的网络以及不可用的信号,都需要单独考量。