一 API申请

申请地址:https://datamarket.azure.com/dataset/bing/search

当然首先要进行登陆,没有账号的话就注册一个,但是需要注意的是“国家/地区”这个地方最好别填中国大陆,填香港,台湾或者其他国家都行。

订阅的时候选择第一个就行,因为一般情况下1个月查询5000次已经够用了

订阅完成后,点击“我的账户”,把“主帐户密钥”给记下来,待会要用

二 使用之前需要了解的简单概念

这里我推荐一个官网提供的调试页面:https://datamarket.azure.com/dataset/explore/bing/search

使用这个API主要需要注意以下几点:

(1)请求URL:https://api.datamarket.azure.com/Bing/Search/v1/Web

(2)几个常用参数:

i)Query 表示需要查询的内容,这里由于我们是要查一个IP上的网站,因此应该是:ip:IPName,比如:Query=’ip:180.97.161.184′

ii)$format=json 表示返回的数据格式是json

iii)$top=100 每页最多显示100条记录

iiii)$skip 表示从第几条记录开始查询,相当于翻页,查询第几页,需要和$top结合起来使用

(3)调用这个API需要使用“主帐户密钥”进行认证

Java中是这样设置的:

private String sAuth = "";  //认证
this.sAuth = "Basic " + Base64.encodeBase64String((":" + AppId).getBytes());  //认证信息
connection.setRequestProperty("Authorization", sAuth);

注:这里进行Base64加密用到了commons-codec-1.9.jar,可以去官网下载,也可以使用我这个

百度云盘链接:http://pan.baidu.com/s/1kUcGPQB

三 测试代码

