联网获取360数据,识别骚扰电话,java实现

来源:互联网 发布:爱剪辑mac版中文版 编辑:程序博客网 时间:2024/05/16 02:06

由于最近在写一个android端的骚扰电话拦截app,想联网智能识别骚扰电话,所以做了以下的封装。

实现思路:通过jsoup解析好搜的搜索页面,获得结果。

需要注意的是,下面的代码依赖jsoup,请自行下载

直接看demo类:

package HarassingPhone;import HarassingPhone.PhoneNumberJudge.HarassingResultlistener;public class Demo {public static void main(String[] args) {PhoneNumberJudge netJudge=new PhoneNumberJudge();netJudge.judgeNumberFrom360("17092908843", new HarassingResultlistener() {@Overridepublic void onSuccess(boolean isHarassingNumber, String where, String type) {System.out.println(isHarassingNumber+where+type);}});}}

运行返回结果:

true陕西西安  蜗牛移动 骚扰电话

boolean isHarassingNumber,<pre name="code" class="java">true为骚扰电话,false则不是。

 String where, 
表示号码归属地
String type
骚扰电话类型,比如:快递送餐,保险推销等等

具体实现类:

package HarassingPhone;import java.io.IOException;import java.net.URL;import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.HttpsURLConnection;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements;public class PhoneNumberJudge {PhoneNumberJudge(){SSLContext sc = null;try {sc = SSLContext.getInstance("TLS");sc.init(null, new TrustManager[]{new MyTrustManager()}, new SecureRandom());} catch (NoSuchAlgorithmException e1) {e1.printStackTrace();} catch (KeyManagementException e) {e.printStackTrace();}          HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());          HttpsURLConnection.setDefaultHostnameVerifier(new MyHostnameVerifier());  }public interface HarassingResultlistener{void onSuccess(boolean isHarassingNumber,String where,String type);}public void judgeNumberFrom360(String phoneNumber,HarassingResultlistener harassingResultlistener) {new Thread(new Runnable() {@Overridepublic void run() {String reWhere="";String reType="";boolean reIsHarassingNumber=false;try {Document doc=Jsoup.parse(new URL("https://www.so.com/s?q="+phoneNumber), 2000);Elements elements=doc.getElementsByClass("mh-detail");if (!elements.isEmpty()) {reWhere=elements.get(0).child(1).text();reWhere=reWhere.replaceAll("\u00a0", " ");}Elements elements2=doc.getElementsByClass("mohe-ph-mark");if (!elements2.isEmpty()) {reIsHarassingNumber=true;reType=elements2.get(0).text();}harassingResultlistener.onSuccess(reIsHarassingNumber, reWhere, reType);} catch (IOException e) {e.printStackTrace();}}}).start();}private class MyHostnameVerifier implements HostnameVerifier{          @Override          public boolean verify(String hostname, SSLSession session) {                  // TODO Auto-generated method stub                  return true;          }     }     private class MyTrustManager implements X509TrustManager{          @Override          public void checkClientTrusted(X509Certificate[] chain, String authType)                          throws CertificateException {                  // TODO Auto-generated method stub            }          @Override          public void checkServerTrusted(X509Certificate[] chain, String authType)                          throws CertificateException {                  // TODO Auto-generated method stub              }          @Override          public X509Certificate[] getAcceptedIssuers() {                  // TODO Auto-generated method stub                  return null;          }            }     }

构造方法里面的操作是为了进行https的访问,jsoup本身不支持https。

以上为全部,照着demo调用就行了。



0 0
原创粉丝点击