web2all / safebrowsingv4
使用更新API的PHP Google安全浏览客户端
Requires
- php: >=5.3.3
Requires (Dev)
- mikey179/vfsstream: ~1
- phpunit/phpunit: ~4.8
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_IStorage
和 GoogleSafeBrowsing_Updater_IStorage
接口来实现自己的存储后端。
另请参阅
web2all/safebrowsingv4-sqlstorage
https://github.com/web2all/safebrowsingv4-sqlstorage,它是一个基于SQL的存储实现。
许可证
Web2All safebrowsingv4 是开源软件,遵循MIT许可证(https://open-source.org.cn/licenses/MIT)。