我在我的android代码中使用了安全浏览api v4。我正在使用Asynctask,并使用httpurlconnection请求安全浏览api。响应始终为空。
我也使用测试URL http://malware.testing.google.test/testing/malware/测试了我的连接,然后它也返回空。
class Malicious extends AsyncTask<String, Void, Wrapper> {
private OnTaskCompleted listener;
public Malicious(OnTaskCompleted listener){
this.listener=listener;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
protected Wrapper doInBackground(String... args) {
String postURL = "https://safebrowsing.googleapis.com/v4/threatMatches:find?key=APIKEY";
String requestBody = "{" +
" \"client\": {" +
" \"clientId\": \"twittersentidetector\"," +
" \"clientVersion\": \"1.0\"" +
" }," +
" \"threatInfo\": {" +
" \"threatTypes\": [\"MALWARE\", \"SOCIAL_ENGINEERING\"]," +
" \"platformTypes\": [\"ANY_PLATFORM\"]," +
" \"threatEntryTypes\": [\"URL\"]," +
" \"threatEntries\": [" +
" {\"url\": \"" + args[0] + "\"}," +
" ]" +
" }" +
" }";
URL url;
StringBuffer response = new StringBuffer();
try {
url = new URL(postURL);
} catch (MalformedURLException e) {
throw new IllegalArgumentException("invalid url");
}
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(false);
conn.setDoInput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("User-Agent", USER_AGENT);
conn.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
byte[] b = requestBody.getBytes();
wr.write(b);
wr.flush();
wr.close();
}
// handle the response
int status = conn.getResponseCode();
if (status != 200) {
throw new IOException("Post failed with error code " + status);
} else {
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
}
//Here is your json in string format
String responseJSON = response.toString();
Wrapper w = new Wrapper();
w.responce = responseJSON;
w.url = args[0];
return w;
}
}
@Override
protected void onPostExecute(Wrapper xml) {
if(xml.responce.length()==0){
showtoast("safe");
}
else{
showtoast("not safe");
listener.onTaskCompleted(xml.url);
}
}
}
对于测试URL,它也显示安全。api面板显示已发出请求,我不知道自己在做什么错,我使用的是最新版本的V4 API,但无论使用什么URL,始终证明它是安全的。
答案 0 :(得分:1)
如果URL不在威胁列表中,它将返回空,但是您可以使用这些URL测试代码。
https://testsafebrowsing.appspot.com/s/phishing.html https://testsafebrowsing.appspot.com/s/malware.html https://testsafebrowsing.appspot.com/s/malware_in_iframe.html https://testsafebrowsing.appspot.com/s/unwanted.html https://testsafebrowsing.appspot.com/s/content.exe https://testsafebrowsing.appspot.com/apiv4/IOS/MALWARE/URL/
此网站上还有更多内容(来自https://testsafebrowsing.appspot.com/)
答案 1 :(得分:0)
我设置了这个基本的curl脚本,它只返回空括号{} 围绕共识进行搜索似乎是因为我所查找的站点不是恶意的。只有您提供的示例(http://malware.testing.google.test/testing/malware/)为我带来了结果。我仍然不相信这可以正常工作,但这是脚本。希望能帮助到你。 (用您的api密钥替换API_KEY)
<\?php
$ parameters = array( 'client'=> array('clientId'=>'Evolved Marketing','clientVersion'=>'1.5.2'), 'threatInfo'=> array('threatTypes'=> array('MALWARE','SOCIAL_ENGINEERING'),'platformTypes'=> array('ANY_PLATFORM'),'threatEntryTypes'=> array('URL'),'threatEntries' => array(array('url'=>'http://malware.testing.google.test/testing/malware/')))), );
$ json = json_encode($ parameters);
$ ch = curl_init(); curl_setopt($ ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ ch,CURLOPT_URL,'https://safebrowsing.googleapis.com/v4/threatMatches:find?key=API_KEY');
curl_setopt($ ch,CURLOPT_POST,TRUE);
curl_setopt($ ch,CURLOPT_POSTFIELDS,$ json);
curl_setopt($ ch,CURLOPT_HTTPHEADER,array('Content-type:application / json'));
$ response = curl_exec($ ch);
print_r($ response);