使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function

解决方法:

http://checkurl.phishtank.com/checkurl/  将http换成https即可,就这样简单,就这样坑

PhishTank官方文档地址 https://www.phishtank.com/index.php

简单介绍一下PhishTank,PhishTank是一个检测钓鱼网站的免费api,它运作方式就是,收集世界各地的人提交可疑的钓鱼网站,形成一个钓鱼网站的数据库,来验证其他用户的提交的网站。

集成到实际开发中也容易,官方提供的做法(有坑)https://www.phishtank.com/api_info.php 由于每天访问的次数有限,如果想投入实际产品中,需要注册账号,并获得相应key。

以下就来记录我的心酸填坑之旅:

有一天,从产品那里得到一个链接,说是一个api文档,说产品需要接入这个东西。我按照文档上说的做法进行开发。我先在Postman测试接口,发现接口竟然返回

使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function_第1张图片

意思是,您必须提供URL才能使用此功能。我第一反应是,难道请求的不是这条链接,有特殊的链接,于是我翻遍整个文档就发现了只有一条链接

使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function_第2张图片

而且文档写的也十分简单,没有多余的东西。我就想,这个api用的人应该也不少吧,上谷歌瞧瞧。于是乎google一下,发现仅有一条有用的搜索结果,它提供的解决方式是使用这条链接去请求 https://checkurl.phishtank.com/checkurl/index.php?url=http://www.baidu.com 我试了一下,成功了

使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function_第3张图片

格外惊喜,又一个问题来了,我想得到的是一个json的返回,文档中说了,提供了三种返回方式xml、json和php。但是,我一顿操作返回的都是xml,万般无奈,返回xml就xml,反正我也是可以解析的(说明一下,我在android中接入,用的是java)。到这里,我觉得问题应该是解决了,就是解决的有点麻烦,我使用HttpURLConnection去链接,却发现返回的io流为null,什么我明明用浏览器打开是可以的,我十分不解,我用Fiddler去抓包,发现这个链接原来重定向了

使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function_第4张图片

原来重定向到 https://checkurl.phishtank.com/checkurl/index.phpl?url=http://www.baidu.com (捂脸),知道问题就好了解决了。

之后在查看fiddler其他记录中发现,有关于PhinkTank的所有链接都是http都是重定向成https,一想,难道api中那个请求链接不会也应该是https

果真一试,真的是

使用PhishTank api检测钓鱼网站,提示You must supply a URL to use this function_第5张图片

坑爹啊,气的我连忙来写一篇博客记录这个坑。

 

你可能感兴趣的:(安卓开发日记)