提供一个域名备案查询的 API 4月06日
我们在国内搭建网站就必须会接触到备案,ICP 备案可以说是一个网站的身份证。也是国内主机必须要求域名拥有的许可之一。
同样的,你作为国内的程序员、在写网页程序的某些时候可能也会需要用到备案 API。但是比较麻烦的一个问题就是,工业和信息化部并未提供有查询备案的 API。当然,没有 API 我们也有很多的办法可以做。
我们知道可以通过官方网页来查询:
http://www.miitbeian.gov.cn/icp/publish/query/icpMemoInfo_showPage.action
但是我们的程序不知道,所以我们往往需要写类似与 curl 模拟登陆之类的比较麻烦的办法。
为了解决这个问题,刚刚闲得无聊写了一个 API。
这个 API 的地址是:https://www.zntec.cn/icp-api
使用方法
直接进行请求会返回 JSON 类型的数据,例如请求百度(在地址后面加 ?baidu.com):
{"code":"0","result":{"status":"查询成功","message":"域名已备案"},"record":{"user":"北京百度网讯科技有限公司","name":"百度","type":"企业","license":"京ICP证030173号-1","url":"www.baidu.com","time":"2016-02-25"}}
目前提供的返回值有上面这些,英语不太好、单词乱打的。
处理 JSON 数据旧很简单了,如下附上一个 PHP 调用这个 API 的例子:
<?php $domain="baidu.com"; $api=file_get_contents("https://www.zntec.cn/icp-api?".$domain); $result=json_decode($api,true); header('Content-type:text/html;charset=utf-8'); // print_r($result); echo "域名 ".$domain." 的备案号为:".$result['record']['license'];
运行的结果就是 “域名 baidu.com 的备案号为:京ICP证030173号-1”
由于程序也是偶然想写的,详细的文档也就不说了。
小结
暂时就这些功能,如果有 BUG 的话希望有人可以评论发我。
目前有27条回应
Comment
Trackback
Loading ....
- 本篇文章没有Trackback
楼主您好,我按照您写的方法调用api,但是确返回错误,{"code":"2","result":{"status":"查询失败","message":"未输入域名"}},是您的api参数有修改了吗?非常希望和您交流下如何自己写icp检查的api
这个小工具放弃开发了 ... 太多人输入未BA的域名,我打验证码都打的手软了
我还以为是工信部给接入商的api,差评!
只有 Jybb 这样的有钱人和工信部玩的起 ... 我穷逼一个
我手上木有还有一个免费的私有API,数字准确性还是可以保证在99.5%以上。速度一般都能控制在0.几秒!
可以交流一下如何识别验证码吗?
我现在手打好麻烦啊。
@Tomas: 他那种就是工信部给的api了,不需要验证码
请问您是如何存储验证图片和验证码的对应关系?
我发现getVerifyCode?n 的n和值不对应啊,一刷新就变了。
手打的 ....
查第一次没有,然后我根据 log 手打一次验证码。
然后缓存。
@Tomas: 唔。。我是想知道,您是怎么通过手打,把验证码存储起来,再下一次查询遇到相同图片的时候,知道从缓存中拿出对应的验证码。
就是把图片和验证码通过什么id联系起来的
因为我在访问http://www.miitbeian.gov.cn/getVerifyCode?1的时候每次刷新图片就变了....
不储存验证码,仅仅只是记录一下域名和时间而已。
然后自己根据域名和当时的验证码输入一次缓存就可以了。
@Tomas: 博主您好,我昨天理解您的思路是利用一个相同的验证码,反复提交post请求,就可以实现多次查询。
但今天我试了发现,每一次post请求后,verifyCode都会发生变化。
那请问您的思路是把查询到的结果缓存下来么?如果查询的URL存在于缓存中,就返回结果,如果没有,就记录下来,然后手动查询?
恳请赐教,不甚感谢~
是的,我的思路就是如果没有查询记录的话就把域名记录到数据库,然后我每隔一段时间自己在 miibeian 查询了然后自己复制这些信息写入到数据库。
这样的方法其实不太方便,我现在打算换一个办法、那就是直接去模拟提交 chinaz 的...这个样子的话就可以实现只要在 chinaz 查过我这里就有了。
@Tomas: 原来是这样。我之前也想过通过第三方查,但发现他们的数据不全.....看来直接在官方实现实时查询有点困难了,我也换个思路吧。谢谢博主~
客气了,我也想知道如何自动化识别验证码。
目前想到的一个解决方案是腾讯的 OCR 识别,不知道靠不靠谱。
@Tomas: 嗯,,,其实可以上打码平台的,但是那样就要花点钱了
好奇的是用了什么方案解决验证码问题。
手打 。。。。。。。。。。。。。。。。。查不出来的我隔一段时间会手打一下,然后保存好。
目前想不出什么好的办法来做这个,因为 API 的话不好返回验证码给调用 API 的人。
@Tomas: 看新评论要Ctrl+F5,cache-control:max-age=10800的问题?
不知道啊 。。。。。我在 upyun 设置了 3 小时缓存 。。。。你 ctrl+f5 就可以看到好奇怪 。。。。
@Tomas: 那个缓存控制是client cache
可以可以 。有用
前排围观
路過膜拜沙雕狗
傻狗 JY 姐姐
@Tomas: 姐姐是你叫的吗?
@Zhensheng: 你吃醋了吗?hhhhhhh