如何在.NET中使用Google安全浏览(v4)

时间:2018-04-11 12:57:27

标签: c# .net api google-api safe-browsing

我正在尝试将Googles安全浏览查找API(v4,https://developers.google.com/safe-browsing/v4/lookup-api)与.NET应用程序一起使用,但无法找到示例代码。

我安装了Google的nuget软件包,但在https://github.com/google/google-api-dotnet-client

上找不到关于github repo的示例

我能找到的最好的例子是https://developers.google.com/api-client-library/dotnet/get_started,但即使这样也没有告诉我究竟是什么。我只是想查找URL的状态。以下是我从谷歌找到的唯一例子。

        // Create the service.
        var service = new DiscoveryService(new BaseClientService.Initializer
            {
                ApplicationName = "Discovery Sample",
                ApiKey="[YOUR_API_KEY_HERE]",
            });

        // Run the request.
        Console.WriteLine("Executing a list request...");
        var result = await service.Apis.List().ExecuteAsync();

        // Display the results.
        if (result.Items != null)
        {
            foreach (DirectoryList.ItemsData api in result.Items)
            {
                Console.WriteLine(api.Id + " - " + api.Title);
            }
        }

我还尝试了一个使用

看起来相当简单的包装器https://github.com/acastaner/safebrowsinglookup
 var client = new LookupClient("key", "dotnet-client");
 var response = await client.LookupAsync("http://amazon.com");

但每次都回归“未知”。我确保在Google上注册了一个新密钥,并允许其访问Google安全浏览功能表4。

有关如何使用googles api获取一个或多个网址响应的任何建议吗?

欣赏它!

2 个答案:

答案 0 :(得分:2)

经过反复试验,我终于明白了。

我的原始代码试图使用LookupClient这对我不起作用。我通过查看谷歌如何初始化他们的发现服务找到了解决方案,并从那里建立了FindthreatMatchesRequest()

        var service = new SafebrowsingService(new BaseClientService.Initializer
        {
            ApplicationName = "dotnet-client",
            ApiKey = "API-KEY"
        });

        var request = service.ThreatMatches.Find(new FindThreatMatchesRequest()
        {
            Client = new ClientInfo
            {
                ClientId = "Dotnet-client",
                ClientVersion = "1.5.2"
            },
            ThreatInfo = new ThreatInfo()
            {
                ThreatTypes = new List<string> { "Malware" },
                PlatformTypes = new List<string> { "Windows" },
                ThreatEntryTypes = new List<string> { "URL" },
                ThreatEntries = new List<ThreatEntry>
                {
                    new ThreatEntry
                    {
                        Url = "google.com"
                    }
                }
            }
        });

        var response = await request.ExecuteAsync();

希望这可以帮助任何寻求快速解决方案的人。别忘了添加你的Api Key

答案 1 :(得分:0)

我通过寻找一种将我的应用程序与Google SafeBrowsing集成的解决方案而找到了这个线程。它对我有用,但是我想补充一点,我也添加了一行

return (FindThreatMatchesResponse)response;

在上面发布的代码的末尾,并将其包装在称为方法的

protected async Task<FindThreatMatchesResponse> GoogleCheckAsync()

然后我的按钮单击事件添加了以下内容:

FindThreatMatchesResponse x = await GoogleCheckAsync();
string threatTypes;
if (x.Matches != null)
{
    foreach (ThreatMatch match in x.Matches)
    {
         threatTypes += match.ThreatType + ";";
    }
}

如果您要检查更多可疑站点,则可能还需要用以下代码替换代码的相关部分:

ThreatTypes = new List<string> { "Malware", "Social_Engineering", "Unwanted_Software", "Potentially_Harmful_Application" },
PlatformTypes = new List<string> { "Any_Platform" },