package whois;import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import org.apache.commons.codec.binary.Base64;public class BingDemo {private String sAuth = "";  //认证private String query = "";  //查询旁站public BingDemo(String AppId,String ip) {this.sAuth = "Basic " + Base64.encodeBase64String((":" + AppId).getBytes());  //认证信息this.query = "Query='ip:" + ip + "'";}public static void main(String[] args) {String AppId = "你的主账户秘钥";  //API KeyBingDemo bingDemo = new BingDemo(AppId, "180.97.161.184");Set<String> set = new LinkedHashSet<String>();set = bingDemo.searchDomainByBing();Iterator<String> iterator = set.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}}/*** 通过必应的接口查询一个IP的旁站(已去重)* * @return LinkedHashSet<String>类型的集合* * */public Set<String> searchDomainByBing(){Set<String> set = new LinkedHashSet<String>();  //查到的域名的有序集合String domains = searchDomains(0);String[] domainsByBing = domains.split(" ");for(String s : domainsByBing){if(!"".equals(s)){set.add(s);}}return set;      }/*** 通过必应的接口查询一个IP的旁站的一页结果* * @param skip 页数标志,每增加100相当于翻一页* * @return 查到的所有结果的字符串合集(未去重)* */public String searchDomains(int skip){String displayUrl = "";  //最后的域名合集try {URL url = new URL("https://api.datamarket.azure.com/Bing/Search/v1/Web?" + query + "&$format=json" + "&$top=100" + "&$skip=" + skip);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setConnectTimeout(10000);  //毫秒connection.setReadTimeout(10000);connection.setRequestProperty("Authorization", sAuth);InputStream inputStream = new BufferedInputStream(connection.getInputStream());BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));String line = "";String reg = "\"DisplayUrl\":\"(([a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+)/?.*?)?\",\"Url\":";        Pattern pattern = Pattern.compile(reg);Matcher matcher;while((line = reader.readLine()) != null){matcher = pattern.matcher(line);while(matcher.find()){displayUrl = displayUrl + matcher.group(2) + " ";
//                  System.out.println(displayUrl); }}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}//说明上一页就已经结束了if("".equals(displayUrl))return displayUrl;//继续查询下一页else{return displayUrl + searchDomains(skip + 100);}}}

四 测试结果

本文转自 pangfc 51CTO博客,原文链接:http://blog.51cto.com/983836259/1726670,如需转载请自行联系原作者

使用必应查询接口开发搜索工具:反查一个IP上的旁站相关推荐

  1. java 反查域名_C段查询雏形之在Java中反查一个IP上的所有域名(旁站查询)

    这里使用了两个接口来反查IP,分别是"站长工具"和"爱站"的接口,两者各有千秋,结合起来查询就较为准确了. 注:我目前只写了个初始版本,还不太完善,但是可以基本 ...

  2. C段查询雏形之在Java中反查一个IP上的所有域名(旁站查询)

    这里使用了两个接口来反查IP,分别是"站长工具"和"爱站"的接口,两者各有千秋,结合起来查询就较为准确了. 注:我目前只写了个初始版本,还不太完善,但是可以基本 ...

  3. 如何查询一个IP上所绑定的域名

    如何查询一个IP上所绑定的域名 2009年6月27日 分类: 网站建设 我们知道,查询域名的IP很容易.通过PING就可以查询这个域名的IP地址,但是如何反过来查询一个IP上有多少个域名呢?其实也很简 ...

  4. 韵达快递 单号查询接口开发

    今天我们来聊如何利用快递鸟提供的接口来查询韵达快递的物流轨迹. 讲解之前我们来看一下,接口完成以后的实际显示效果 以下是产品应用截图,调用快递鸟接口获得的轨迹信息: 实际上快递鸟返回的报文信息会更详细 ...

  5. IP反查网站/IP反查接口 域名汇总

    IP反查网站,ip反查接口,旁站查询接口大全,通过IP查域名汇总,域名历史解析记录查询,IP地址查对应机房名称.地址,查IP地址的AS号码. IP反查网站,ip反查接口,旁站查询接口大全,通过IP查域 ...

  6. 快递查询接口调用 快递鸟Api查物流轨迹

    快递查询API接口 测试调用地址:http://sandboxapi.kdniao.com:8080/kdniaosandbox/gateway/exterfaceInvoke.json 正式调用地址 ...

  7. java快递100接口开发_java swing开发的一个抓取快递100查询接口的小工具

    package com.ccg.util; import java.io.BufferedReader; import java.io.File; import java.io.FileInputSt ...

  8. 快递鸟物流查询接口开发

    defined('EBusinessID') or define('EBusinessID', 'XXXXXXXX'); //电商加密私钥,快递鸟提供,注意保管,不要泄漏 defined('AppKe ...

  9. 工商银行网银查询接口开发问题(HTTPS)

    Certificates does not conform toalgorithm constraints akast:  使用burpsuite 之前要先把 java.security 文件里面的 ...

最新文章

  1. Netflix实用API设计 1:Protobuf FieldMask实践
  2. 开源桌面系统及设计图、下载地址
  3. 空间统计笔记之一(基础知识)
  4. phpcms 添加memcache支持
  5. linux server.xml日志参数,Linux Log4j+Kafka+KafkaLog4jAppender 日志收集
  6. 最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)
  7. 我的世界python写游戏_快来试试Python写的游戏《我的世界》
  8. SSM整理笔记1——SSM网站初步功能设计
  9. 为系统扩展而采取的一些措施——异步
  10. 学术圈炸了!IEEE限制华为相关专家参与审稿:这操作毁尽三观
  11. textarea在IE中和FF下不同的效果
  12. 计算机学业水平考试反思总结8百,考试反思与总结
  13. 冷暖自知!史玉柱:巨人失败时,找一圈朋友借钱被拒,但幸亏如此
  14. Kettle【部署 02】Linux环境 Kettle pdi-ce-9.0.0.0-423 安装部署 carte 服务运行及 Java 集群调用实例(安装包1.85G+测试ktr\kjb\源码)
  15. 概要设计和详细设计模板_超详细的【免试拼】铝模板设计深化配模方案 非筑名铝模板设计...
  16. u-boot 详细介绍
  17. python爬取网易云音乐排行榜歌单热评(完整版)
  18. Java 文字转拼音工具类
  19. 甲级测绘资质审批常见问题-甲级测绘资质如何办理?
  20. SONiC+P4实践——P4Runtime下发ACL表项

热门文章

  1. JAVA8线程池THREADPOOLEXECUTOR底层原理及其源码解析
  2. Easy Save 3
  3. 新概念1 课文和单词(2022/12/21)
  4. sql题一(空位连续座位买票)
  5. Oh My Zsh和Oh My Posh
  6. 面试题:消息队列面试连环炮
  7. 淘宝 美团 评论标签效果
  8. linux中集计和集约的区别,粗放型经济与集约型经济的区别是什么?
  9. echarts实现多个y轴
  10. 17种外链方法助你做好外链