You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Node.js客户端调用安全浏览API时Data属性为空

Google Safer Browsing API调用异常问题

我开发了一个服务,通过官方Node.js客户端调用Google Safer Browsing API查询URL。目前遇到的问题是:除谷歌测试URL(http://malware.testing.google.test/testing/malware/*)外,所有在浏览器或Google透明度报告中标记为恶意的URL,调用该服务时均返回空data对象,HTTP响应码为200,可排除密钥配置错误。我发现很多人遇到过相同问题但未找到解决方案。

服务代码

import { Response } from './interfaces/response';
import { google } from 'googleapis';

export class GoogleSafeBrowsingBaseService {
  protected getReport = async (url: string): Promise<Response> => {
    const safebrowsing = google.safebrowsing({ version: 'v4', auth: process.env.GSB_KEY });

    return safebrowsing.threatMatches
      .find({
        requestBody: {
          client: {
            clientId: process.env.GSB_CLIENT,
            clientVersion: process.env.GSB_VER,
          },
          threatInfo: {
            threatTypes: [
              'MALWARE',
              'SOCIAL_ENGINEERING',
              'UNWANTED_SOFTWARE',
              'POTENTIALLY_HARMFUL_APPLICATION',
            ],
            platformTypes: ['ANY_PLATFORM', 'PLATFORM_TYPE_UNSPECIFIED'],
            threatEntryTypes: ['URL'],
            threatEntries: this.getUrlVariants(url).map((variant) => ({
              url: variant,
            })),
          },
        },
      })
      .then(({ data }) =>
        Object.keys(data).length ? <Response>data : <Response>{ matches: [] },
      );
  };

  private getUrlVariants = (url: string): string[] => {
    const parsedUrl = new URL(url.trim());
    parsedUrl.hash = '';

    if (!parsedUrl.pathname.endsWith('/')) {
      parsedUrl.pathname += '/';
    }

    const results: string[] = [
      `http://${parsedUrl.host}/`,
      `https://${parsedUrl.host}/`,
      `http://${parsedUrl.host}${parsedUrl.pathname}`,
      `https://${parsedUrl.host}${parsedUrl.pathname}`,
    ];

    if (parsedUrl.search) {
      results.push(
        `http://${parsedUrl.host}${parsedUrl.pathname}${parsedUrl.search}`,
        `https://${parsedUrl.host}${parsedUrl.pathname}${parsedUrl.search}`,
      );
    }

    return results;
  };
}

已做的URL处理和配置确认

URL处理(按文档要求)

  • 移除URL片段(如#someanchor)
  • 为路径添加末尾斜杠
  • 去除URL中的空格(控制器已完成此处理)

配置确认

  • 使用的API密钥已正确锁定到服务器IP
  • API密钥已在Google Cloud Console中配置了Google Safer Browsing的访问权限
  • GSB_CLIENT、GSB_VER、GSB_KEY三个环境变量的值均正确无误

测试URL情况(撰写时在Google透明度报告中标记为恶意)

  • http://business.standardcontactverify.com/case/113458020784789:HTTP 200,返回空data对象(预期应返回包含匹配信息的对象)
  • http://malware.testing.google.test/testing/malware/*:谷歌测试URL,HTTP 200,data属性正常填充(符合预期)
  • https://business.verifysecuritypolicy.com/case/113458020784789:HTTP 200,返回空data对象(预期应返回包含匹配信息的对象)

恳请提供解决该问题的相关信息。

内容的提问来源于stack exchange,提问作者Ste TSC

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:07:19