web2all/safebrowsingv4

使用更新API的PHP Google安全浏览客户端

1.0.0 2017-12-21 10:47 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:21:00 UTC


README

这是一个用PHP编写的Google安全浏览客户端(更新API V4)。更多信息请参阅Google文档 https://developers.google.com/safe-browsing/v4/update-api

简而言之,更新API通过更新API v4协议跟踪本地数据库中的哈希值。任何URL都将与本地数据库进行比对。当找到可能的匹配项时,将从Google服务检索更多哈希值。

检查的URL 永远不会 发送到Google,只会提交一个哈希值到Google。这是与Lookup API v4相比的一个重大优势。另一个优势是网络流量更少,因为初始检查是在本地哈希前缀数据库上进行的,大部分检查不需要往返Google服务。

与Lookup服务相比,Update服务的缺点是需要本地缓存/数据存储,并且客户端必须定期更新它。因此,客户端必须作为守护进程(或计划任务)运行,以保持本地数据库的最新状态。

web2all/safebrowsingv4 已不再积极维护。

本包包含什么

本包包含Google安全浏览更新API V4协议的实现。但它只包含本地存储的参考实现(用于存储哈希前缀数据库)。

这个参考实现是文件基础的,只是一个示例,不适合生产使用。

关于本安全浏览客户端的MySQL存储后端实现示例,请参阅 web2all/safebrowsingv4-sqlstorage 包。

用法

使用Composer安装(例如,composer create-project web2all/safebrowsingv4)。

前往Google并请求新的API密钥,请参阅 https://developers.google.com/safe-browsing/v4/get-started

运行测试:vendor/bin/phpunit tests

要使用示例文件存储后端测试安全浏览客户端,创建一个示例PHP脚本

ini_set ( "memory_limit", "712M");
require_once('vendor/autoload.php');

$storage = new GoogleSafeBrowsing_Example_FileStorage('/writeable/dir/storage/');
$updater = new GoogleSafeBrowsing_Updater('YOUR-GOOGLE-KEY', $storage);

$current_lists=$updater->getLists();
$changed=false;

$ensure_lists='MALWARE/ANY_PLATFORM/URL,SOCIAL_ENGINEERING/ANY_PLATFORM/URL,UNWANTED_SOFTWARE/ANY_PLATFORM/URL,POTENTIALLY_HARMFUL_APPLICATION/ANDROID/URL,POTENTIALLY_HARMFUL_APPLICATION/IOS/URL';

foreach(explode(',',$ensure_lists) as $list){
  if(!isset($current_lists[$list])){
    $current_lists[$list]='';
    echo "add list $list\n";
    $changed=true;
  }
}
if($changed){
  $updater->setLists($current_lists);
}

$updater->run();

上述脚本将在 '/writeable/dir/storage/' 中创建一个本地哈希前缀数据库,并保持其最新状态。您可能希望将其在后台运行。首次运行将需要下载所有前缀。它也非常占用内存,首次运行或当所有列表重置时可能需要600MB。

一旦上述脚本运行,您可以进行如下查找

require_once('vendor/autoload.php');
$storage = new GoogleSafeBrowsing_Example_FileStorage('/writeable/dir/storage/');
$api=new GoogleSafeBrowsing_API('YOUR-GOOGLE-KEY');

$lookup=new GoogleSafeBrowsing_Lookup($api, $storage);

if(isset($argv[1])){
  $url=$argv[1];
}else{
  die('no url given');
}

echo "Looking up: $url\n";
$lists=$lookup->lookup($url);
if(!$lists){
  echo "NOT LISTED\n";
}else{
  echo implode(',',$lists)."\n";
}

警告

不要在生产中使用包含的FileStorage示例存储后端!它效率不高,它只是一个实现示例。如果必须使用,请使用 web2all/safebrowsingv4-sqlstorage,它可以与MySQL一起使用。或者通过实现 GoogleSafeBrowsing_Lookup_IStorageGoogleSafeBrowsing_Updater_IStorage 接口来实现自己的存储后端。

另请参阅

许可证

Web2All safebrowsingv4 是开源软件,遵循MIT许可证(https://open-source.org.cn/licenses/MIT)。